개념
- 교차검증(Cross-validation)은 주어진 데이터셋을 여러 개의 "접힘(fold)"로 나눠, 각 접힘을 검증 세트로 순차적 사용하여 모델을 학습, 평가해 일반화 성능을 추정하는 방법입니다.
- 데이터가 한 번만 학습,평가에 사용될 때보다 안정적인 성능 추정이 가능합니다.
수학적 기초
- 실제 위험(Generalization Error)
- R(f) = E(x,y)~p[L(f(X), Y)]
L : 손실함수(제곱오차, 로그손실)입니다.
- R(f) = E(x,y)~p[L(f(X), Y)]
- K-Fold 교차검증 추정치
- R^CV=K1k=1∑K∣Dk∣1(xi,yi)∈Dk∑L(f(−k)(xi),yi)
Dk: k번째 fold의 검증 데이터
f^(-k): Dk를 제외한 데이터로 학습한 모델
- R^CV=K1k=1∑K∣Dk∣1(xi,yi)∈Dk∑L(f(−k)(xi),yi)
주요 기법 및 적용 상황
| 기법 | 특징 | 사용 예시 |
| KFold https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html?utm_source=chatgpt.com |
데이터를 균등한 크기의 K개로 분할하여 순차 평가 | 범주형 불균형이 크지 않은 일반 회귀, 분류 |
| StratifiedKFold https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedGroupKFold.html?utm_source=chatgpt.com |
각 fold가 클래스 비율을 유지 | 이진, 다중 분류에서 클래스 불균형 |
| GroupKFold https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GroupKFold.html?utm_source=chatgpt.com |
같은 그룹(label, 고객ID 등)이 훈련/검증에 중복되지 않도록 분할 | 고객,환자 등 그룹별 종속성이 있을 때 |
| TimeSeriesSplit https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html?utm_source=chatgpt.com |
과거 -> 미래 순서 보존, 훈련 세트가 점점 커지는 시계열 전용 | 주가, 수요예측 등 시계열 예측 |
| Purged K-Fold / CPCV https://stats.stackexchange.com/questions/443159/what-is-combinatorial-purged-cross-validation-for-time-series-data?utm_source=chatgpt.com |
검증 구간과 겹치는 라벨 또는 특징을 제거(purge)하고 embargo 기간을 두어 누수 방지 | 금융 시계열, 이벤트 중심 데이터 ("진짜 미래" 평가 보장) |
반응형
'데이터분석' 카테고리의 다른 글
| 실전 금융 머신러닝 (1) | 2026.02.02 |
|---|---|
| Multilndex (0) | 2025.10.09 |
| 유데미(Udemy) 러닝 크루 【한글자막】 머신러닝의 모든 것 with AI, Python & R + ChatGPT Prize [2024] 수강완료 후기 (5) | 2024.12.23 |
| 연관분석 (2) | 2024.11.10 |
| 군집 분석 (1) | 2024.11.10 |