교차 검증(cross-validation)은 「데이터를 여러 조각으로 나눠 모델의 일반화 능력을 더 신뢰성 있게 평가하는 방법」입니다.
학습 데이터와 검증 데이터를 한 번만 나누면 그 분할 자체에 운이 작용해 평가가 흔들릴 수 있는데, 교차 검증은 이를 줄여 줍니다.
가장 흔한 형태는 「K-폴드 교차 검증(K-Fold CV)」입니다.
전체 데이터를 K개의 동일한 크기 조각으로 나눈 뒤, K번의 학습을 돌리는데 매번 한 조각을 검증용으로 빼고 나머지 K-1 조각으로 학습합니다.
그렇게 얻은 K개의 검증 점수를 평균해 모델의 진짜 성능을 추정합니다.
비유하자면 「한 학생을 평가할 때 한 번의 시험만 보는 게 아니라, 5번 다른 시험을 본 평균 점수로 평가하는 것」과 비슷합니다.
한 번의 운에 좌우되지 않으니 평가의 신뢰도가 올라갑니다.
K는 보통 5나 10을 씁니다.
K가 너무 작으면(예: 2) 평가가 흔들리고, 너무 크면(예: 100) 학습 비용이 폭증합니다.
데이터가 매우 작을 때는 「LOOCV(Leave-One-Out CV)」 — 한 샘플만 빼고 나머지로 학습하기를 모든 샘플에 대해 돌리는 — 극단적 형태도 씁니다.
분류 문제에서 클래스 불균형이 심할 때는 「Stratified K-Fold」를 씁니다.
각 폴드에 클래스 비율을 똑같이 맞춰 평가의 안정성을 높입니다.
시계열 데이터에는 「TimeSeriesSplit」처럼 미래 데이터로 학습하지 않도록 하는 변형이 필요합니다.
한 줄 요약
교차 검증은 데이터를 K개로 나눠 K번 학습·평가를 돌린 평균을 보는 방법으로, 한 번의 분할에 좌우되지 않는 신뢰도 높은 평가를 제공합니다.
더 알아볼 것
- Stratified K-Fold — 클래스 균형 유지
- TimeSeriesSplit — 시계열 전용 검증
- Nested CV — 하이퍼파라미터 튜닝과 평가의 분리