validation data set 을 k 번 바꿔가며 검증하는 K-Fold 교차 검증에 대해 공부해보고 sklearn 을 이용해서 간단한 분류 모델을 작성해봤다.
가장 보편적으로 사용되는 교차검증 방법으로, K개의 데이터 Fold 를 만들어 학습과 검증 평가를 반복적으로 수행하는 것을 말한다.
-> 이렇게 하면 조금 더 최적에 가까운 모델 selection 이 가능하다.
사이킷런에는 다양한 편리한 기능들이 많이 있고 k-fold 또한 구현되어 있다.
주의해야할 점 : 회귀문제를 풀 때에는 KFold 를 사용해도 되지만, 분류 모델을 사용할 때에는 data imbalance 이슈가 있기 때문에 StratifiedKFold 를 사용해야 한다!
cross_val_score 의 argument
- estimator : 구현하고자 하는 모델
코드로 살펴보자
# K Fold Validation을 위한 cross_val_score() 메서드 로딩
from sklearn.model_selection import cross_val_score
# 모델 구현을 위한 라이브러리 로딩
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
import numpy as np
# load_iris() 메서드를 이용하여 iris 데이터 셋 로드
iris = load_iris()
data = iris.data
label = iris.target
# DecisionTreeClassifier 모델 객체 생성
dt_clf = DecisionTreeClassifier(random_state=156)
# cross_val_score() 메서드를 이용하여 교차 검증 수행
scores = cross_val_score(estimator=dt_clf,
X=data, y=label,
scoring='accuracy',
cv=3)
# 교차 검증 수행 결과 성능 지표 출력
print('Fold val accuracy:',np.round(scores, 4))
print('Avg val accuracy:', np.round(np.mean(scores), 4))