교차검증 (Cross-validation)

컴퓨터과학·AI 통계
한 줄 정의: 데이터를 여러 부분으로 나눠 번갈아 학습·검증하며 모델 성능을 평가하는 방법입니다.

쉽게 풀면

모의고사 문제집 한 권을 다섯 묶음으로 나눈다고 생각해 보세요. 먼저 네 묶음으로 공부하고 나머지 한 묶음으로 실력을 확인한 뒤, 이번에는 다른 네 묶음으로 공부하고 또 다른 한 묶음으로 확인하는 과정을 다섯 번 반복하면, 어느 한 묶음의 운(문제가 유독 쉬웠거나 어려웠는지)에 좌우되지 않는 더 믿을 만한 실력 평가를 할 수 있습니다. 교차검증도 같은 원리로, 데이터를 여러 조각(폴드)으로 나눈 뒤 매번 다른 조각을 검증용으로 남기고 나머지로 학습시키는 과정을 반복해 모델 성능을 안정적으로 평가합니다.

왜 중요한가

교차검증은 제한된 데이터로도 모델의 일반화 성능을 신뢰성 있게 추정할 수 있게 해주기 때문에, 머신러닝 논문에서 새로운 모델이나 알고리즘의 성능을 보고할 때 사실상 표준적인 평가 절차로 자리 잡았습니다. 단일 검증셋만으로 평가하면 우연히 쉬운(혹은 어려운) 데이터가 검증셋에 포함되어 성능이 왜곡될 수 있는데, 교차검증은 여러 번의 반복을 통해 이런 변동성을 줄여줍니다. 또한 하이퍼파라미터 튜닝이나 모델 간 비교처럼 성능 차이의 통계적 신뢰성이 중요한 상황에서도 핵심적인 도구로 쓰입니다.

논문에서는 이렇게 쓰입니다

"모델의 일반화 성능을 평가하기 위해 5-겹 교차검증(5-fold cross-validation)을 수행하였다."

데이터를 다섯 조각으로 나눠 다섯 번 번갈아 학습·검증하며 평균 성능을 계산했다는 뜻입니다.

"환자 단위로 데이터가 새어나가는 것을 방지하기 위해 그룹 교차검증(group cross-validation)을 적용하여 같은 환자의 기록이 학습셋과 검증셋에 동시에 포함되지 않도록 하였다."

의료 인공지능 연구에서 데이터 간 의존성을 고려한 교차검증 변형을 사용한 예시로, 일반적인 무작위 분할이 부적절한 상황을 보여줍니다.

조금 더 깊게 보면

교차검증에는 데이터를 k개로 나누는 k-겹 교차검증 외에도, 표본 하나만 검증용으로 남기는 leave-one-out 방식, 시간 순서를 지키며 분할하는 시계열 교차검증, 그룹 단위로 분할하는 그룹 교차검증 등 데이터 구조에 맞춘 다양한 변형이 있습니다. 클래스 비율이 불균형한 데이터에서는 각 폴드가 원본 데이터의 클래스 비율을 유지하도록 나누는 계층화(stratified) 교차검증이 흔히 함께 사용됩니다. 또한 교차검증으로 얻은 성능 지표는 여러 폴드 값의 평균과 함께 표준편차나 신뢰구간을 함께 보고하는 것이 결과의 안정성을 보여주는 데 도움이 됩니다.

주의할 점

교차검증은 과적합을 발견하고 예방하는 데 유용하지만, 데이터 자체에 시간 순서나 그룹 간 의존성이 있는 경우(예: 같은 환자의 여러 기록) 무작위로 폴드를 나누면 정보가 새어나가 결과가 실제보다 지나치게 좋게 나올 수 있습니다. 데이터 특성에 맞는 분할 방식을 사용했는지 확인해야 합니다.

관련 용어