현재 선택한 빅데이터 분석 과정

빅데이터분석기사 필기 이론 학습

이론 목록으로 돌아가기

학습·검증·테스트 데이터 분할

일반화 성능을 지키는 훈련·검증·테스트 분할 원칙을 익힌다.

예상 읽기 12

핵심 요약

데이터 분할은 단순히 행을 일정 비율로 나누는 작업이 아니다. 운영에서 아직 보지 않은 대상을 만났을 때의 성능을 공정하게 추정하기 위한 평가 설계다. 먼저 새 행, 새 고객, 미래 시점, 새 지역 중 무엇에 일반화하려는지 정하고 그 단위를 분할한다.

훈련 범위에서는 전처리와 모수를 학습하고, 검증 범위 또는 안쪽 교차검증에서는 변수·하이퍼파라미터·임곗값을 선택한다. 테스트 데이터나 중첩 교차검증의 바깥 폴드는 이 선택 절차 전체를 평가한다. 테스트 결과를 보고 선택을 바꾸면 그 데이터는 더 이상 독립 테스트가 아니다.

학습 목표

  • 훈련·검증·테스트 데이터의 역할과 선택 후 재적합 절차를 설명한다.
  • 무작위·층화·그룹·시간·공간 분할의 적용 조건을 구분한다.
  • 전처리, 중복, 목표·시간 정보와 재표본추출에서 발생하는 누수를 판정한다.
  • 일반 교차검증과 중첩 교차검증의 평가 역할을 구분한다.
  • 운영의 일반화 대상과 라벨 관측기간을 반영해 분할을 설계한다.

0. 먼저 정할 것: 무엇에 일반화하는가

같은 데이터라도 평가 질문에 따라 분할 단위가 달라진다.

  • 새 행: 독립이고 같은 분포에서 생성된 새 관측치에 대한 성능
  • 새 개체·그룹: 훈련에서 보지 않은 고객·환자·장비·학교에 대한 성능
  • 미래 시점: 과거로 학습해 이후 기간을 예측하는 성능
  • 새 지역: 인접 지역의 유사성을 배제한 공간적 일반화 성능
  • 복합 대상: 미래에 등장하는 새 고객처럼 시간과 그룹 제약을 동시에 만족하는 성능

표본 수는 행 수만 세지 말고 사실상 독립적인 그룹 수, 시점 수와 희귀 사건 수를 함께 본다. 동일 고객의 수백 행은 새로운 고객 수백 명과 같은 독립 정보를 제공하지 않는다.

1. 훈련·검증·테스트의 역할

데이터 범위주된 역할허용되는 작업금지·주의 작업
훈련변환과 모수 학습대치·스케일링 적합, 변수 생성 규칙 학습, 모형 적합검증·테스트 분포를 보고 기준을 바꾸지 않음
검증·안쪽 폴드후보 선택변수 집합, 하이퍼파라미터, 임곗값·보정 방법 비교최종 일반화 성능처럼 단정하지 않음
테스트·바깥 폴드선택 절차 평가잠긴 파이프라인의 성능과 불확실성 측정후보·전처리·임곗값을 다시 선택하지 않음

변수 생성도 두 종류로 나눈다. 예측 시점에 이용 가능한 값으로 사전에 고정한 행 단위 계산은 같은 규칙을 모든 세트에 적용할 수 있다. 반면 빈도, 평균, 목표 인코딩, 변수 선택처럼 데이터에서 값을 학습하는 변환은 훈련 범위에서만 적합한다.

1.1 선택 후 재적합

단순 홀드아웃에서는 다음 순서를 사용한다.

  1. 테스트 데이터를 먼저 격리한다.
  2. 남은 훈련·검증 범위에서 전처리, 변수, 후보, 하이퍼파라미터와 임곗값을 선택한다.
  3. 선택 규칙을 잠근다.
  4. 필요하면 잠긴 규칙으로 훈련+검증 데이터에 전처리와 모형을 다시 적합한다.
  5. 테스트 데이터를 한 번 평가한다.

