이번 포스팅에서는 교차 검증에 대해 알아보겠습니다.
(출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음)
교차 검증(cross validation)이란?
오버피팅과 언더피팅을 방지하고 적합한 모형을 추정하기 위해
모형의 성능을 검증하는 것을 교차검증(cross validation)이라고 합니다.

위 그림과 같이 최초에 Data가 주어져 이 데이터를 이용해 모형을 만든다고 해 봅시다.
그런데 전체 data set을 사용하여 모형을 생성하면
실제 data에 적용해보고 성능을 평가할 새로운 data가 없기 때문에 문제가 됩니다.
이 문제를 해결하기 위해 전체 data를 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) 데이터로 사용합니다.

이렇게 하여 training data는 parameter를 구하는데 사용하고
validation data는 hyperparameter를 구하는데에 사용합니다.
주어진 data set에 대하여 training data, validation data, test data로 나누는 방법은
다양한 방법이 존재합니다.
교차 검증 예시
아래 그림과 같이 전체 데이터를 kk개로 분할하여 data 조합을 바꾸는 방법을
K-fold cross-validation이라고 하며,
아래의 경우 data 조합이 5종류 이므로 5-fold cross-validation이라고 합니다.

'잡학사전 > 머신러닝' 카테고리의 다른 글
[머신러닝] 그리드 서치(grid search) (0) | 2022.04.12 |
---|---|
[머신러닝] 파이프라인(Pipeline) (0) | 2022.04.11 |
[머신러닝] 오버피팅과 언더피팅 (0) | 2022.04.04 |
[머신러닝] 초평면(hyperplane)과 반공간(halfspace) (0) | 2022.03.20 |
[머신러닝] 아핀 셋(affine set)과 컨벡스 셋(convex set) (0) | 2022.03.16 |