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

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

이론 목록으로 돌아가기

교차검증과 일반화 성능

교차검증으로 일반화 성능과 분할별 변동을 함께 평가한다.

예상 읽기 14

핵심 요약

교차검증은 제한된 데이터를 여러 훈련·검증 분할로 반복 평가해 아직 보지 못한 데이터에서의 일반화 성능을 추정하는 절차다. 표준 k-겹 교차검증에서는 데이터를 겹치지 않는 k개 폴드로 나누고, 각 폴드를 한 번씩 검증에 사용해 k개의 점수를 얻는다. 평균뿐 아니라 표준편차·최솟값·폴드 구성과 실패 구간을 함께 해석해야 한다.

좋은 교차검증은 횟수가 많은 검증이 아니라 실제 적용 상황을 재현하는 검증이다. 같은 고객·환자·장비의 행은 그룹으로 묶고, 미래 예측은 과거로 학습해 이후 기간을 검증한다. 결측값 대치·표준화·변수 선택·재표본화·확률 보정·임곗값 선택도 각 훈련 폴드 안에서 학습해야 한다. 하이퍼파라미터 선택과 성능 추정을 같은 폴드에 맡기면 낙관적 편향이 생기므로 별도 테스트 세트나 중첩 교차검증으로 분리한다.

학습 목표

  • 훈련·검증·테스트 데이터의 역할을 구분한다.
  • k-겹 교차검증의 분할·학습·평가·집계 절차를 설명한다.
  • 층화·그룹·층화그룹·시계열·반복 교차검증의 적용 조건을 판정한다.
  • 전처리·변수 선택·재표본화·조기종료에서 발생하는 누수를 찾는다.
  • 하이퍼파라미터 선택과 일반화 성능 추정을 중첩 교차검증으로 분리한다.
  • 폴드 평균·표준편차와 불균등 폴드 집계의 의미를 계산한다.
  • 클래스 부재·그룹 부족·시간 겹침 같은 경계 상황에 대응한다.

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

구분사용 목적허용되는 결정금지 사항
훈련 데이터모형과 데이터 기반 규칙 학습계수·분할 규칙·대치값·스케일 등 적합검증·테스트 정보로 규칙 학습
검증 데이터모형·하이퍼파라미터·임곗값 선택후보 비교와 선택선택에 쓴 점수를 최종 성능으로 단정
테스트 데이터선택이 끝난 절차의 최종 평가원칙적으로 마지막 1회 평가반복 탐색·특징 선택·임곗값 조정

교차검증의 각 반복에서는 훈련 폴드와 검증 폴드가 이 역할을 맡는다. 별도 테스트 세트가 충분하면 테스트는 처음에 떼어 두고, 나머지 훈련 영역 안에서만 교차검증과 선택을 수행한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
전체 데이터
├─ 개발 영역: 교차검증으로 학습·선택
└─ 최종 테스트: 선택 완료 후 한 번 평가

테스트 결과를 본 뒤 모형·특징·임곗값을 바꾸면 그 테스트 세트도 사실상 검증 데이터가 된다. 이후의 공정한 최종 평가는 새로운 독립 데이터가 필요하다.

2. 표준 k-겹 교차검증

데이터를 서로 겹치지 않는 k개 폴드로 나눈다. 각 반복에서 한 폴드를 검증에, 나머지 k-1개를 훈련에 사용한다.

반복훈련 폴드검증 폴드
12·3·4·51
21·3·4·52
31·2·4·53
41·2·3·54
51·2·3·45
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
표준 k-겹에서 각 관측치
= 검증 1회 + 훈련 (k-1)회

각 반복의 훈련 비율 = (k-1)/k
각 반복의 검증 비율 = 1/k

5겹이면 각 반복에서 약 80%로 학습하고 20%로 검증한다. k가 커지면 각 반복의 훈련 자료는 많아지지만 적합 횟수와 계산량도 증가하고 검증 폴드가 작아진다. 편향과 분산은 데이터·모형·지표에 따라 달라지므로 “k가 클수록 항상 더 정확하다”라고 단정하지 않는다. 흔히 5겹이나 10겹을 쓰되 독립 그룹 수, 클래스 수, 시간 구조와 계산 비용을 우선한다.

