반응형
0. 앙상블
머신러닝에서 여러개의 모델을 학습시켜 모델의 예측결과를 이용해 하나의 모델보다 더 나은 값을 예측하는것
1. 배깅(bagging)
높은 variance를 낮추는 것 (과적합 된 모델을 샘플링을 통해 과적합을 완화시키는것)
bootstrapping을 통해 여러 학습 데이터를 만들고 이들의 평균값을 구하는것.
bias가 낮은 모델들을 이용하여 variance를 줄인다. (중심극한정리의 원리와 비슷하다)
<example>
- 의사결정나무
from sklearn.tree import DecisionTreeRegressor
# DecisionTree
fit_reg5 = DecisionTreeRegressor().fit(X_train_feRSM, Y_train_feR)
pred_tr_reg5_feRSM = fit_reg5.predict(X_train_feRSM)
pred_te_reg5_feRSM = fit_reg5.predict(X_test_feRSM)
- 랜덤 포레스트
from sklearn.ensemble import RandomForestRegressor
# RandomForestRegressor
fit_reg6 = RandomForestRegressor(n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg6_feRSM = fit_reg6.predict(X_train_feRSM)
pred_te_reg6_feRSM = fit_reg6.predict(X_test_feRSM)
2. 부스팅(boosting)
높은 bias를 낮추는 것 (학습이 덜 된 모델을 추가 학습을 통해 좀 더 좋은 모델로 만드는것)
성능이 약한 학습기 여러개를 이용하여 강한 학습기를 만드는 앙상블 학습
앞에서 학습된 모델을 보완해 나가며 더 나은 모델로 학습함.
<example>
- adaboost(adaptive boosting) : 학습된 모델이 과소적합 된 학습 데이터 샘플의 가중치를 높이면서 더 잘적합 하도록 함
- GBM(gradient boosting machine) : 학습 전단계 모델의 잔차를 모델에 학습시키는 방법
from sklearn.ensemble import GradientBoostingRegressor
### Boosting
# GradientBoostingRegression
fit_reg7 = GradientBoostingRegressor(alpha=0.1, learning_rate=0.05, loss='huber', criterion='friedman_mse',
n_estimators=1000, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg7_feRSM = fit_reg7.predict(X_train_feRSM)
pred_te_reg7_feRSM = fit_reg7.predict(X_test_feRSM)
- XGBoost(extream gradient boosting) : 높은 예측력으로 많은 양의 데이터를 다룰 때 사용
from xgboost import XGBRegressor
# XGBoost
fit_reg8 = XGBRegressor(learning_rate=0.05, n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg8_feRSM = fit_reg8.predict(X_train_feRSM)
pred_te_reg8_feRSM = fit_reg8.predict(X_test_feRSM)
- lightGBM : 현존하는 부스팅 알고리즘 중 가장 빠르고 높은 예측력
from lightgbm import LGBMRegressor
# LightGMB
fit_reg9 = LGBMRegressor(learning_rate=0.05, n_estimators=100, random_state=123).fit(X_train_feRSM, Y_train_feR)
pred_tr_reg9_feRSM = fit_reg9.predict(X_train_feRSM)
pred_te_reg9_feRSM = fit_reg9.predict(X_test_feRSM)
3. 부스팅(boosting)과 배깅(bagging)의 차이
*출처 : 패스트캠퍼스 "파이썬을 활용한 시계열 데이터분석 A-Z"
반응형