홀드아웃 검증 (holdout validation)
홀드아웃 검증에서는 훈련 세트의 일부를 떼어내어 검증 세트(validation set)을 만듭니다.
검증 세트를 떼어내고 남은 훈련 세트에서 다양한 하이퍼파라미터 값을 가진 여러 모델을 훈련합니다.
그 다음 검증 세트에서 가장 높은 성능을 내는 모델을 선택합니다.
홀드아웃 검증 과정이 끝나면 이 최선의 모델을
전체 훈련 세트에서 다시 훈련해서 최종 모델을 만듭니다.
마지막으로 최종 모델을 테스트 세트에서 평가하여 일반화 오차를 추정합니다.
이 방법은 일반적으로 잘 작동하지만,
검증 세트가 너무 작은 경우 모델이 정확하게 평가되지 않을 것이고,
검증 세트가 너무 크면 검증 세트를 뗀 훈련 세트가 전체 훈련 세트보다 너무 작아지기 때문에
전체 훈련 세트에서 훈련되는 최종 모델과
너무 작은 훈련 세트에서 훈련한 후보 모델을 비교하는 것은 이상적이지 않습니다.
이런 문제를 k겹 교차 검증으로 해결할 수 있습니다.
k겹 교차 검증 (K-fold cross validation)
k겹 교차 검증은 머신 러닝 모델의 성능을 좀 더 정확하게 평가할 수 있는 방법입니다.
여태는 그냥 데이터를 트레이닝 셋과 테스트 셋으로 한 번 나누고,
트레이닝 셋을 학습시키는 데 사용하고,
테스트 셋을 평가하는 데 사용했습니다.
이런식으로 하면 실제와는 상관없이 운이 좋게 테스트 셋이 나와서 성능이 좋게 보일 수 있고,
운이 나쁘게 테스트 셋이 나와서 성능이 안좋게 보일 수도 있습니다.
이런 경우에는 모델의 실제 성능을 제대로 파악했다고 말하기 어렵습니다.
교차 검증은 이 문제를 해결해주는 방법이고, k겹 교차 검증은 교차 검증 중에 가장 흔히 쓰이는 방법입니다.
k겹 교차 검증은 먼저 전체 데이터를 k개의 같은 사이즈의 데이터로 나눕니다.
맨 처음에는 첫 번째 데이터 묶음을 테스트 셋으로 사용하고 나머지 데이터를 트레이닝 셋으로 활용합니다.
그 다음에는 두 번째 데이터 묶음을 테스트 셋으로 사용하고 나머지 데이터를 트레이닝 셋으로 활용합니다.
이런식으로 나눠진 모든 테이터 묶음에 반복해줍니다.
결국에는 각 테스트 셋에 대한 성능이 있을텐데,
그 성능들의 평균을 모델의 전체 성능으로 봅니다.
이렇게 하면 모델의 성능을 여러 번 다른 데이터로 검증하기 때문에 평가에 대한 신뢰도가 올라가게 됩니다.
k로 가장 많이 활용하는 숫자는 5입니다.
k로 5를 사용할 경우에는 5겹 교차검증, 10을 사용할 경우에는 10겹 교차검증이라고 부르기도 합니다.
scikit-learn으로 k겹 교차 검증 해보기
'DATA > 머신 러닝' 카테고리의 다른 글
[머신 러닝] 결정 트리 (Decision tree) (0) | 2022.01.09 |
---|---|
[머신 러닝] 그리드 서치 (Grid search) (0) | 2022.01.07 |
[머신 러닝] 과소적합(underfitting), 과대적합(overfitting) (0) | 2022.01.07 |
[머신 러닝] 더 빠르게, 더 정확하게 (0) | 2022.01.06 |
[머신 러닝] 로지스틱 회귀 (Logistic Regression) (0) | 2022.01.05 |