반복 k-겹은 다른 무작위 분할로 k-겹을 R번 반복해 k×R개 점수를 얻는다. 각 관측치는 검증에 R번 등장하지만 새로운 독립 표본이 생긴 것은 아니며 점수들도 서로 독립이 아니다.

3. 분할 방식 선택

방식보존하는 구조적합한 상황핵심 주의점
일반 k-겹교환 가능한 독립 관측독립 표본의 회귀·균형 분류정렬된 데이터를 그대로 나누지 않도록 분할 규칙 확인
층화 k-겹폴드별 클래스 비율희소 클래스 분류그룹·시간 누수를 해결하지는 않음
그룹 k-겹같은 그룹의 폴드 간 분리고객·환자·장비 반복 측정고유 그룹 수가 k 이상이어야 함
층화그룹 k-겹그룹 분리와 클래스 비율반복 측정이 있는 불균형 분류두 제약을 동시에 만족하지 못할 수 있음
시계열 검증훈련이 검증보다 과거수요·가격·장애·이탈의 미래 예측시간 간격·예측 시점·특징 가용성 확인
반복 k-겹여러 무작위 분할분할 민감도 확인독립 표본 수 증가로 해석하지 않음

층화는 각 폴드의 클래스 비율을 비슷하게 만들어 지표 계산을 안정화하는 실무적 장치다. 모집단 대표성, 집단 독립성이나 시간 인과성을 보장하지 않는다. 그룹과 시간 조건이 함께 있으면 일반 그룹 k-겹과 일반 시계열 분할 중 하나만 고르는 것이 아니라, 예측 시점보다 과거의 환자만 학습하고 같은 환자가 양쪽에 겹치지 않도록 사용자 정의 분할이 필요할 수 있다.

LOOCV는 n개 관측치 중 하나씩 검증하는 n-겹 방식이다. 거의 전체 자료로 학습하지만 n번 적합해야 하고 각 검증 폴드가 한 관측치라 분류 AUC처럼 양성과 음성이 모두 필요한 지표는 폴드별로 정의되지 않는다. LOOCV가 항상 가장 정확하거나 가장 안정적인 방법은 아니다.

4. 시계열 검증과 시간 누수

미래를 예측할 때 무작위 분할은 미래 정보를 과거 학습에 섞을 수 있다. 다음 두 방식 중 운영에서 실제로 사용할 학습 이력 길이에 맞는 방식을 선택한다.

방식훈련 구간다음 검증 구간적합한 상황
확장 창시간이 갈수록 누적바로 다음 기간과거 전체를 계속 학습에 사용
이동 창최근 일정 길이만 유지바로 다음 기간오래된 패턴의 영향 제한
CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
확장 창: [훈련 1] → [검증 1]
         [훈련 1+2] → [검증 2]

이동 창: [최근 훈련 1] → [검증 1]
                 [최근 훈련 2] → [검증 2]

예측 시점과 라벨 확정 시점 사이가 겹치거나, 이동평균·누적합·라벨 관측 기간이 훈련과 검증 경계를 넘으면 경계에 간격(gap)을 둔다. 예를 들어 7일 후 결과를 예측하는데 훈련 라벨이 검증 시작일 이후에 확정된다면 그 훈련 행은 실제 예측 시점에 사용할 수 없다. “시간순으로 나눴다”는 사실만으로 누수가 자동으로 제거되지는 않는다.

검증 구간 길이가 다르면 같은 평균 점수를 직접 비교하기 어렵다. 운영에서 중요한 주기와 예측 지평을 고정하고, 계절·프로모션·정책 변경 구간을 폴드별로 따로 보고한다.

5. 전처리와 학습 절차의 누수 방지

표준화 평균·분산, 결측값 대치값, 범주 사전, 변수 선택, 차원 축소, 재표본화와 임곗값은 모두 데이터에서 학습한 규칙이다. 각 반복 안에서 다음 순서를 지킨다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
1. 훈련 폴드에서 전처리·특징 선택 규칙 학습
2. 훈련 폴드만 재표본화하고 모형 학습
3. 같은 규칙으로 검증 폴드 변환
4. 손대지 않은 검증 폴드에서 점수 계산
항목잘못된 방법올바른 방법
결측값·표준화전체 데이터로 평균·분산 계산훈련 폴드에서 적합, 검증 폴드에는 변환만 적용
변수 선택·PCA전체 라벨·분산으로 먼저 선택각 훈련 폴드 안에서 다시 선택·적합
SMOTE·언더샘플링분할 전 전체 데이터 재표본화훈련 폴드에만 적용, 검증 분포는 유지
목표 인코딩검증 라벨 또는 자기 행의 라벨 사용훈련 폴드 안에서 교차적합하고 검증에는 학습 규칙 적용
확률 보정·임곗값바깥 검증 폴드로 조정훈련 폴드 내부의 별도 분할 또는 안쪽 CV 사용
조기종료바깥 검증 폴드로 epoch 선택훈련 폴드 내부에서 조기종료용 분할 구성

