• 개요

    • 고정된 train_set 과 test_set으로 평가하고 반복적으로 모델을 튜닝하면 test_set에 Overfitting(과적합)이 발생하기 때문에 데이터의 모든 부분을 사용해서 모델을 검증하는 방식
    • train set : 학습을 위한 부분
    • test set : 평가를 위한 부분
  • 필요성

    Untitled

    • 위와 같이 우리가 사용할 데이터가 있다고 하자, 데이터는 label이 있는 train set과 test set으로 나뉘어져 있다.
    • 만약 train set을 다시 train set + validation set으로 분리하지 않는다 라고 가정해보자.
      • 모델 검증을 위해서 test set을 사용해야 한다. (test set이 validation set으로 되어버리는 경우)
      • 이 경우, 고정된 test set으로 모델의 성능을 확인하고 파라미터를 수정하고, 이 과정을 반복하는 경우 결국 우리의 모델은 test set에만 잘 동작하는 모델이 되어 버린다.
      • 이것을 test set에 overfitting(과적합)되었다. 라고 하며 실제 다른 데이터를 가지고 예측을 수행하면 엉망인 결과가 나온다.
      • Cross Validation은 이런 문제를 해결하기 위해서 고안되었다.
  • Cross Validation의 문제 해결 방식

    Untitled

    • test set에 과적합 되는 문제는 test set이 데이터 중 일부로 고정되어 있고, 이 일부분 데이터 셋에 대해 성능이 잘나오도록 파라미터를 반복적으로 튜닝하기 때문에 발생
  • 과정

    1. 먼저 전체 데이터 셋을 k개의 subset으로 나눈 뒤 k 번의 평가를 실행한다. ( 여기서 test set을 중복없이 바꾸어가며 평가를 진행하게 된다. )
    2. k개의 평가 지표를 평균( 때에 따라 평균이 아닌 방법 사용 가능 )을 내어서 최종적으로 모델의 성능을 평가한다.
  • 장단점

    • 장점

      1. 모든 데이터셋을 평가에 활용할 수 있다.

        → 특정 평가 데이터셋에 overfit 되는 것을 방지

      2. 모든 데이터 셋을 훈련에 사용할 수 있다.

        → 정확도 향상, 데이터 부족으로 인한 underfitting 방지

    • 단점

      1. Iteration 횟수가 많으므로 모델 훈련 및 평가 시간이 오래 걸린다.
  • 종류

    Untitled

    Holdout method

    Untitled

    • 주어진 trainset을 다시 임의의 비율로 train set과 test set으로 분할하여 사용한다.
    • 비율은 train:test = 9:1 or 7:3 이 많이 쓰인다.
    • Iteration(훈련 및 검증)을 한번만 하기 때문에 계산 시간에 대한 부담이 적다.
    • train set에 대한 검증 결과를 확인 후 모델 파라미터 튜닝을 하는 작업을 반복하게 되면 모델이 test set에 overfit 될 수 있다.

    K-Fold Cross Validation

    Untitled

    • 가장 일반적으로 사용되는 교차 검증 방법이다.
    • 데이터를 k개의 데이터 폴드로 분할하고, 각 Iteration마다 test set을 다르게 할당해 총 k개의 데이터 폴드 세트를 구성한다.
    • 모델을 학습 및 훈련하는데 총 k번의 Iteration이 필요한 것이 특징이다.
    • 데이터폴드세트에 대해서 나온 검증 결과들을 평균내어 최종적인 검증 결과를 도출하는 것이 일반적이다.

    Leave-p-out Cross Validation

    Untitled

    • 전체 데이터(서로 다른 데이터 샘플들) 중 p개의 샘플을 선택하여 그것을 모델 검증에 사용하는 방법
    • test set을 구성할 수 있는 경우의 수 ( = 훈련 및 검증에 소요되는 Iteration 수) 는 ${n}{C}{p}$ 이다. (n개중 p개)
    • K-Fold와 마찬가지로 각 데이터 폴드 세트에 대해서 나온 검증 결과를 평균내어 최종적인 검증 결과를 도출하는 것이 일반적
    • 데이터 폴드 세트의 경우의 수가 매우 크므로 계산 시간에 대한 부담이 매우 큰 방식

    Leave-one-out Cross Validation

    Untitled

    • LOOCV라고도 불리며, Leave-p-out cross validation에서 p=1일때의 경우를 말한다.
    • Leave-p-out 보다는 계산 시간에 대한 부담을 줄이고, 더 좋은 결과를 얻을 수 있기 때문에 더욱 선호됨.
    • 검증에 사용되는 test set의 갯수가 적은 만큼 모델 훈련에 사용되는 갯수는 늘어남
    • 모델 검증에 희생되는 데이터의 갯수는 단 하나이므로 나머지 모든 데이터를 모델 훈련에 사용할 수 있다.

    Stratified K-Fold Cross Validation

    Untitled

    • 주로 Classification 문제에서 사용
    • label의 분포가 각 클래스별로 불균형 한 경우 사용
    • label의 분포가 불균형한 상황에서 sample의 index 순으로 데이터 폴드 세트를 구성하는 것은 치명적 오류를 야기할 수 있음
    • Stratified K-fold cross validation은 이러한 데이터 label의 분포까지 고려해서(따라서 데이터 폴드 세트를 구성해주는 함수에서 데이터 label의 값을 요구) 각 훈련 또는 검증 폴드의 분포가 전체 데이터셋이 가지고 있는 분포에 근사하게 됨.