7-2. oob 평가 / 랜덤 패치, 랜덤 서브스페이스

2021. 5. 12. 02:49Machine Learning

oob 평가 


앙상블 학습에서 훈련 세트를 샘플링할때 중복을 허용하는 배깅 방식을 채택할 경우, 

 

일반적으로 훈련 샘플의 63%만 샘플링이 되는데, 이는 나머지 37%의 데이터 훈련에 쓰이지 않는다.

 

이러한 데이터를 oob(out-of-bag)라고 하는데, 앙상블의 평가에 이 oob 샘플을 활용할 수 있다.  

 

    bag_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500,
                                max_samples=30, bootstrap=True, n_jobs=-1, oob_score=True)
    bag_clf.fit(X_train, y_train)
    y_pred = bag_clf.predict(X_valid)

BaggingClassifier 객체 생성 시 oob_score를 True로 지정하면 모델의 정확도를 oob_score_ 변수에 기록한다. 

 

    print("oob Score : ",bag_clf.oob_score_)
    print("Accuracy Score: ",accuracy_score(y_valid, y_pred))

oob 샘플로 평가한 정확도와, 검증 세트로 평가한 정확도를 비교해보았다.

oob Score :  0.8533333333333334
Accuracy Score:  0.88

 

 

 

랜덤 패치 / 랜덤 서브 스페이스 


BaggingClassifier에서는 샘플뿐만 아니라 특성의 샘플링도 가능하다. 

 

max_features, bootstrap_feather 두 매개변수로 특성 샘플링을 조정한다. 

 

각각 샘플링할 특성의 최대갯수, 샘플링할 특성의 중복가능 여부를 지정한다. 

 

배깅, 랜덤서브스페이스, 랜덤패치 도식화

출처 : livebook.manning.com/concept/machine-learning/random-patch

 

샘플과 특성을 모두 샘플링할 경우, 이를 랜덤 패치 방식(Random patches method)이라고 하며, 

 

특성만을 샘플링할 경우, 랜덤 서브스페이스 방식(Random subspace method)이라고 한다.