전처리와 모형을 하나의 파이프라인으로 묶으면 각 훈련 폴드에서 fit, 검증 폴드에서 transform만 수행하도록 관리하기 쉽다. 중복·근접 중복 문서나 동일 사용자의 파생 행도 그룹으로 묶지 않으면 전처리를 올바르게 수행해도 누수가 남을 수 있다.

6. 하이퍼파라미터 선택과 중첩 교차검증

같은 교차검증 결과에서 수십 개 설정을 비교해 최고점을 고르면 선택 과정이 해당 폴드에 적응한다. 그 최고점을 선택된 절차의 공정한 최종 성능처럼 보고하면 낙관적 편향이 생길 수 있다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
바깥 훈련 폴드
└─ 안쪽 교차검증
   ├─ 전처리·특징 선택
   ├─ 하이퍼파라미터·임곗값 비교
   └─ 최적 절차 선택
        ↓
바깥 훈련 전체로 선택 절차 재학습
        ↓
바깥 검증 폴드에서 한 번 평가
        ↓
바깥 점수들을 집계

안쪽 교차검증은 선택, 바깥 교차검증은 선택 과정까지 포함한 성능 추정을 담당한다. 바깥 폴드의 라벨은 안쪽 선택에 들어가면 안 된다. 별도 테스트 세트가 충분하면 개발 영역의 교차검증으로 설정을 고정한 뒤 전체 개발 데이터로 재학습하고 테스트를 마지막 한 번 평가하는 방식도 가능하다.

여러 모형을 공정하게 비교하려면 가능한 한 같은 폴드와 같은 지표를 사용한다. 무작위 분할과 모형의 난수 설정을 기록해 재현 가능성을 확보하되, 한 seed의 우연한 결과만으로 우열을 단정하지 않는다.

7. 점수 집계와 변동 해석

k개 폴드 점수를 s_1, …, s_k라고 하면 평균과 표본 표준편차는 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
평균 s̄ = (1/k) × Σs_i
표본 표준편차 SD = √[Σ(s_i - s̄)² / (k - 1)]

점수가 [0.78, 0.82, 0.80, 0.60, 0.81]이면 평균은 0.762, 표본 표준편차는 약 0.092, 중앙값은 0.80, 범위는 0.60~0.82다. 평균만 보면 낮은 한 폴드의 실패 원인을 놓칠 수 있으므로 그 폴드의 기간·집단·클래스 구성과 데이터 품질을 확인한다.

평균±SD는 폴드 변동의 기술 통계이지 자동으로 95% 신뢰구간이 되는 표현이 아니다. 폴드들은 훈련 데이터를 공유해 서로 독립이 아니므로 SD/√k를 독립 반복실험의 표준오차처럼 기계적으로 해석하지 않는다.

폴드 크기가 다를 때 집계 방식도 보고 목적에 따라 달라진다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
관측치 가중 평균 = Σ(n_i × s_i) / Σn_i

예: 폴드 크기 [20, 20, 60], 정확도 [0.90, 0.80, 0.70]
단순 평균 = 0.80
관측치 가중 평균 = (20×0.90 + 20×0.80 + 60×0.70) / 100 = 0.76

단순 평균은 폴드마다 같은 비중, 가중 평균은 관측치마다 같은 비중을 준다. 고객별 행 수가 크게 다르면 행 단위 성능과 고객 단위 성능 중 무엇을 추정하는지 먼저 정한다. RMSE·F1·AUC처럼 비선형 지표는 폴드 점수의 가중 평균이 전체 검증 예측을 합쳐 다시 계산한 값과 같지 않을 수 있으므로 집계 정의를 명시한다.

8. 경계 상황과 검증 실패 처리

