<과적합>
모델이 학습 데이터에만 과도하게 최적화되어 예측을 다른 데이터로 수행하면 성능이 과도하게 떨어지는 것
- 고정된 학습데이터와 테스트 데이터로만 하다보면 평향되게 모델을 유도할 수 있음.
: 그래서 고정된 테스트데이터를 쓰면 괜찮은데 다른 값의 테스트 데이터 셋이 들어가면 성능이 떨어질 수 있음.
▶ 그래서 이럴때 하는 것이 교차검증
<교차 검증>
- 데이터 편중을 막기 위한 것
- 별도의 여러 세트로 구성된 학습 데이터 세트 / 검증 데이터 세트에서 학습과 평가를 수행 하는 것
▶ 그래서 각 세트에서 수행한 평가 결과에 따라 하이퍼 파라미터 튜닝을 통해 최적화를 더욱 손쉽게
▷ 학습 / 검증 / 테스트 데이터 세트로 나눠서 모델을 다양하게 평가하는데 사용할 수 있음.
<K 폴드 교차 검증, K-Fold Cross Validation>
- K개의 데이터 폴드(Fold) 세트를 만들어서 K번만큼 각 폴트 세트에 학습과 검증 평가를 반복적으로 수행하는 방법
: 만약 5폴드 교차 검증이라면?
1. 데이터 세트를 5등분한다
2. 5개의 Fold Date set으로 학습과 검증을 변경하면서 5번 평가를 수행하고
3. 5개의 평가를 평균한 결과를 가지고 성능 평가한다.
4. 이렇게 다시 비슷한 학습을 해서 평가를 수행한다. (학습데이터랑 검증 데이터를 변경해서)
▶ 사이킷런으로 K 폴드 교차 검증 프로세스 구현해보기..!
80, 89행. sklearn.model_selection 모듈에 있는 KFold 클래스 / KFold( 폴드 데이터 세트 갯수)
▶ 전체가 150개니까 30개씩 분할되어서 5개가 만들어질 예정.
▽ 코드로 구현해보자면
94행. n_iter 은 개별 iteration. (몇번째 교차검증인지)
▶ 97행. kfold.split()을 해주게 되면 학습용/검증용 데이터로 분할할 수 있는 인덱스를 반환해줌
▷ 자세한 설명은 여기 https://www.inflearn.com/questions/562570/for-in-kfold-split-%EC%97%AD%ED%95%A0
그래서 split()을 호출해서 교차 검증 수행할 때마다 학습/검증을 해본다음에 예측 정확도를 측정해봄
▲▲▲▲ 위쪽에 있는 K-Fold Cross Validation 그림을 코드로 풀어서 구현해본거..!
결과값은 이렇게 나오는데, 5번의 교차를 하고 평균 검증 정확도가 0.9가 나온다.
그리고 보면 검증 세트 인덱스가 계속 달라지는 것을 확인해볼 수 있다.
'머신러닝 > 개념익히기' 카테고리의 다른 글
머신러닝 교차검증을 보다 간편하게 해주는, cross_val_score() (0) | 2023.08.22 |
---|---|
머신러닝 Stratified K 폴드 (0) | 2023.08.22 |
머신러닝 scikit-learn model selection 모듈 (0) | 2023.08.01 |
머신러닝 scikit-learn 주요 모듈 (0) | 2023.07.30 |
머신러닝, 지도학습과 비지도학습 간단히 (0) | 2023.07.29 |