正解率を測る
ここでは、XGBoost に組み込まれている交差検証機能を使って、XGBoost の学習 API を実践します。前の動画で Sergey も説明したとおり、XGBoost は DMatrix と呼ばれるデータセット用の最適化された独自データ構造を用いることで、高速かつ高性能な学習を実現しています。
前の演習では、入力データセットはその場で DMatrix に変換されていましたが、xgboost の cv オブジェクトを使う場合は、先に明示的にデータを DMatrix に変換する必要があります。そこで今回は、churn_data に対して交差検証を実行する前に、その手順を行います。
この演習はコースの一部です
XGBoost で学ぶ極限の勾配ブースティング
演習の手順
xgb.DMatrix()を使って、churn_dataからchurn_dmatrixというDMatrixを作成します。特徴量はX、ラベルはyに用意されています。xgb.cv()を呼び出して 3 分割の交差検証を実行します。dtrainは作成したchurn_dmatrix、paramsはパラメータ辞書、nfoldは交差検証の分割数(3)、num_boost_roundは作成したい木の数(5)、metricsは計算したい指標(ここでは"error"。これを正解率に変換します)です。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create arrays for the features and the target: X, y
X, y = churn_data.iloc[:,:-1], churn_data.iloc[:,-1]
# Create the DMatrix from X and y: churn_dmatrix
churn_dmatrix = ____(data=____, label=____)
# Create the parameter dictionary: params
params = {"objective":"reg:logistic", "max_depth":3}
# Perform cross-validation: cv_results
cv_results = ____(dtrain=____, params=____,
nfold=____, num_boost_round=____,
metrics="____", as_pandas=____, seed=123)
# Print cv_results
print(cv_results)
# Print the accuracy
print(((1-cv_results["test-error-mean"]).iloc[-1]))