재적합은 테스트 결과를 보기 전에 정한 절차여야 한다. 테스트 결과가 기대보다 낮다는 이유로 변수를 추가하거나 임곗값을 바꾸면 테스트가 선택 과정에 편입된다. 이 경우 결과를 탐색적 평가로 낮추거나 새로운 독립 평가 자료를 확보해야 한다.

2. 분할 방법 선택

분할 방법보존하는 구조적합한 상황한계·주의점
무작위전체 분포의 무작위 표본관측치가 독립·교환 가능하고 운영 분포가 유사중복·그룹·시간·공간 의존성을 해결하지 못함
층화클래스·주요 범주의 비율희귀 클래스가 각 세트·폴드에 필요비율만 보존하며 그룹·시간 누수를 막지 못함
그룹동일 개체의 경계새 고객·환자·장비 일반화그룹 수가 적으면 점수 변동이 큼
시간과거→미래 순서예측·정책 변화·드리프트가 있는 운영미래 분포를 억지로 층화하면 현실성이 깨질 수 있음
공간 블록인접 지역의 분리새 지역에 대한 공간적 일반화블록 정의에 따라 표본 수와 난이도가 크게 달라짐

여러 조건이 동시에 존재하면 일반화 목표를 직접 지키는 구조 제약을 먼저 적용하고 그 안에서 가능한 범위로 클래스 비율을 맞춘다. 예를 들어 미래 예측이 목표라면 시간 순서를 먼저 지키고, 미래 분포를 과거와 같게 만들기 위해 무리하게 층화하지 않는다.

2.1 그룹과 시간의 결합

  • 미래의 기존 고객을 예측한다면 같은 고객이 과거 훈련과 미래 평가에 존재할 수 있으나, 각 행의 특징은 해당 기준 시점 이전 정보로만 만든다.
  • 새 고객을 예측한다면 고객 그룹 전체를 분리한다.
  • 미래의 새 고객을 예측한다면 평가 기간을 뒤로 두고 평가 고객도 훈련에서 제외한다.

세 목적은 서로 다른 성능 질문이다. 같은 환자는 어떤 세트에도 겹치면 안 된다 또는 시간 분할이면 그룹을 무시해도 된다처럼 일률적으로 정하지 않는다.

3. 시간 분할과 라벨 관측기간

시간 분할에서는 행의 기준 시점뿐 아니라 특징 관측 종료일과 라벨 관측 종료일을 확인한다. 예를 들어 기준일 이후 90일 내 재입원을 목표로 할 때, 훈련 행의 90일 라벨 창이 검증 시작일 뒤까지 이어지면 분할 경계 이후 정보로 훈련 라벨이 확정될 수 있다.

대응 방법은 다음과 같다.

  • 검증 시작 전에 라벨 관측기간이 끝난 훈련 행만 사용한다.
  • 예측기간·정보 지연을 반영한 간격(gap) 또는 제거 구간을 둔다.
  • 같은 사건에서 파생된 중복·겹치는 창이 양쪽 세트에 들어가지 않게 한다.
  • 확장 창 또는 이동 창 방식으로 실제 재학습 정책을 모사한다.

확장 창은 시간이 갈수록 훈련 자료를 누적하고, 이동 창은 최근 일정 기간만 사용한다. 오래된 자료를 계속 쓸지 여부는 드리프트와 운영 재학습 정책에 맞춘다.

4. 교차검증의 올바른 사용

평가 설계선택에 쓰는 범위성능 평가 범위적합한 목적
훈련·검증·테스트 홀드아웃검증 세트격리 테스트 세트데이터가 충분하고 명확한 최종 평가가 필요할 때
일반 k-겹 교차검증k개 검증 폴드 점수로 후보 선택별도 테스트가 있으면 그곳에서 최종 평가훈련 범위의 효율적 후보 비교
중첩 교차검증각 바깥 훈련 범위의 안쪽 CV선택에 쓰지 않은 바깥 폴드데이터가 적고 선택 절차 전체를 재표본 평가할 때
반복 교차검증반복 폴드에서 후보 비교별도 테스트 또는 바깥 반복 구조분할 우연성과 변동 확인

