XGBoost アルゴリズム - アマゾン SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

XGBoost アルゴリズム

XGBoost (eXtreme Gradient Boosting) は、勾配ブーストツリーアルゴリズムのよく知られた効率的なオープンソースの実装です。勾配ブースティングは教師あり学習アルゴリズムで、より単純で弱いモデルのセットから推定のアンサンブルを組み合わせることで、ターゲット変数の正確な予測を試行します。XGBoost アルゴリズムは、さまざまなデータ型、関係、分布、および微調整できるさまざまなハイパーパラメータを堅牢に処理できるため、機械学習のコンペティションにおいて優れた結果を出しています。XGBoost は、回帰、分類 (バイナリとマルチクラス)、ランキングの問題に使用できます。

XGBoost アルゴリズムの新しいリリースは、Amazon としても使用できます。 SageMaker 組み込みアルゴリズム、またはローカル環境でトレーニングスクリプトを実行するフレームワークとして。この実装では、元のバージョンよりも、メモリのフットプリントは縮小し、ロギングは強化され、ハイパーパラメータ検証は向上し、メトリクスセットは拡張されています。マネージド型の XGBoost 環境でトレーニングスクリプトを実行する XGBoost estimator も提供されています。の現在のリリース SageMaker XGBoost はXGBoost の元のバージョン 1.0、1.2、1.3、1.5 をベースにしています。

サポートされるバージョン

  • フレームワーク (オープンソース) モード: 1.0-1、1.2-1、1.2-2、1.5-1、1.5-1、1.5-1、1.5-1、1.

  • アルゴリズムモード: 1.0-1、1.2-1、1.2-2、1.5-1、1.5-1、1.5-1、1.5-1、1.

重要

取得すると SageMaker XGBoost イメージ URI、使用しないでください:latestまたは:1画像 URI タグ用。いずれかを指定する必要がありますサポートされるバージョン選択するには SageMaker使用したいネイティブ XGBoost パッケージバージョンの-managed XGBoost コンテナ。に移行されたパッケージバージョンを確認するには SageMaker XGBoost コンテナ、を参照してください。Docker レジストリパスとサンプルコード、を選択します。AWS リージョンをクリックし、XGBoost (アルゴリズム)セクション。

警告

XGBoost 0.90 バージョンは廃止されました。XGBoost 0.90 のセキュリティアップデートまたはバグ修正のサポートは終了しています。XGBoost バージョンを新しいバージョンのいずれかにアップグレードすることを強くお勧めします。

注記

XGBoost v1.1 はでサポートされていません SageMaker XGBoost 1.1 は、テスト入力の特徴が LIBSVM 入力のトレーニングデータよりも少ない場合に、予測を実行する機能が壊れているためです。この機能は XGBoost v1.2 で復元されています。の使用を検討する SageMakerXGBoost 1.2-2 以降

を使用する方法 SageMaker XGBoost