상황문제대응
고유 그룹 수 < k그룹 k-겹 구성 불가k를 줄이거나 검증 설계를 변경
한 폴드에 한 클래스만 존재AUC 등 일부 지표 정의 불가층화·그룹 제약과 k를 재설계, 0으로 임의 대체 금지
검증 폴드가 지나치게 작음점수 변동과 정의 불가 증가k를 줄이거나 반복·외부 검증 검토
시계열 라벨 기간이 경계와 겹침미래 라벨 정보 누수예측 지평에 맞는 gap·제외 구간 설정
일부 적합이 실패평균이 성공 폴드만 반영될 위험실패 원인·폴드·후보를 기록하고 전체 절차 재검토

검증 실패나 정의되지 않는 지표를 단순히 0 또는 평균값으로 채우면 모형 비교가 왜곡될 수 있다. 먼저 분할 설계와 데이터 지원 여부를 고치고, 해결할 수 없다면 해당 지표가 추정 불가능하다고 보고한다.

9. 교차검증으로 알 수 없는 것

  • 과거 데이터와 미래 운영 환경이 달라지는 구조적 변화
  • 수집에서 빠진 집단, 선택 편향과 잘못된 라벨
  • 배포 지연·연산 비용·사용자 반응 같은 운영 효과
  • 모형 사용으로 행동이 바뀌는 피드백과 정책 효과
  • 보지 못한 기관·지역·장비로의 외적 타당성

교차검증은 선택한 분할이 재현하는 데이터 생성 조건 안에서 일반화 성능을 추정한다. 외부 기관·후속 기간 검증, 운영 모니터링과 필요하면 통제된 실험을 함께 사용한다.

10. 사례 적용

상황: 병원 환자의 다음 연도 재입원을 예측한다. 환자 한 명당 여러 진료 행이 있고 3년치 데이터가 있다.

주어진 조건: 재입원은 희소하고 같은 환자의 과거 진료가 특징에 포함된다. 결측값 대치, 변수 선택, 클래스 재표본화와 임곗값도 조정해야 한다.

판단 과정:

  1. 최종 연도를 가능하면 독립 테스트 기간으로 남긴다.
  2. 개발 기간에서는 같은 환자의 행이 훈련·검증에 동시에 들어가지 않도록 그룹을 보존한다.
  3. 미래 적용을 재현하도록 훈련이 검증보다 과거가 되게 하고 라벨 확정 지연만큼 gap을 둔다.
  4. 그룹 분리와 시간 순서를 함께 만족하는 사용자 정의 분할을 구성한다.
  5. 대치·변수 선택·재표본화·임곗값 선택은 각 훈련 영역 또는 안쪽 교차검증에서만 수행한다.
  6. 평균·표준편차뿐 아니라 환자 수, 양성 수, 연도별 재현율과 실패 폴드를 보고한다.

결론: 단순 층화 k-겹보다 환자 그룹, 시간 순서와 라벨 지평을 함께 보존하는 검증이 적합하다. 최종 연도는 모든 선택이 끝난 뒤 한 번 평가한다.

오답 함정: 전체 3년 데이터로 표준화·변수 선택·SMOTE를 끝낸 뒤 행 단위 무작위 교차검증을 수행하면 같은 환자와 미래 정보가 훈련에 섞여 성능이 낙관적으로 보일 수 있다.

다섯 번의 반복에서 다섯 개 폴드가 차례로 검증 세트가 되고 나머지 네 개가 학습 세트가 되는 교차검증 절차도
다섯 번의 반복에서 다섯 개 폴드가 차례로 검증 세트가 되고 나머지 네 개가 학습 세트가 되는 교차검증 절차도

5-fold 교차검증에서는 각 표본이 정확히 한 번 검증에 쓰이고 네 번 학습에 쓰인다. 다섯 점수의 평균뿐 아니라 변동성도 함께 확인하며, 동일 고객·시간 묶음이 양쪽에 섞여 누출되지 않도록 분할 단위를 정한다.

폴드별 검증 점수를 $s_1,\ldots,s_K$라 하면 평균 검증 점수는 다음과 같다.

s̄CV=(1) ÷ (K)Σk=1^Ks_k
원자료를 학습·검증·테스트로 나누고 학습은 적합, 검증은 선택, 잠긴 테스트는 마지막 한 번 평가에 쓰는 흐름도
원자료를 학습·검증·테스트로 나누고 학습은 적합, 검증은 선택, 잠긴 테스트는 마지막 한 번 평가에 쓰는 흐름도

