Cross Validation

Hansss·2021년 11월 29일
0

Machine Learning

목록 보기
4/10

Validation

우리가 모델을 학습시킬 때는 Training dataset으로 학습 시키고 test dataset으로 모델의 성능을 확인한다.

그런데 dataset이 이렇게 두개뿐이라면 우리는 점점 test dataset에서 성능이 좋아지는 방향으로 모델을 튜닝시킬 것이고 종국엔 test set에만 적합하고 다른 데이터에 대해서는 강인하지 못한 모습을 보이게 될 것이다.

이를 보완하기 위한 전략이 바로 validation인데 training set에서 validation dataset을 따로 나누어 학습은 training set으로만 하고 검증을 validation set으로 하는 것이다.

valid set은 test set과 유사해야하며 test set은 마지막에 한 번만 사용한다.

Cross Validation

training set에서 validation set을 나눌 때 8:2로 나눈다고 하면 우리가 가지고 있는 학습 데이터 중 20%나 못쓰게 되는 단점이 있다.

하지만 교차검증전략을 사용한다면 모든 data set을 활용하므로 성능을 향상시킬 수 있고 평가 또한 모든 dataset을 활용하므로 검증 단계에서의 데이터 편중을 막을 수 있다.

다만 valid set을 여러개로 나누는 만큼 학습 횟수가 많기 때문에 모델 훈련/평가 시간이 오래걸린다.

K-Fold Cross Validation

K-Fold는 가장 일반적인 교차검증 방법이다. 보통 회귀 모델에 사용되며, 데이터가 독립적으로 동일한 분포를 가진 경우 사용한다.

Training data를 K개의 동일한 비율의 Fold로 나누고 valid set을 번갈아가며 학습한다.

위의 그림은 K가 5인 경우이며 총 5개의 모델이 도출되고 5번의 추론이 나오며 결과들의 평균을 모델의 성능으로 삼는다.

Stratified K-Fold Cross Validation

만약 데이터의 분포가 편향돼있을 경우 단순 K-Fold Validation을 사용하면 성능 평가가 잘 되지 않을 수 있다.

이런 경우 Stratified K-Fold Cross Validation을 사용한다. 일반적으로 분류 문제에서 사용한다.

Stratify KFold는 전체 dataset을 k개의 fold로 분할한 이후에도 전체 dataset의 class 비율과 각 fold가 가지고 있는 클래스의 비율을 맞춰준다.

위의 그림처럼 3개의 fold가 3개 class의 비율을 유지하는 것을 볼 수 있다.

profile
딥러닝 연습생

0개의 댓글