차밍이

[파이썬] 교차검증 Cross Validation 검증 본문

파이썬/머신러닝

[파이썬] 교차검증 Cross Validation 검증

2020. 3. 26. 18:30
반응형

Cross Validatioin : 교차 검증이 왜 필요한가?

 

 

  머신러닝/딥러닝에서 데이터를 통한 모델을 설계한 후 모델을 검증하는 단계가 필요합니다. 모델을 적합하게 잘 설계했는지를 확인하기 위해서는 모델 Train 데이터와 테스트하는 Test 데이터를 구분해서 사용합니다. 그래야 데이터에 너무 과적합(Over fitting)되지 않은 모델을 설계할 수 있기 때문입니다.

  대부분 약 7:3에서 8:3으로 Training : Test를 나누어서 검증하는 경우가 많습니다. 여기에서 더 좋은 모델을 만들기 위해서 Train 데이터를 다시 7:3으로 나누어서 Validation 과정을 거치기도 합니다. 그 이유는 train 데이터로 만든 모델이 test 데이터에만 잘 적용되는 또 다른 과적합을 만들 수 있습니다. 이러한 경우 앞으로 예측을 위해 사용될 다른 데이터들을 가지고 진행할 때 잘못된 결과가 나올 수 있기 때문입니다.

  Validation은 Train set을 Train과 Validation set으로 나누어 모델을 만들고 평가하는 과정을 반복해서 진행하면서 과적합되는 경우를 방지해줍니다.

 

 

  Train 데이터 셋 전체를 K개의 subset으로 나누어 K번의 모델 생성과 평가를 수행합니다. 이러한 과정에서 나온 K개의 정확도를 바탕으로 전체 모델의 성능을 평가하는 방식입니다. 이러한 방식을 교차검증(Cross Validation)이라고 합니다.

 

교차 검증의 장점과 단점

장점

  1. 모든 데이터 셋을 평가에 반영할 수 있어 데이터의 편중을 막을 수 있습니다.
  2. General(일반적인) 모델을 만들어 Overfitting을 방지할 수 있습니다.
  3. 모델의 정확도를 향상할 수 있습니다.
  4. 데이터가 부족하여 Train과 Test로 나누기에 아까운 경우에 활용하기 좋다.

단점

  1. K번의 모델을 생성해야 하므로 Iteration 횟수가 많아 전체 과정(모델 생성 및 평가하는 과정)의 시간이 많이 소요됩니다.

 

 

K-fold cross validation

교차 검증의 가장 대표적인 검증 방법이라고 할 수 있습니다. 위의 설명과 동일하다고 봐도 무방합니다. K개의 데이터 셋으로 나누어 train과 test를 k번 반복하며 진행합니다.

 

Stratified K-fold cross validation

 

  계층별 k-fold 교차 검증은 주로 분류 문제에서 많이 사용됩니다. label의 분포가 각 클래스 별로 불균형을 이룰 때, 사용합니다. label이 불균형한 상태에서 index 순서로 데이터 fold를 구성되어있다면 validation 과정에서 큰 오류를 야기할 것입니다.

  예를 들면, iris 데이터 셋처럼 3가지 꽃의 종류를 구분하는 문제를 해결한다고 할 때, 만일 100번 까지의 데이터가 1~50은 A군, 51~80은 B군, 80~100은 C군의 순서로 나열돼 있다고 합시다. 이러한 경우 순서대로 K개의 fold를 나누면 A와 B로만 이루어진 모델을 통해서 C를 구별해낼 수 없을 것입니다. 이러한 문제들을 해결하기 위한 것이 Stratified K-fold cross validation입니다.

  계층별 K-fold교차 검증은 sample 과정에서 label의 분포를 고려하여 fold를 구성하기 때문에 이러한 문제를 해결할 수 있습니다.

 

반응형

관련된 글 보기

Comments