始める無料で始める

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))
コードを編集して実行