Head vs breakz

[인공지능] - K fold cross validation 본문

카테고리 없음

[인공지능] - K fold cross validation

headbreakz 2020. 6. 24. 18:59

 데이터를 학습 시키기 위해 Train set 과 test set를 나눠서 진행 할때에, 나눠지는 경우에 따라서 학습 값의 차이가 발생하게 된다. 데이터가 크면 클수록 문제이고, 작으면 작을 수록 문제이다. 이러한 문제를 해결하기 위해 사용하는 방법이 K-fold cross validation 이다. 

 데이터를 K개의 폴드로 나누고, K개 만큼의 모델을 만들어서 K개의 학습 값의 평균을 사용하는 방법 이다.  

4 - fold

그러나 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