Head vs breakz
[인공지능] - K fold cross validation 본문
데이터를 학습 시키기 위해 Train set 과 test set를 나눠서 진행 할때에, 나눠지는 경우에 따라서 학습 값의 차이가 발생하게 된다. 데이터가 크면 클수록 문제이고, 작으면 작을 수록 문제이다. 이러한 문제를 해결하기 위해 사용하는 방법이 K-fold cross validation 이다.
데이터를 K개의 폴드로 나누고, K개 만큼의 모델을 만들어서 K개의 학습 값의 평균을 사용하는 방법 이다.
그러나 K- fold의 문제점은 데이터의 편향이 있는 경우 발생한다. 이러한 문제를 해결하기 위해 사용하는 방법이 Stratified k-fold cross validation이다. label의 분포를 유지하여, 각각 fold가 전체 label 분포를 따르도록 한다.
from sklearn.model_selection import KFold, cross_val_score
model = DecisionTreeClassifier()
kfold = KFold(n_splits=20,shuffle=True, randon_state=0)
score = cross_val_score(model, iris.data, iris.target, cv=kfold, scoring="accuracy")
from sklearn.model_selection import StratifiedKFold
model = DecisionTreeClassifier()
Str_kfold = StratifiedKFold(n_splits = 20,shuffle=True, randon_state=0)
score = cross_val_score(model, iris.data, iris.target, cv=Str_kfold, scoring="accuracy")
Comments