라일락 꽃이 피는 날

[Sklearn] 앙상블 (Ensemble) - Stacking, Weighted Blending 본문

데이터 분석/Python

[Sklearn] 앙상블 (Ensemble) - Stacking, Weighted Blending

eunki 2021. 5. 17. 17:14
728x90

Stacking

개별 모델이 예측한 데이터를 기반으로 final_estimator 종합하여 예측을 수행한다.

성능을 극으로 끌어올릴 때 활용하기도 한다.

데이터셋이 적은 경우, 과대적합을 유발할 수 있다.

from sklearn.ensemble import StackingRegressor

stack_models = [
    ('elasticnet', poly_pipeline),
    ('randomforest', rfr),
    ('gbr', gbr),
    ('lgbm', lgbm)
]

stack_reg = StackingRegressor(stack_models, final_estimator=xgb, n_jobs=-1)
stack_reg.fit(x_train, y_train)
stack_pred = stack_reg.predict(x_test)

 

 

 

 


Weighted Blending

각 모델의 예측값에 대하여 weight를 곱하여 최종 output을 계산한다.

모델에 대한 가중치를 조절하여 최종 output을 산출한다.

가중치의 합은 1.0이 되도록 한다.

final_outputs = {
    'elasticnet' : poly_pred,
    'randomforest' : rfr_pred,
    'gbr' : gbr_pred,
    'xgb' : xgb_pred,
    'lgbm' : lgbm_pred,
    'stacking' : stack_pred
}
final_prediction=\
final_outputs['elasticnet'] * 0.1\
+final_outputs['randomforest'] * 0.1\
+final_outputs['gbr'] * 0.2\
+final_outputs['xgb'] * 0.2\
+final_outputs['lgbm'] * 0.2\
+final_outputs['stacking'] * 0.2\

 

728x90