데이터 분석/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