ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ensemble 의 기본
    머신러닝/Ensemble 활용방안 2022. 8. 25. 12:20

    이번에는 Ensemble(앙상블)에 대해 정리해보고자 한다.

    Ensemble은 Assemble의 불어이다. 

     

    거두절미하고 본론으로 들어가면 , 

     

    2개 이상의 모델의 결과를 조합해서 최적을 만들어내는 방식으로, 

    회귀/분류 모델마다 약간의 상이한점이 있다.

     

    본 포스팅에서는 sklearn에서 일반적으로 제공하는 VotingClassifier의 활용보단 Customizing한 방법을 설명하고자 한다.

     

    추후 Voting의 'soft voting' , 'hard voting' 등등 다양한 개념들을 포스팅하고자한다.

     

    Regression(회귀)문제에서의 Ensemble은 
    대수적으로 더하고 나누고 비율을 선정하는 경우가 많다.
    cat_reg = CatBoostRegressor()
    cat_reg.fit(X_train ,y_train)
    pred_cat = cat_reg.predict(X_test)
    ### catboost로 예측한 결과 
    
    rf_reg = RandomForestRegressor()
    rf_reg.fit(X_train , y_train) 
    pred_rf = rf_reg.predict(X_test
    ### randomforest로 예측한 결과 
    
    pred_total = (pred_cat + pred_rf) / 2   ### 2개를 더하고 나눠서 앙상블
    예를 들어 , pred_cat 이 pred_rf 보다 모델의 성능이 더 좋을 경우 
    비율로 정할 수 도 있다. 제출한 후 리더보드를 확인해가며 조정해보자!
    pred_total = 0.7 * pred_cat + 0.3 * pred_rf

     

    Classification(분류)문제에서의 Ensemble은
    대수적으로 더하고 나눌 경우 정수형이 안될 수 있으므로 주의해야한다.
    따라서 그럴때는 threshold를 선정해서 해야한다.
    cat_clf = CatBoostClassifier()
    cat_clf.fit(X_train ,y_train)
    pred_cat = cat_clf.predict(X_test)
    ### catboost로 예측한 결과 
    
    rf_clf = RandomForestClassifier()
    rf_clf.fit(X_train , y_train) 
    pred_rf = rf_clf.predict(X_test)
    ### randomforest로 예측한 결과 
    
    pred_total = (pred_cat + pred_rf) / 2  
    ### 2개를 더하고 나눠서 앙상블하게 되면 0.5 , 0.67 등의 소수점 값이 나온다 따라서 
    ### 아래와 같이 threshold를 사용한다.
    
    prediction ### 임의의 데이터프레임 
    threshold = 0.5 ### 값은 알아서 정하시면 됩니다.
    prediction.loc[prediction["pred_total"] >= threshold , "pred_total"] = 1
    prediction.loc[prediction["pred_total"] < threshold , "pred_total"] = 0
    
    submission["Target"] = prediction["pred_total"] 
    
    ### 이렇게 제출파일에 반영하시면 됩니다.

     

    번외 1. random state만으로 앙상블하기 
    스코어링이 좋은 모델이 타 모델과 앙상블했을때 오히려 결과가 안좋을때는 동일한 모델의 컨디션에서 
    random_state(난수) 값만 변경해서 여러개를 더해서 앙상블하는 것도 한 방법

     

     

    추가적인 패키지에 대한 내용은 다음 포스팅에서 설명하기로 한다.

     

Designed by Tistory.