차밍이
[파이썬] 교차검증 Cross Validation 검증 본문
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)이라고 합니다.
교차 검증의 장점과 단점
장점
- 모든 데이터 셋을 평가에 반영할 수 있어 데이터의 편중을 막을 수 있습니다.
- General(일반적인) 모델을 만들어 Overfitting을 방지할 수 있습니다.
- 모델의 정확도를 향상할 수 있습니다.
- 데이터가 부족하여 Train과 Test로 나누기에 아까운 경우에 활용하기 좋다.
단점
- 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를 구성하기 때문에 이러한 문제를 해결할 수 있습니다.
'파이썬 > 머신러닝' 카테고리의 다른 글
[DACON] AI프렌즈 시즌1 온도 추정 경진대회 - 02 : 대회 종료 및 소감 (0) | 2020.04.14 |
---|---|
[DACON] AI프렌즈 시즌1 온도 추정 경진대회 - 01 : 대회 소개 및 참여 (0) | 2020.03.24 |
[파이썬] 실습 데이터를 사용한 SVM 모델 생성 및 예측, C와 감마(Gamma) (3) | 2020.03.18 |
[파이썬 머신러닝] Kaggle 타이타닉 데이터 생존자 예측모델 RandomForest와 DecisionTree (1) | 2020.03.16 |
[파이썬/데이터분석] LendingClub 원금 상환 여부 예측하기(2) 시각화 소스코드 (0) | 2020.03.12 |
[파이썬/데이터분석] LendingClub 원금 상환 여부 예측하기(1) : EDA와 데이터 시각화 (0) | 2020.03.12 |
[머신러닝] PCA 실습 (2) : 주성분분석이 성능을 높여주는가? (2) | 2020.03.04 |
[머신러닝] 실습으로 보는 PCA(주성분 분석)가 필요한 이유 (3) | 2020.03.02 |