Interview/ML

ML Interview - Cross Validation

김 정출 2024. 11. 11. 00:33

Cross Validation

교차 검증(Cross Validation)은 머신러닝에서 모델의 성능을 평가하는 방법 중 하나로, 주어진 데이터를 여러 번 나누어 모델을 학습하고 검증하는 방식입니다. 데이터를 여러 번 나누어 검증하기 때문에 모델의 일반화 성능을 더 정확하게 평가할 수 있는 장점이 있습니다.

 

 

K-Fold Cross Validation

가장 일반적인 방법인 K-폴드 교차 검증(K-Fold Cross Validation)을 예로 들면, 다음과 같은 과정으로 진행됩니다:

  1. 데이터 분할: 데이터를 K개의 폴드(fold)로 나눕니다.
  2. 학습 및 검증 반복: 각 폴드에 대해, K개의 폴드 중 하나의 폴드를 검증 세트로, 나머지 K-1개의 폴드를 학습 세트로 사용하여 모델을 학습하고 평가합니다.
  3. 평균 성능 계산: K번 반복 후 각 검증 세트에서 계산한 성능 지표를 평균하여 모델의 최종 성능을 평가합니다.

이러한 방식으로, 모델이 학습에 사용되지 않은 데이터로 검증됨으로써 **과적합(overfitting)**을 방지하고, 데이터의 특정 분할에 의존하지 않는 더 안정적인 성능 평가가 가능합니다.

 

 

Leave-One-Out Cross Validation (LOOCV)

  • 데이터셋의 각 샘플을 한 번씩 테스트 세트로 사용하고, 나머지 샘플을 학습에 사용합니다.
  • 즉, 데이터셋에 n개의 샘플이 있다면 n번의 학습과 검증을 수행하는 방식입니다.
  • 장점: 데이터가 적을 때 사용할 수 있으며, 각 데이터 포인트가 모델 평가에 기여하기 때문에 평가 편향이 줄어듦.
  • 단점: 샘플 수가 많아지면 매우 많은 반복 학습이 필요해 비용이 크게 증가.

 

Stratified K-Fold Cross Validation

  • K-Fold 교차 검증의 한 형태로, 각 폴드에 데이터의 클래스 비율을 동일하게 유지하도록 데이터를 나눕니다.
  • 예를 들어, 분류 문제에서 클래스가 불균형할 경우, 각 폴드에 클래스가 균등하게 분포되도록 나누는 방식입니다.
  • 장점: 특히 분류 문제에서 클래스 불균형이 있는 경우 유리하며, 각 폴드가 데이터 분포를 잘 반영하도록 만듦.

 

 

Time Series Cross Validation (Sliding Window)

  • 주로 시계열 데이터에 사용되며, 데이터의 시간 순서를 고려해 학습 및 검증 세트를 순차적으로 생성하는 방식입니다.
  • 일반적으로 이전 데이터로 학습하고 그 다음의 구간을 검증에 사용합니다.
  • 방법:
    • Expanding Window: 학습 세트를 점차 확장해가며 이전 모든 데이터를 포함한 상태로 검증을 수행.
    • Sliding Window: 고정된 크기의 학습 세트를 이동하면서 검증.
  • 장점: 시계열 예측에서 시간 순서를 지키면서 모델을 평가 가능.

 

 

교차 검증을 통해 얻은 성능 지표는 모델이 새로운 데이터에 대해 얼마나 잘 일반화되는지를 추정하는 데 도움을 줍니다.