잡학사전/머신러닝

[머신러닝] 교차 검증(cross validation)

슬기나무 2022. 4. 5. 21:28
반응형

이번 포스팅에서는 교차 검증에 대해 알아보겠습니다.

(출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음)

 

 교차 검증(cross validation)이란?

오버피팅과 언더피팅을 방지하고 적합한 모형을 추정하기 위해

 

모형의 성능을 검증하는 것을 교차검증(cross validation)이라고 합니다.

 

Data set

 

위 그림과 같이 최초에 Data가 주어져 이 데이터를 이용해 모형을 만든다고 해 봅시다.

 

그런데 전체 data set을 사용하여 모형을 생성하면

 

실제 data에 적용해보고 성능을 평가할 새로운 data가 없기 때문에 문제가 됩니다.

 

이 문제를 해결하기 위해 전체 data를 training data와 test data로 분할합니다.

 

Data set = Training data + Test data

 

이 경우 training data는 모형 생성을 위한 학습에 사용되고,

 

test data는 모형의 성능을 평가할 때 사용될 것입니다.

 

하지만 이 경우에도 문제가 없는 것은 아닙니다.

 

머신러닝 알고리즘을 적용할 때 다양한 hyperparameter에 대해

 

여러가지 모형의 후보군을 생성/평가하여 최종 모형을 선택하게 되는데

 

hyperparameter를 결정하는 과정에서 training data와 test data만 존재한다면

 

test data에 의해 최종 모형의 hyperparameter가 결정되기 때문입니다.

(전체 data set에서 test data를 뺀 것이 training data이므로)

 

따라서 이 문제를 해결하기 위해 training data의 일부를

 

밸리데이션(validation) 데이터로 사용합니다.

 

Data set = Training data + Validation data + Test data

 

이렇게 하여 training data는 parameter를 구하는데 사용하고

 

validation data는 hyperparameter를 구하는데에 사용합니다.

 

주어진 data set에 대하여 training data, validation data, test data로 나누는 방법은

 

다양한 방법이 존재합니다.

 

 교차 검증 예시

아래 그림과 같이 전체 데이터를 k개로 분할하여 data 조합을 바꾸는 방법을

 

K-fold cross-validation이라고 하며,

 

아래의 경우 data 조합이 5종류 이므로 5-fold cross-validation이라고 합니다.

5-fold cross-validation

반응형