開始使用免費開始

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 = 3learning_rate = 0.1n_estimators = 100n_jobs=2
  • 建立一個 LGBMRegressor,參數為:max_depth = 3learning_rate = 0.1n_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))
編輯並執行程式碼