Amazon SageMaker
開発者ガイド

XGBoost アルゴリズム

XGBoost (eXtreme Gradient Boosting) は、勾配ブーストツリーアルゴリズムのよく知られた効率的なオープンソースの実装です。勾配ブースティングは教師あり学習アルゴリズムで、より単純で弱いモデルのセットの推定を組み合わせることで、ターゲット変数の正確な予測を試行します。XGBoost は、各種データタイプ、信頼関係、ディストリビューション、およびニーズに合わせて切り替え、調整できる大量のハイパーパラメータを堅牢に処理できるため、機械学習のコンペティションにおいて非常に優れた結果を出しています。この柔軟性により、XGBoost が回帰、分類 (バイナリとマルチクラス)、ランキングの問題に対して推奨される選択肢になります。

入出力インターフェイス

勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。

Amazon SageMaker の XGBoost の実装では、トレーニングと推論に CSV 形式と libsvm 形式が対応しています。

  • トレーニング ContentType の場合、有効な入力は libsvm または csv です。

  • 推論 ContentType の場合、有効な入力は text/x-libsvm または text/csv です。

注記

CSV トレーニングの場合、アルゴリズムはターゲット変数が最初の列にあり、CSV にはヘッダーレコードがないと見なします。CSV 推論の場合、アルゴリズムは CSV 入力にラベル列がないと見なします。

これは、標準の XGBoost データ形式とより一貫性を保つためにトレーニングの入力にプロトコルバッファー形式を使用する、Amazon SageMaker の他のアルゴリズムとは異なります。

CSV トレーニング入力モードの場合、アルゴリズムで使用できるメモリの合計 (インスタントカウント * InstanceType で使用できるメモリ) でトレーニングデータセットを保持できる必要があります。libsvm トレーニング入力モードの場合、これは必須ではありませんが推奨されます。

SageMaker XGBoost は Python の pickle モジュールを使用してモデルをシリアル化/逆シリアル化し、それをモデルの保存/ロードに使用できます。

SageMaker XGBoost でトレーニングを行ったモデルから Booster オブジェクトを取得するには

  • 次の Python コードを使用します。

    pickle as pkl model = pkl.load(open(model_file_path, 'rb'))

EC2 インスタンスの推奨事項

現在、Amazon SageMaker XGBoost では CPU を使用したトレーニングのみ行うことができます。これは (CPU バウンドではなく) メモリバウンドアルゴリズムです。したがって、コンピューティング最適化インスタンス (C4 など) よりも汎用コンピューティングインスタンス (M4 など) を選択することを推奨します。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。メインメモリに収まらないデータについてはディスク容量を使用できますが (libsvm 入力モードで利用できる out-of-core 機能)、ディスクにキャッシュファイルを書き込むとアルゴリズムの処理速度が低下します。