Boosting 対決: Light vs Extreme
CatBoost の性能は比較的良好ですが、別の種類の boosting も試して、"Light" と "Extreme" のどちらがより良い結果を出すか確認してみましょう。
CatBoost はカテゴリ特徴量がある場合に特に有効です。今回はすべての特徴量が数値なので、他の手法のほうが良い結果を出す可能性があります。
今回は回帰モデルを作るので、使用する学習関数を指定する追加パラメータ objective を使います。二乗誤差を適用するには、XGBoost では objective を 'reg:squarederror'、LightGBM では 'mean_squared_error' に設定します。
さらに、XGBoost の計算時間を短縮するために、パラメータ n_jobs も指定します。
注意: 分類器を使わないようにしてください。セッションがタイムアウトする恐れがあります!
この演習はコースの一部です
Pythonで学ぶアンサンブル手法
演習の手順
- 次のパラメータで
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))