일반 k-겹 교차검증에서 가장 높은 평균 점수를 보고 후보를 고르면 그 점수는 선택에 사용된 값이다. 따라서 격리 테스트나 중첩 교차검증의 바깥 폴드로 선택 절차를 평가한다. 교차검증은 언제나 별도 테스트가 필요하다고 단정할 수는 없다. 중첩 교차검증의 바깥 폴드는 각 반복에서 안쪽 선택과 분리된 평가 역할을 한다.

층화 k-겹은 클래스 비율을, 그룹 k-겹은 그룹 경계를 보존한다. 시간 데이터는 미래 폴드로 학습해 과거를 검증하지 않고, 과거 훈련 창 뒤의 검증 창으로 진행한다. 모든 방식에서 전처리·변수 선택·재표본추출은 각 훈련 폴드 안에 포함한다.

4.1 교차검증 평균과 변동

폴드별 점수를 (m_1,\ldots,m_k)라 하면 평균과 표본표준편차는 다음과 같다.

[ \bar{m}=\frac{1}{k}\sum_{j=1}^{k}m_j,\qquad s=\sqrt{\frac{1}{k-1}\sum_{j=1}^{k}(m_j-\bar{m})^2} ]

단, 평균은 (k\ge1), 표본표준편차는 (k\ge2)에서 정의한다. 다섯 점수가 0.78, 0.80, 0.81, 0.79, 0.82이면 평균은 0.80이고, 편차 제곱합은 0.001이므로 (s=\sqrt{0.001/4}\approx0.0158)이다. 모든 점수가 같으면 (s=0)이고, (k=1)이면 표본표준편차는 계산할 수 없다.

폴드 점수는 훈련 자료가 겹치므로 완전히 독립인 반복 표본은 아니다. 표준편차는 분할 민감도를 보는 기술통계로 해석하고, 단순히 (s/\sqrt{k})를 독립 표본의 표준오차처럼 적용하지 않는다.

5. 테스트 크기와 불확실성

분할 비율은 고정된 7:3 또는 8:2 규칙이 아니다. 필요한 훈련량, 독립 그룹 수, 미래 기간 길이, 희귀 사건 수, 탐색 규모와 평가 오차를 함께 고려한다.

독립적인 이진 결과에서 고정된 파이프라인의 테스트 정확도를 (\hat{p}), 테스트 표본 수를 (n_{test})라 할 때 근사 표준오차는 다음과 같다.

[ SE(\hat{p})\approx\sqrt{\frac{\hat{p}(1-\hat{p})}{n_{test}}} ]

예를 들어 (\hat{p}=0.80), (n_{test}=400)이면 √(0.8×0.2/400)=0.02, 즉 약 2%p다. 이는 관측치가 독립이고 표본이 충분하며 파이프라인이 테스트 전에 고정됐다는 조건의 근사다. 그룹·시간 의존성이 있으면 유효 표본 수가 더 작을 수 있다. (\hat{p}=0) 또는 1에서 대입값이 0이 되더라도 작은 표본의 불확실성이 사라지는 것은 아니므로 이항 신뢰구간 등 적절한 구간 추정을 사용한다.

6. 데이터 누수의 유형

6.1 변환 누수

다음 작업은 각 훈련 범위에서만 적합한다.

  • 결측 대치의 평균·중앙값과 이상값 경계
  • 표준화의 평균·표준편차
  • 변수 선택, 차원 축소와 빈도 기준 범주 통합
  • 목표 인코딩과 확률 보정
  • 과대표집·과소표집·SMOTE

비지도 변환도 검증·테스트 분포에서 값을 학습하면 누수다. 단, 자료형 확인이나 사전에 고정된 단위 변환처럼 데이터 분포를 학습하지 않는 결정적 변환은 동일 규칙을 적용할 수 있다.