학습 세트는 모수를 적합하고, 검증 세트 또는 교차검증은 모형과 하이퍼파라미터를 고른다. 테스트 세트는 모든 선택이 끝난 뒤 한 번 평가해야 하며, 테스트 결과를 보고 다시 조정하면 더 이상 독립 테스트가 아니다.

데이터주된 역할허용되는 사용금지해야 할 누출
학습모수 적합특징 변환 규칙 학습전체 데이터로 전처리 통계 계산
검증후보 선택하이퍼파라미터·임곗값 비교테스트 결과를 반영한 재선택
테스트최종 일반화 성능최종 한 번의 보고반복 튜닝과 모형 선택

시험 판단 포인트

  • 표준 k-겹에서 각 폴드는 한 번씩 검증 역할을 하고 각 관측치는 k-1번 훈련에 사용된다.
  • 층화는 클래스 비율, 그룹 분할은 동일 개체, 시계열 분할은 시간 순서를 보존한다.
  • 층화만으로 그룹·시간 누수가 해결되지는 않는다.
  • 전처리·변수 선택·재표본화·보정·임곗값 선택은 훈련 폴드 안에서 학습한다.
  • 테스트 데이터는 모형 선택에 반복 사용하지 않는다.
  • 중첩 교차검증의 안쪽은 선택, 바깥은 선택 절차의 성능 추정이다.
  • 평균과 폴드 변동·실패 구간을 함께 보고 평균±SD를 자동으로 신뢰구간으로 해석하지 않는다.
  • 불균등 폴드는 단순 평균과 관측치 가중 평균의 추정 대상을 구분한다.
  • 시계열은 순서뿐 아니라 예측 지평, 특징 가용 시점과 gap을 확인한다.

자주 틀리는 부분

  • k가 클수록 편향과 분산이 모두 항상 작아진다고 판단한다.
  • 반복 교차검증의 k×R개 점수를 독립 표본으로 본다.
  • 층화 k-겹이 환자·고객 중복과 시간 누수까지 해결한다고 생각한다.
  • 표준화가 목표변수를 쓰지 않는다는 이유로 전체 데이터에서 먼저 적합한다.
  • 분할 전에 SMOTE·변수 선택·목표 인코딩을 수행한다.
  • 바깥 검증 폴드로 조기종료·보정·임곗값을 선택한다.
  • LOOCV의 단일 관측치 폴드에서 AUC를 계산할 수 있다고 본다.
  • 테스트 데이터로 설정을 반복 조정하면서 최종 테스트라고 부른다.
  • 폴드 표준편차를 그대로 일반화 성능의 95% 신뢰구간으로 해석한다.
스스로 확인하기

개념 확인 문제

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

01표준 5겹 교차검증에서 한 관측치의 일반적인 역할을 올바르게 제시하시오.
정답 및 해설

한 번 검증되고 네 번 훈련된다.

표준 5겹 교차검증에서는 각 폴드가 한 번씩 검증 역할을 하므로 한 관측치는 검증에 한 번, 나머지 네 번의 반복에서 훈련에 사용된다.

02교차검증에서 누수를 막는 절차를 올바르게 제시하시오.
정답 및 해설

훈련 폴드에서 대치·표준화·변수 선택을 적합하고 검증 폴드에는 학습된 규칙만 적용한다.

대치값·스케일·변수 선택 기준은 각 훈련 폴드에서만 학습하고 검증 폴드에는 변환만 적용해야 한다.

03폴드 크기 [20, 20, 60], 정확도 [0.90, 0.80, 0.70]일 때 단순 평균과 관측치 가중 평균은?
정답 및 해설

0.80, 0.76

단순 평균은 (0.90+0.80+0.70)/3=0.80이다. 관측치 가중 평균은 (20×0.90+20×0.80+60×0.70)/100=76/100=0.76이다.

04하이퍼파라미터 선택 절차까지 포함한 일반화 성능을 추정하는 설명으로 타당한 내용을 서술하시오.
정답 및 해설

안쪽 교차검증에서 설정을 고르고 바깥 검증 폴드에서 선택 절차를 평가한다.

중첩 교차검증에서 안쪽 반복은 하이퍼파라미터와 전체 학습 절차를 선택하고, 바깥 반복은 선택 과정까지 포함한 성능을 평가한다.