と SageMakerでは、組み込みのアルゴリズムまたはフレームワークとして XGBoost を使用できます。XGBoost をフレームワークとして使用することで、独自のトレーニングスクリプトをカスタマイズできるため、柔軟性が高まり、K 分割交差検証などのより高度なシナリオを利用できるようになります。以下のセクションでは、XGBoost と XGBoost の使用方法について説明します。 SageMaker SDK アマゾンのXGBoostの使用方法については SageMaker スタジオ UI、を参照してくださいSageMaker JumpStart

  • XGBoost をフレームワークとして使用する

    XGBoost をフレームワークとして使用して、追加のデータ処理をトレーニングジョブに組み込むことができるカスタマイズされたトレーニングスクリプトを実行します。以下のコード例では、 SageMaker Python SDK は、次のような他のフレームワーク API を提供するのと同じ方法で、どのように XGBoost API をフレームワークとして提供します。 TensorFlow、MXNet、 PyTorch。

    import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbosity":"1", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", framework_version='1.5-1', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    男性用 end-to-end の使用例 SageMaker フレームワークとしての XGBoost については、を参照してください。Amazon での回帰 SageMaker XGBoost

  • XGBoost を組み込みアルゴリズムとして使用する

    次のコード例に示すように、XGBoost 組み込みアルゴリズムを使用して、XGBoost トレーニングコンテナを構築します。XGBoost 組み込みアルゴリズムの画像 URI は、 SageMaker image_uris.retrieveAPI (またはget_image_uriAPI (使用する場合)アマゾン SageMaker SDKバージョン 1) image_uris.retrieve API で正しい URI が検出されるかどうかを確認する場合は、「組み込みアルゴリズムの共通パラメータ」を参照し、組み込みアルゴリズムイメージ URI と使用可能なリージョンの詳細なリストから xgboost を参照します。

    XGBoost イメージ URI を指定したら、XGBoost コンテナを使用して、 SageMaker Estimator API とトレーニングジョブを開始する。この XGBoost 組み込みアルゴリズムモードでは、独自の XGBoost トレーニングスクリプトは組み込まれず、入力データセット上で直接実行されます。

    重要

    取得すると SageMaker XGBoost イメージ URI、使用しないでください:latestまたは:1画像 URI タグ用。いずれかを指定する必要がありますサポートされるバージョン選択するには SageMaker使用したいネイティブ XGBoost パッケージバージョンの-managed XGBoost コンテナ。に移行されたパッケージバージョンを確認するには SageMaker XGBoost コンテナ、を参照してください。Docker レジストリパスとサンプルコード、を選択します。AWS リージョンをクリックし、XGBoost (アルゴリズム)セクション。

    import sagemaker import boto3 from sagemaker import image_uris from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "1.5-1") # construct a SageMaker estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    XGBoost を組み込みアルゴリズムとして設定する方法の詳細については、次のノートブックの例を参照してください。

XGBoost アルゴリズムの入出力インターフェイス

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

- SageMaker XGBoost の実装では、トレーニングと推論に CSV 形式と libsvm 形式がサポートされています。

  • トレーニング用 ContentType、有効な入力はtext/libsvm(デフォルト値) またはテキスト/csv

  • 推論用 ContentType、有効な入力はtext/libsvm(デフォルト値) またはテキスト/csv

注記

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

CSV 推論の場合、アルゴリズムは CSV 入力にラベル列がないと見なします。

libsvm トレーニングの場合、アルゴリズムはラベルが最初の列にあると見なします。後続の列には、特徴のゼロベースのインデックス値のペアが含まれています。そのため、各行は <label> <index0>:<value0> <index1>:<value1> ... の形式になります。libsvm の推論リクエストには、libsvm 形式のラベルが含まれていない場合があります。

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

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

v1.3-1 以降では、 SageMaker XGBoost はモデルを XGBoost 内部バイナリ形式で保存します。Booster.save_model。以前のバージョンでは Python pickle モジュールを使用してモデルをシリアライズ/デシリアライズしていました。

注記

を使用するときはバージョンに注意してください SageMaker オープンソースの XGBoost モデルの XGBoost。バージョン 1.3-1 以降では XGBoost 内部バイナリ形式が使用され、以前のバージョンでは Python pickle モジュールが使用されています。

でトレーニングしたモデルを使用するには SageMaker XGBoost v1.3-1 またはそれ以降のオープンソース XGBoost

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

    import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(model_file_path) xgb_model.predict(dtest)

以前のバージョンでトレーニングされたモデルを使用するには SageMaker XGBoost オープンソースで XGBoost

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

    import pickle as pkl import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)

ラベル付きデータポイントの重要性を区別するには、インスタンス重みサポートを使用します。

  • SageMaker XGBoost では、各インスタンスに重み値を割り当てることで、ラベル付きデータポイントの重要性を区別できます。text/libsvm 入力の場合、顧客がデータインスタンスに重み値を割り当てるには、ラベルの後に重み値を付加します。例: label:weight idx_0:val_0 idx_1:val_1...text/csv 入力の場合、顧客はパラメータで csv_weights フラグをオンにし、その列でラベルの後に重み値を付加する必要があります。例: label,weight,val_0,val_1,...)。