6.2 개체·중복 누수

같은 고객·환자·장비, 원본이 같은 복제 문서, 연속 촬영 이미지나 겹치는 시간 창이 여러 세트에 나뉘면 모형이 개체 특성을 기억해 성능을 부풀릴 수 있다. 분할 전에 중복·근접중복과 파생 관계를 식별하고 일반화 단위로 묶는다.

6.3 목표·시간 누수

예측 시점 이후에 생성되는 해지 처리일, 치료 결과, 미래 집계나 전체 기간 통계를 입력하면 목표 또는 미래 정보가 유입된다. 모든 특징에 언제 이용 가능했는가를 기록하고 기준 시점에서 잘라야 한다.

6.4 선택 누수

테스트 점수를 반복 확인하며 후보, 변수, 임곗값, 결측 처리 또는 보고 지표를 바꾸면 테스트에 과적합한다. 테스트 라벨 접근을 제한하고 선택 로그를 남긴다.

7. 분할·선택·평가 절차

MERMAID코드 영역 안에서 좌우로 이동할 수 있습니다.
flowchart TD
  A["일반화 대상·예측 시점 정의"] --> B["테스트 또는 바깥 폴드 격리"]
  B --> C["훈련 범위의 안쪽 분할"]
  C --> D["전처리·후보·임곗값 선택"]
  D --> E["선택 규칙 잠금·재적합"]
  E --> F["독립 최종 평가"]

각 단계에서 데이터 스냅숏, 행·그룹 식별자, 시간 경계, 난수 시드, 폴드 배정과 라벨 성숙 조건을 기록한다. 같은 원본으로 다시 실행했을 때 동일 분할을 재현할 수 있어야 한다.

8. 사례 적용: 90일 재입원 예측

상황: 병원이 환자 방문 기록으로 기준일 이후 90일 내 재입원을 예측한다. 환자 한 명이 여러 번 방문하고 기록은 5년에 걸쳐 있다.

일반화 목표 A — 기존 환자의 미래 방문: 과거 기간을 훈련, 이후 기간을 검증·테스트로 둔다. 같은 환자가 기간을 넘어 존재할 수 있지만 각 행은 해당 기준일까지의 정보만 사용한다. 검증 시작 전 90일 라벨 창이 끝나도록 간격을 두고 겹치는 방문 창을 점검한다.

일반화 목표 B — 새 환자의 미래 방문: 평가 기간을 뒤로 두고 평가 환자 전체를 훈련에서 제외한다. 시간과 환자 그룹 경계를 동시에 지키므로 표본이 줄 수 있지만 새 환자에 대한 질문과 일치한다.

훈련 절차: 각 안쪽 훈련 폴드에서 코드 빈도, 결측 대치, 스케일링, 변수 선택과 재표본추출을 적합한다. 검증으로 후보와 임곗값을 정한 뒤 규칙을 잠그고, 격리된 마지막 기간 또는 중첩 CV의 바깥 폴드에서 평가한다.

결론: 환자 그룹 분할시간 분할 중 하나를 기계적으로 고르지 말고, 기존 환자의 미래와 새 환자의 미래 중 실제 운영 질문을 먼저 정한다.

전체 데이터를 학습 60퍼센트, 검증 20퍼센트, 잠긴 테스트 20퍼센트로 나누고 역할을 표시한 분할도
전체 데이터를 학습 60퍼센트, 검증 20퍼센트, 잠긴 테스트 20퍼센트로 나누고 역할을 표시한 분할도
n_train+n_validation+n_test=n

분할 비율은 예시지만 역할은 바뀌지 않는다. 학습은 적합, 검증은 선택, 테스트는 선택이 모두 끝난 뒤 일반화 성능을 한 번 확인하는 데 쓴다.

