Boosting 對決:Light vs Extreme
雖然 CatBoost 的表現不錯,我們來嘗試另外兩種 boosting 風格,看看哪一個更好:「Light」或「Extreme」。
CatBoost 在有類別型特徵時特別推薦。本題中所有特徵皆為數值型,因此其他方法可能產生更佳結果。
因為要建立回歸模型,我們會加上一個參數 objective,用來指定學習目標函式。若要套用「平方誤差」,請將 XGBoost 的 objective 設為 'reg:squarederror',而 LightGBM 設為 'mean_squared_error'。
此外,我們會為 XGBoost 指定 n_jobs 參數,以縮短計算時間。
注意:千萬別用分類器,否則你的工作階段可能會逾時!
本練習屬於課程
Python 的 Ensemble 方法
練習說明
- 建立一個
XGBRegressor,參數為:max_depth = 3、learning_rate = 0.1、n_estimators = 100、n_jobs=2。 - 建立一個
LGBMRegressor,參數為:max_depth = 3、learning_rate = 0.1、n_estimators = 100。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Build and fit an XGBoost regressor
reg_xgb = ____.____(____, ____, ____, ____, objective='reg:squarederror', random_state=500)
reg_xgb.fit(X_train, y_train)
# Build and fit a LightGBM regressor
reg_lgb = ____.____(____, ____, ____, objective='mean_squared_error', seed=500)
reg_lgb.fit(X_train, y_train)
# Calculate the predictions and evaluate both regressors
pred_xgb = reg_xgb.predict(X_test)
rmse_xgb = np.sqrt(mean_squared_error(y_test, pred_xgb))
pred_lgb = reg_lgb.predict(X_test)
rmse_lgb = np.sqrt(mean_squared_error(y_test, pred_lgb))
print('Extreme: {:.3f}, Light: {:.3f}'.format(rmse_xgb, rmse_lgb))