XGBoost アルゴリズムの EC2 インスタンスに関する推奨事項

SageMaker XGBoost 1.0-1 以前では、CPU を使用した場合にのみトレーニングできます。これは (CPU バウンドではなく) メモリバウンドアルゴリズムです。そのため、コンピューティング最適化インスタンス (C4 など) よりも汎用コンピューティングインスタンス (M5 など) を選択することをお勧めします。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。メインメモリに収まらないデータを処理するためのディスク容量の使用をサポートしていますが( out-of-core libsvm 入力モードで利用できる機能)。キャッシュファイルをディスクに書き込むと、アルゴリズムの処理時間が遅くなります。

SageMaker XGBoost バージョン 1.2 以降では、シングルインスタンスの GPU トレーニングがサポートされています。インスタンスあたりのコストは高くなりますが、GPU のトレーニングはより迅速になり、費用対効果が高くなります。 SageMaker XGBoost バージョン 1.2 以降では、P2 と P3 インスタンスをサポートしています。

SageMaker XGBoost バージョン 1.2-2 以降は、P2、P3、G4Dn、および G5 GPU インスタンスファミリーをサポートしています。

GPU トレーニングを利用するには、インスタンスタイプを GPU インスタンスの 1 つ (P3 など) として指定し、tree_method ハイパーパラメータを既存の XGBoost スクリプトで gpu_hist に設定します。 SageMaker XGBoost は現在、マルチ GPU トレーニングはサポートされていません。

SageMaker XGBoost は推論用に CPU と GPU インスタンスをサポートします。推論のインスタンスタイプについては、「アマゾン SageMaker ML インスタンスタイプ

XGBoost サンプルノートブック

次の表は、Amazon のさまざまなユースケースに対応する各種サンプルノートブックの概要を示しています。 SageMaker XGBoost アルゴム

ノートブックのタイトル 説明

カスタム XGBoost コンテナを作成する方法

このノートブックでは、Amazon でカスタム XGBoost コンテナを構築する方法について説明しています。 SageMaker Batch 変換

Parquet を使用した XGBoost での回帰

このノートブックでは、Parquet の Abalone データセットを使用して XGBoost モデルをトレーニングする方法について説明しています。

複数クラス分類モデルをトレーニングおよびホストする方法

このノートブックでは、MNIST データセットを使用して、複数クラス分類モデルをトレーニングおよびホストする方法について説明しています。

顧客解約の予測に対するモデルをトレーニングする方法

このノートブックでは、不満を感じている顧客を特定するために、モバイルの顧客の離反を予測するモデルをトレーニングする方法について説明しています。

Amazon の紹介 SageMaker XGBoost トレーニング用のマネージドスポットインフラストラクチャ

このノートブックでは、XGBoost コンテナでトレーニングにスポットインスタンスを使用する方法について説明しています。

Amazon の使用方法 SageMaker XGBoost トレーニングジョブをデバッグするデバッガー?

このノートブックでは、Amazon の使用方法について説明します SageMaker トレーニングジョブをモニタリングして不整合を検出するデバッガー。

Amazon の使用方法 SageMaker XGBoost リアルタイムでトレーニングジョブをデバッグするデバッガー

このノートブックでは、MNIST データセットと Amazon の使用方法について説明しています。 SageMakerトレーニングジョブの実行中に XGBoost トレーニングジョブのリアルタイム分析を実行するデバッガー。

でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については SageMaker、「」を参照してください使用アイテム Amazon SageMaker ノートブックインスタンス。ノートブックインスタンスを作成して開いた後、SageMaker例タブをクリックして、すべてのリストを表示します SageMaker サンプル。線形学習者アルゴリズムを使用したトピックモデリングのサンプルノートブックは、[Introduction to Amazon algorithm (Amazon アルゴリズムの概要)] セクションにあります。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。