머신러닝 다시 시작하기 - 3

머신러닝 다시 시작하기 - 3

머신러닝 다시 시작하기-3

3. 평가

이제 모델링과 학습은 마쳤다. 학습된 머신을 평가해보는 단계이다. 여기서 이 머신이 쓸모 있는지 없는지 판단하게 된다. 평가 단계에서 training data set으로 학습한 머신을 test data set으로 평가하게 되고 정확도를 계산한다. 하지만 이 방법으로는 한계가 존재한다. 바로 test set에 과적합되어 현실의 데이터를 가져왔을 때 제대로 예측을 못하게 되는 것이다.

이 한계를 극복하기 위해 교차 검증이 개발되었다. 교차 검증도 여러 가지가 존재하는데 그 중 가장 효과적이라고 알려져 있는 K-fold Cross Validation에 대해 알아보도록 하자.

3-1) K-fold Cross Validation

kfcv
(출처 : https://cdn-images-1.medium.com/max/1600/1*rgba1BIOUys7wQcXcL4U5A.png)

위 그림에는 k = 5로 두어 교차 검증을 한 결과이다. 분류기 성능 측정의 통계적 신뢰도를 높이기 위해서, resampling 방법을 사용한다.

먼저 데이터를 k개의 데이터로 등분한다. 분리된 k개의 subset중에 k-1개를 훈련 데이터로 사용하고 (샘플링의 방법은 simple random, systematic, stratified, First N, cluster등이 있음.) 1개의 subset을 테스트 데이터로 사용한다.

여기서 비복원 추출의 개념으로, 한번 테스트로 선택된 subset 데이터는 다시 선택되지 않는다. 물론 k-fold와 홀드아웃 교차검증을 섞어서 사용할 수도 있다. 그리고 당연하게도, k등분 된 k-fold 검정에서의 iterate 횟수는 k번이다. (비복원으로 모든 경우의 수를 하는 갯수)

k-fold의 장점은 모든 데이터를 training과 test에 쓸 수 있다는 점이다. 또한 오버피팅의 염려도 크지 않다. 하지만 시간이 다소 오래걸린다는 단점이 존재한다.

k=n 으로 설정하여 1개의 샘플을 테스트셋으로 두어 샘플의 숫자만큼 반복측정을 하는,
leave-one-out(혹은 jackknife 기법)기법과 같은 극단적인 방법으로 실행할 때는 더더욱 그렇다.

보통 k-fold는 일반화 성능을 만족시키는 최적의 하이퍼 파라미터를 구하기 위한 모델 튜닝에 사용된다는 것이 가장 중요하다.

댓글

이 블로그의 인기 게시물

윈도우 설치에서 파티션 설정 오류(NTFS)

[exploit writing] 1_스택 기반 오버플로우 (1) First

하둡 설치 오류 정리