같은 고객 행은 한 분할에 묶고 시간 자료는 과거로 학습해 미래를 검증하는 두 분할 원칙 비교
같은 고객 행은 한 분할에 묶고 시간 자료는 과거로 학습해 미래를 검증하는 두 분할 원칙 비교
자료 의존성잘못된 분할올바른 방향
동일 고객 반복행행 단위 무작위고객 단위 그룹 분할
시간 순서미래·과거 혼합과거 학습 → 미래 검증
전처리전체 자료로 평균·어휘 적합학습 폴드 안에서만 적합

시험에서 누수는 목표값 자체뿐 아니라 미래 정보, 같은 개체의 반복행, 전체 자료로 적합한 전처리에서도 생긴다.

시험 판단 포인트

  • 훈련은 적합, 검증·안쪽 CV는 선택, 테스트·바깥 폴드는 선택 절차 평가에 사용한다.
  • 선택 규칙을 잠근 뒤 훈련+검증 범위에 재적합할 수 있지만 테스트 결과로 규칙을 바꾸면 안 된다.
  • 층화는 비율, 그룹 분할은 개체 경계, 시간 분할은 과거→미래 순서를 보존한다.
  • 여러 제약이 있으면 일반화 목표를 직접 지키는 구조를 먼저 적용한다.
  • 시간 분할은 특징 시점뿐 아니라 라벨 관측기간과 겹치는 창도 확인한다.
  • 전처리·변수 선택·목표 인코딩·재표본추출은 각 훈련 폴드 안에서 수행한다.
  • 일반 k-겹 CV의 선택 점수와 중첩 CV 바깥 폴드의 평가 점수를 구분한다.

자주 틀리는 부분

  • 고정된 분할 비율을 모든 데이터에 적용하는 규칙으로 보지 않는다.
  • 층화가 고객 중복, 시간 순서나 공간 의존성까지 해결한다고 보지 않는다.
  • 비지도 PCA·표준화는 목표를 안 쓰므로 누수가 아니라고 판단하지 않는다.
  • SMOTE를 전체 데이터에 적용한 뒤 분할하지 않는다.
  • 시간 분할에서 기준일만 보고 라벨 관측 종료일과 겹치는 창을 무시하지 않는다.
  • 일반 교차검증과 중첩 교차검증의 평가 역할을 같게 보지 않는다.
  • 테스트 성능에 맞춰 바꾼 결과를 독립적인 최종 성능이라고 부르지 않는다.
스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01여러 하이퍼파라미터를 일반 k-겹 교차검증으로 비교한 뒤 선택 절차의 성능을 평가하는 방법을 서술하시오.
정답 및 해설

격리 테스트를 사용하거나 중첩 교차검증의 바깥 폴드에서 평가한다.

일반 k-겹 점수로 후보를 선택했다면 같은 점수는 선택에 사용됐다. 격리 테스트 또는 중첩 교차검증의 바깥 폴드처럼 안쪽 선택과 분리된 범위에서 절차 전체를 평가한다.

02다섯 교차검증 점수가 0.78, 0.80, 0.81, 0.79, 0.82일 때 평균은?
정답 및 해설

0.80

다섯 점수의 합은 4.00이고 4.00 ÷ 5 = 0.80이다.

03미래에 처음 방문하는 새 환자의 90일 재입원을 평가하려 한다. 적절한 설계를 서술하시오.
정답 및 해설

평가 기간을 뒤로 두고 평가 환자 전체를 훈련에서 제외하며 라벨 관측기간도 확인한다.

미래의 새 환자가 일반화 대상이므로 시간 순서와 환자 그룹 경계를 함께 지키고, 90일 라벨 창이 분할 경계를 침범하지 않는지 확인해야 한다.

04표준화와 SMOTE를 포함한 교차검증 절차를 올바르게 제시하시오.
정답 및 해설

각 훈련 폴드에서 표준화 기준을 학습하고 SMOTE를 적용한 뒤 해당 검증 폴드를 평가한다.

표준화 통계량과 합성 표본은 각 훈련 폴드에서만 만들어야 검증 폴드의 분포와 사례가 훈련 과정에 유입되지 않는다.