XGBoost:学習と予測
最初の XGBoost モデルを作成してみましょう!動画で Sergey が示したように、xgboost ライブラリは scikit-learn 互換の API を持つため、すでにおなじみの scikit-learn の .fit() / .predict() パラダイムを使って XGBoost モデルを構築できます。
ここでは解約(churn)データを扱います。このデータセットは、架空のライドシェアアプリにおける、複数の架空の都市でのユーザーの最初の1か月間の行動と、サインアップから5か月後にそのサービスを利用したかどうかを含む架空データです。すでに churn_data という DataFrame に読み込まれているので、シェルで確認してみてください!
目的は、最初の1か月のデータから、5か月後にそのアプリのユーザーが引き続きサービスを利用しているかどうかを予測することです。これは典型的な解約予測の設定です。このために、データを学習用とテスト用に分割し、学習用データで小さな xgboost モデルを学習させ、テスト用データに対する正解率(accuracy)を計算して性能を評価します。
pandas と numpy はそれぞれ pd と np としてインポート済みで、sklearn.model_selection から train_test_split もインポートされています。さらに、特徴量と目的変数の配列はそれぞれ X と y として作成済みです。
この演習はコースの一部です
XGBoost で学ぶ極限の勾配ブースティング
演習の手順
xgboostをxgbとしてインポートします。- データの 20% をテストに使うように学習用・テスト用セットを作成します。
random_stateは123を使用します。 xgb.XGBClassifier()を使ってxg_clというXGBoostClassifierをインスタンス化します。n_estimatorsを10、objectiveを'binary:logistic'に指定します。これらの意味は後のレッスンで学ぶので、今は気にしなくて大丈夫です。.fit()メソッドを使って、xg_clを学習用データ(X_train, y_train)に当てはめます。.predict()メソッドでテスト用データ(X_test)のラベルを予測し、正解率を出力するために "Submit Answer" を押します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import xgboost
____
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the training and test sets
X_train, X_test, y_train, y_test= ____(____, ____, test_size=____, random_state=123)
# Instantiate the XGBClassifier: xg_cl
xg_cl = ____.____(____='____', ____=____, seed=123)
# Fit the classifier to the training set
____
# Predict the labels of the test set: preds
preds = ____
# Compute the accuracy: accuracy
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))