머신러닝

교차 검증(Cross-validation)

데이터_박과장 2023. 3. 28. 16:05

교차 검증(Cross-validation)은 기계 학습에서 모델의 성능을 평가하는 방법 중 하나입니다. 교차 검증은 주어진 데이터를 학습 데이터와 테스트 데이터로 나누어 학습과 평가를 수행하는 것이 일반적인 방법입니다.

 

 


교차 검증 순서

  1. 데이터셋을 k개의 서로 다른 부분집합으로 나눕니다. (일반적으로 k=5, 10으로 설정)
  2. 각 부분집합 중 하나를 테스트 데이터셋으로 선택하고 나머지를 학습 데이터셋으로 사용합니다.
  3. 모델을 학습 데이터셋으로 학습시킵니다.
  4. 학습된 모델을 테스트 데이터셋으로 평가하고 성능 지표를 계산합니다.
  5. 2~4번을 k번 반복하여 각 테스트 데이터셋에 대한 성능 지표의 평균을 계산합니다.

 

이렇게 하면 데이터셋을 훈련, 검증, 테스트 데이터셋으로 나누는 것보다 더 많은 데이터를 사용하여 모델의 성능을 평가할 수 있습니다. 또한, 모든 데이터를 학습과 평가에 사용할 수 있기 때문에 모델이 일반화 성능을 더 잘 나타낼 수 있습니다.

교차 검증을 사용하여 모델의 성능을 평가할 때는 과적합(overfitting)을 방지하고 일반화 성능을 향상시키기 위해 하이퍼파라미터 튜닝 등의 작업을 수행할 때 특히 유용합니다.

 

 

교차검증의 한계 및 세부 방법론

 

하지만 이렇게 단순히 데이터셋을 나누는 것으로는 모델의 성능을 정확하게 평가하기 어려운 경우가 있습니다. 이러한 문제를 해결하기 위해 다양한 교차 검증 방법이 제안되었습니다.

 

  • K-Fold 교차 검증:
    데이터셋을 k개의 부분집합으로 나누고, 각각의 부분집합을 순서대로 테스트 데이터셋으로 사용하고 나머지 부분집합을 학습 데이터셋으로 사용하여 모델을 학습하고 평가하는 방법입니다. K-Fold 교차 검증을 수행할 때는 보통 데이터셋을 랜덤하게 섞어서 사용합니다. K-Fold 교차 검증은 모델의 성능을 안정적으로 추정할 수 있고, 데이터셋을 최대한 활용할 수 있어서 데이터셋이 작을 때 유용합니다.

 

 

  • Stratified K-Fold 교차 검증
    클래스 비율을 고려하여 데이터셋을 나누는 방법입니다. 클래스 비율을 고려하지 않고 데이터셋을 랜덤하게 나누면 클래스의 비율이 일정하지 않아서 모델의 성능을 정확하게 평가하기 어려울 수 있습니다. Stratified K-Fold 교차 검증은 각각의 부분집합에서 클래스 비율이 유지되도록 나누어 사용합니다.

 

  • Shuffle-Split 교차 검증
    데이터셋을 랜덤하게 섞은 후, 지정된 횟수만큼 랜덤하게 나누어 사용하는 방법입니다. Shuffle-Split 교차 검증은 K-Fold 교차 검증과 비슷하지만, 랜덤하게 나누기 때문에 보다 유연하게 데이터셋을 활용할 수 있습니다.

 

 

더욱 자세한 내용은 scikit-learn 공식 페이지에서 확인하실 수 있습니다.