Post

머신러닝 #1 - K-Fold 교차 검증

머신러닝 #1 - K-Fold 교차 검증

📚 K-Fold 교차 검증(K-Fold Cross Validation)


K-Fold는 모델의 일반화 성능을 평가하기 위한 검증 기법입니다. 데이터를 K등분한 뒤, 각 부분을 한 번씩 검증용으로 사용해 총 K번 모델을 학습/평가합니다.

💡 어떻게 작동하나요?

  1. 전체 데이터를 K개의 폴드(fold) 로 나눕니다.
  2. K번 반복하며:
    • 한 폴드를 검증용으로 사용
    • 나머지 K-1개를 훈련용으로 사용
  3. K개의 검증 결과를 평균 내어 최종 성능을 평가합니다.

예시: K=5인 경우, 데이터셋을 다섯 부분으로 나눠 다음과 같이 사용합니다.

  • 1번째 반복: 1~4번 폴드로 학습하고, 5번 폴드로 검증
  • 2번째 반복: 1·2·3·5번으로 학습, 4번으로 검증
  • 3번째 반복: 1·2·4·5로 학습, 3번으로 검증
  • 4번째 반복: 1·3·4·5로 학습, 2번으로 검증
  • 5번째 반복: 2~5번으로 학습, 1번으로 검증

이렇게 해서 모델을 5번 평가하고, 그 결과를 평균 내어 최종 성능으로 사용합니다.

✅ 왜 사용할까요?

  • 모든 데이터를 학습/검증에 활용
  • 평균 성능으로 더 신뢰성 있는 평가
  • 과적합 여부 확인 → 일반화 능력 향상

🧠 Stratified K-Fold란?

Stratified K-Fold는 각 폴드에 클래스 비율이 최대한 고르게 들어가도록 나누는 방식입니다.
특히 불균형한 분류 문제에서 성능이 크게 좌우되기 때문에 매우 유용합니다.

예를 들어, 데이터에 다음과 같은 클래스 비율이 있다고 해봅시다:

  • 클래스 0: 90개
  • 클래스 1: 10개

일반 K-Fold로 나누면, 운에 따라 어떤 폴드에는 클래스 1이 아예 없을 수도 있습니다.
Stratified K-Fold는 이런 불균형을 피하기 위해, 각 폴드에 다음처럼 클래스 비율을 유지하려고 합니다:

  • 각 폴드에 클래스 0은 18개, 클래스 1은 2개씩 포함
  • 이후 K-Fold처럼 동일하게 반복 수행:

    • 1번째 반복: 1~4번 폴드로 학습, 5번 폴드로 검증
    • 2번째 반복: 1·2·3·5번으로 학습, 4번으로 검증
    • 5번째 반복: 2~5번으로 학습, 1번으로 검증

이처럼 모든 검증 세트에도 소수 클래스가 반드시 포함되도록 설계되어
평가 결과가 훨씬 더 안정적이고 현실에 가까워집니다.

📌 참고

  • 일반적으로 K=5 또는 K=10을 사용
  • 회귀 문제엔 일반 K-Fold, 분류 문제엔 Stratified K-Fold가 적합

연습문제집을 5등분하고, 매번 다른 한 파트를 시험처럼 푸는 전략!
Stratified는 이때 ‘각 파트에 문제 유형 비율을 맞춰 섞는 것’이라 볼 수 있어요.

This post is licensed under CC BY 4.0 by the author.

Trending Tags