Practice makes perfect

[MachineLearning] 사이킷런(scikit-learn) - Part2(교차검증) 본문

Anaconda/MachineLearning

[MachineLearning] 사이킷런(scikit-learn) - Part2(교차검증)

kerpect 2020. 11. 20. 23:37

고정된 학습 데이터와 테스트 데이터로 평가를 하다 보면 테스트 데이터에서만 성능이 좋은 과적합 문제가 발생할 수 있습니다. 이러한 문제점을 개선하기 위해서 교차 검증을 이용합니다. 

 

교차 데이터는 데이터 편중을 막기 위해서 별도의 여러 세트로 구성된 학습 데이터 세트와 검증 데이터 세트에서 학습과 평가르 수행하는 것입니다. 그리고 각 세트에서 수행한 평가 결과에 따라 하이퍼 파라미터 튜닝등의 모델 최적화를 더 손쉽게 할 수 있습니다. 

 

 

● K 폴드 교차 검증 

: 가장 보편적으로 사용되는 교차 검증 기법으로 먼저 K개의 폴트 세트를 만들어서 K번 만큼 각 폴트 세트에 학습과 검증 평가를 반복적으로 수행하는 방법입니다. 

 

 

사이킷런에서 K 폴트 교차 검증 프로세스 구현하기 위해 KFold와 StratifiedKFold 클래스를 제공합니다. 

 

KFold

 

1. 라이브러리

 

2. 데이터 불러오기

 

3. 5개의 폴드 세트로 분리하는 KFold 객체와 폴드 세트별 정확도를 담을 리스트 객체 생성

 

4.  KFold 객체의 split()를 호출하면 폴드 별 학습용, 검증용 테스트의 로우 인덱스를 array로 반환 및 학습 

 

5. 개별 iteration별 정확도를 합하여 평균 정확도 계산