線形ベース学習器
これまでにXGBoostで木をベースモデルとして使いましたが、ここではもう一つの種類である線形学習器を使ってみましょう。このモデルはXGBoostではそれほど一般的ではありませんが、XGBoostの強力な学習APIを使って正則化付きの線形回帰を作成できます。ただし一般的でないため、xgb.train() のような scikit-learn 互換ではないXGBoost独自の関数を使ってモデルを構築する必要があります。
これを行うには、使用したいブースター(ベースモデル)の種類を記述するパラメータ辞書を作成します(Chapter 1で xgb.cv() を使ったときに辞書を作成した方法と同様です)。ブースタータイプ(ベースモデル)を定義するキーと値のペアは "booster":"gblinear" です。
モデルを作成したら、これまでと同様にモデルの .train() と .predict() メソッドを使えます。
ここではデータはすでに学習用とテスト用に分割されているので、XGBoostの学習APIで必要となる DMatrix オブジェクトの作成から始めましょう。
この演習はコースの一部です
XGBoost で学ぶ極限の勾配ブースティング
演習の手順
- 2つの
DMatrixオブジェクトを作成します。学習用はDM_train(X_trainとy_train)、テスト用はDM_test(X_testとy_test)。 - 使用する
"booster"の種類("gblinear")と、最小化する"objective"("reg:squarederror")を定義したパラメータ辞書を作成します。 xgb.train()を使ってモデルを学習します。次のパラメータに引数を指定します:params、dtrain、num_boost_round。ブースティング回数は5にします。- テストセットに対するラベルを
xg_reg.predict()で予測し、DM_testを渡します。predsに代入してください。 - 'Submit Answer' を押してRMSEを確認しましょう!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Convert the training and testing sets into DMatrixes: DM_train, DM_test
DM_train = ____
DM_test = ____
# Create the parameter dictionary: params
params = {"____":"____", "____":"____"}
# Train the model: xg_reg
xg_reg = ____.____(____ = ____, ____=____, ____=____)
# Predict the labels of the test set: preds
preds = ____
# Compute and print the RMSE
rmse = np.sqrt(mean_squared_error(y_test,preds))
print("RMSE: %f" % (rmse))