본문 바로가기

혼자 공부하는 머신러닝+딥러닝

[혼공 학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 4주차

 

 

진도 : Chapter 5

기본미션 : 교차 검증을 그림으로 설명하기

선택미션 : Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기

 


 

기본미션

 

Ch.2- Ch 5.1 의 실습들에서는 데이터 세트를 훈련 세트와 테스트 세트로만 나누었었다.

아래의 그림처럼  훈련 세트로 모델을 학습하고 테스트 세트로 모델을 평가한 다음 테스트 세트 결과에 따라 모델을 조정하는 과정을 반복하며 최종적으로 직사각형 점선에 있는  워크플로우가 끝나면 테스트 세트에서 가장 성능이 좋은 모델을 선택한다.

 

 

출처 - Google for Developers

 

 

위의 방식은  테스트 세트를 사용해 모델을 평가하고, 모델을 조정하고,  최종적으로는 테스트 세트에 가장 잘 맞는 모델을 선택하므로 테스트 세트에 과적합한 모델 만들어질 수 있다. 

 

따라서  데이터 세트를 세 개의 하위 세트(훈련 세트 - 검증 세트 - 테스트 세트)로 나누면 과적합 가능성을 크게 줄일 수 있다. 검증 세트는 하이퍼파라미터 튜닝을 위해 모델을 평가할 때, 테스트 세트를 사용하지 않기 위해 훈련 세트에서 다시 떼어 낸 데이터 세트이다. 훈련 세트는 약 60% , 검증 세트는 약 20% ,  테스트 세트는 약 20% 로 만든다. (퍼센티지는 문제에 따라 달라질 수 있다.) 

 

출처 - Google for Developers

 

 

훈련 세트에서 모델을 훈련하고 검증 세트로 모델을 평가한다. 이런 식으로 테스트하고 싶은 매개변수를 바꿔가며 가장 좋은 모델을 고른다. 그다음 이 매개변수를 사용해 훈련 세트와 검증 세트를 합쳐 전체 훈련 데이터에서 모델을 다시 훈련한다. 그리고 마지막에 테스트 세트에서 최종 점수를 평가한다.

데이터 세트를 두개로 나누었을때와 가장 큰 차이점은 검증 세트로 성능이 가장 좋은 모델을 선택하고, 테스트 세트는 마지막으로 딱 한 번 일반화 성능을 예측하기 위해 사용된다는 점이다.  

 

출처 - Google for Developers

 

 

전체 데이터 샘플 개수가 많지 않을 때 검증 세트를 만드느라 훈련 세트의 샘플 개수가 줄어 든다. 이를 해결하기 위해 검증 세트를 너무 조금 떼어 놓으면 검증 점수가 불안정할 것이다.

 

이 때 교차검증(cross validation)을 이용하면 안정적인 검증 점수를 얻고 훈련에 더 많은 데이터를 사용할 수 있다.

교차검증은 훈련 세트를 여러 폴드로 나눈 다음 한 폴드가 검증 세트의 역할을 하고 나머지 폴드에서는 모델을 훈련한다.교차 검증은 이런 식으로 모든 폴드에 대해 검증 점수를 얻어 평균하는 방법이다.

 

일반적으로 많이 사용되는 교차 검증 방식으로는 k- 폴드 교차 검증(k-fold cross validation)이 있다.

훈련 세트를 몇 부분으로 나누냐에 따라 다르게 부른다. 보통 5 - 폴드 교차 검증이나 10 - 폴드 교차 검증을 많이 사용한다.

 

다음은 3- 폴드 교차 검증을 그림으로 나타낸 것이다.(교재 참조)

 

 

 

아래의 자료는  사이킷런 웹사이트와  개인 블로그를 참고한 자료이다.

(교재와 달리 검증 데이터가 아니라 테스트 데이터라고 설명하므로 위의 그림과 용어 차이가 있다.)

 

출처 - https://scikit-learn.org

 

 

출처 - https://medium.com/@mtterribile/understanding-cross-validations-purpose-53490faf6a86

 

 


선택 미션