XGBoost バージョン 0.72 - Amazon SageMaker

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

XGBoost バージョン 0.72

重要

XGBoost 0.72 は Amazon によって廃止されました SageMaker。この古いバージョンの XGBoost は、次のコードサンプルに示すように、そのイメージ URI をプルすることで引き続き組み込みアルゴリズムとして使用できます。XGBoost の場合、:1 で終わるイメージ URI は古いバージョン用です。

SageMaker Python SDK v1
import boto3 from sagemaker.amazon.amazon_estimator import get_image_uri xgb_image_uri = get_image_uri(boto3.Session().region_name, "xgboost", repo_version="1")
SageMaker Python SDK v2
import boto3 from sagemaker import image_uris xgb_image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "1")

新しいバージョンを使用する場合、イメージ URI タグを明示的に指定する必要があります (「サポートバージョン」を参照)。

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

お客様は、Amazon で XGBoost アルゴリズムを使用する SageMaker の新しいリリースの使用を検討する必要があります。 SageMaker 組み込みアルゴリズムとして使用することも、Tensorflow 深層学習フレームワークなどと同様に、ローカル環境でスクリプトを実行するフレームワークとして使用することもできます。この新しい実装では、メモリのフットプリントは縮小し、ロギングは強化され、ハイパーパラメータ検証は向上し、メトリクスセットは拡張されています。新しいバージョンへの移行を先延ばしにする必要がある場合は、XGBoost の以前の実装を引き続き利用することができます。ただし、この以前の実装は、XGBoost の 0.72 リリースに関連付けられたままになります。

XGBoost リリース 0.72 の入出力インターフェイス

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

XGBoost の SageMaker 実装は、トレーニングと推論のための CSV 形式と libsvm 形式をサポートしています。

  • トレーニングの場合 ContentType、有効な入力は text/libsvm (デフォルト) または text/csv です。

  • 推論 の場合 ContentType、有効な入力は text/libsvm または (デフォルト) text/csv です。

注記

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

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

これは、標準の XGBoost データ形式との一貫性を維持するために protobuf トレーニング入力形式を使用する他の SageMaker アルゴリズムとは異なります。

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

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

SageMaker XGBoost でトレーニングされたモデルをオープンソース XGBoost で使用するには
  • 次の Python コードを使用します。

    import pickle as pkl import tarfile import xgboost 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 リリース 0.72 の EC2 インスタンスに関する推奨事項

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

XGBoost リリース 0.72 のサンプルノートブック

SageMaker XGBoost の最新バージョンを組み込みアルゴリズムとして使用して回帰モデルをトレーニングおよびホストする方法を示すサンプルノートブックについては、「Amazon SageMaker XGBoost アルゴリズムによる回帰」を参照してください。XGBoost の 0.72 バージョンを使用するには、サンプルコードのバージョンを 0.72 に変更する必要があります。でサンプルを実行するために使用できる Jupyter Notebook インスタンスを作成してアクセスする方法については SageMaker、「」を参照してくださいAmazon SageMaker Notebook インスタンス。ノートブックインスタンスを作成して開いたら、SageMaker「例」タブを選択して、すべての SageMaker サンプルのリストを表示します。XGBoost アルゴリズムを使用したトピックモデリングのサンプルノートブックは、[Introduction to Amazon algorithm (Amazon アルゴリズムの概要)] セクションにあります。ノートブックを開くには、その [Use (使用)] タブをクリックして [Create copy (コピーを作成)] を選択します。

XGBoost リリース 0.72 のハイパーパラメータ

XGBoost アルゴリズムのハイパーパラメータを以下の表に示します。これらは、データからモデルパラメータを推定しやすくするためにユーザが設定するパラメータです。設定の必要がある必須ハイパーパラメータは、アルファベット順に最初に一覧表示されています。設定可能なオプションのハイパーパラメータは、アルファベット順に次に一覧表示されています。 SageMaker XGBoost アルゴリズムは、オープンソースの XGBoost パッケージの実装です。現在、 バージョン 0.72 SageMaker をサポートしています。このバージョンの XGBoost のハイパーパラメータ設定の詳細については、「XGBoost パラメータ」を参照してください。

Parameter Name 説明
num_class

クラスの数。

objectivemulti:softmax または multi:softprob に設定されている場合は必須

有効な値: 整数

num_round

トレーニングを実行するラウンド数。

必須

有効な値: 整数

alpha

重みに対する L1 正規化項。この値を大きくすると、モデルがより控えめになります。

オプション

有効な値: 浮動小数点数

デフォルト値: 0

base_score

すべてのインスタンスの初期予測スコア、全体的な偏り。

オプション

有効な値: 浮動小数点数

デフォルト値: 0.5

booster

使用するブースター。gbtree 値と dart 値はツリー型のモデルを使用し、gblinear は一次関数を使用します。

オプション

有効な値: 文字列。gbtreegblineardart のいずれか 1 つ。

デフォルト値: gbtree

colsample_bylevel

各レベルにおける、各分割の列のサブサンプル率。

オプション

有効な値: 浮動小数点数。範囲: [0,1]。

デフォルト値: 1

colsample_bytree

各ツリーを構築する際の列のサブサンプル率。

オプション

有効な値: 浮動小数点数。範囲: [0,1]。

デフォルト値: 1

csv_weights

このフラグを有効にすると、XGBoost は、トレーニングデータの 2 列目 (ラベルの後の列) をインスタンスの重みとして使用して、csv 入力のインスタンスの重要性を区別します。

オプション

有効な値: 0 または 1

デフォルト値: 0

early_stopping_rounds

検証スコアに改善が見られなくなるまでモデルのトレーニングが行われます。トレーニングを続行するには、少なくとも early_stopping_rounds ごとに検証エラーが減少する必要があります。 SageMaker ホスティングは、推論に最適なモデルを使用します。

オプション

有効な値: 整数

デフォルト値: -

eta

過剰適合を防ぐために更新で使用されるステップサイズの縮小。各ブースティングステップ後、新しい特徴の重みを直接取得できます。eta パラメータは実際に特徴の重みを縮小して、ブースティング処理をより控えめにします。

オプション

有効な値: 浮動小数点数。範囲: [0,1]。

デフォルト値: 0.3

eval_metric

検証データの検証メトリクス。目標に応じてデフォルトのメトリクスが割り当てられます。

  • rmse: 回帰の場合

  • error: 分類の場合

  • map: ランク付けの場合

有効な入力のリストについては、XGBoost Parameters (XGBoost パラメータ) を参照してください。

オプション

有効な値: 文字列

デフォルト値: 目標に基づくデフォルト

gamma

ツリーのリーフノードに追加のパーティションを作成するために必要な損失低減の最小値。数値が大きいほど、アルゴリズムはより控えめになります。

オプション

有効な値: 浮動小数点数。範囲: [0,∞)。

デフォルト値: 0

grow_policy

ツリーに新しいノードを追加する方法を制御します。現在、tree_methodhist に設定されている場合にのみサポートされます。

オプション

有効な値: 文字列。depthwise または lossguide です。

デフォルト値: depthwise

lambda

重みに対する L2 正規化項。この値を大きくすると、モデルがより控えめになります。

オプション

有効な値: 浮動小数点数

デフォルト値: 1

lambda_bias

偏りに対する L2 正規化項。

オプション

有効な値: 浮動小数点数。範囲: [0.0, 1.0]。

デフォルト値: 0

max_bin

連続する特徴をバケットに入れる別個のビンの最大数。tree_methodhist に設定されている場合にのみ使用されます。

オプション

有効な値: 整数

デフォルト値: 256

max_delta_step

各ツリーの重みの推定に許可されるデルタステップの最大値。正の整数が使用されている場合、更新はより保守的になります。推奨されるオプションは、ロジスティック回帰での使用です。更新を制御しやすくするには、1 ~ 10 に設定します。

オプション

有効な値: 整数。範囲: [0,∞)。

デフォルト値: 0

max_depth

ツリーの最大深度。この値を増やすとモデルがより複雑になり、過剰適合が発生しやすくなります。0 は無制限を示します。上限は grow_policy = depth-wise の場合に必須です。

オプション

有効な値: 整数。範囲: [0,∞)

デフォルト値: 6

max_leaves

追加されるノードの最大数。grow_policylossguide に設定されている場合にのみ関連します。

オプション

有効な値: 整数

デフォルト値: 0

min_child_weight

子に必要とされるインスタンスの重み (ヘッセ) の合計の最小値。ツリーのパーティション分割ステップにより、リーフノードのインスタンスの重みの合計が min_child_weight を下回る場合、構築処理は追加のパーティション分割を行わなくなります。線形回帰モデルでは、これは単に各ノードに必要とされるインスタンスの最小数に対応します。アルゴリズムが大きいほど、より控えめになります。

オプション

有効な値: 浮動小数点数。範囲: [0,∞)。

デフォルト値: 1

normalize_type

正規化アルゴリズムの種類。

オプション

有効な値: tree または forest のいずれか。

デフォルト値: tree

nthread

xgboost の実行に使用される並列スレッドの数。

オプション

有効な値: 整数

デフォルト値: スレッドの最大数。

objective

学習タスクと対応する学習目標を指定します。例: reg:logisticreg:softmaxmulti:squarederror。有効な入力の完全なリストについては、「XGBoost パラメータ」を参照してください。

オプション

有効な値: 文字列

デフォルト値: reg:squarederror

one_drop

このフラグを有効にすると、ドロップアウト中に常に 1 つ以上のツリーがドロップされます。

オプション

有効な値: 0 または 1

デフォルト値: 0

process_type

実行するブースティング処理の種類。

オプション

有効な値: 文字列。default または update です。

デフォルト値: default

rate_drop

ドロップアウト中にドロップする、前のツリーの割合を指定するドロップアウト率。

オプション

有効な値: 浮動小数点数。範囲: [0.0, 1.0]。

デフォルト値: 0.0

refresh_leaf

これは、'更新' アップデータープラグインのパラメータです。true (1) に設定すると、ツリーのリーフとツリーノードの統計情報が更新されます。false (0) に設定すると、ツリーノードの統計情報のみが更新されます。

オプション

有効な値: 0/1

デフォルト値: 1

sample_type

サンプリングアルゴリズムの種類。

オプション

有効な値: uniform または weighted

デフォルト値: uniform

scale_pos_weight

正の重みと負の重みの均衡を制御します。不均衡なクラスに役立ちます。検討する一般的な値 :sum(negative cases) / sum(positive cases)

オプション

有効な値: 浮動小数点数

デフォルト値: 1

seed

乱数シード。

オプション

有効な値: 整数

デフォルト値: 0

silent

0 は実行中のメッセージを出力する、1 はサイレントモードを意味します。

有効な値: 0 または 1

オプション

デフォルト値: 0

sketch_eps

近似貪欲アルゴリズムでのみ使用されます。これは、O(1 / sketch_eps) 個のビンに換算します。ビンの数を直接選択することと比較して、これはスケッチの精度により理論的に保証されます。

オプション

有効な値: 浮動小数点: [0, 1]。

デフォルト値: 0.03

skip_drop

ブースティングの反復中にドロップアウト手順をスキップする確率。

オプション

有効な値: 浮動小数点数。範囲: [0.0, 1.0]。

デフォルト値: 0.0

subsample

トレーニングインスタンスのサブサンプル率。0.5 に設定すると、XGBoost はツリーの成長にデータインスタンスの半分をランダムに収集します。これにより、過剰適合を防ぎます。

オプション

有効な値: 浮動小数点数。範囲: [0,1]。

デフォルト値: 1

tree_method

XGBoost で使用されるツリー構造アルゴリズム。

オプション

有効な値: autoexactapproxhist のいずれか。

デフォルト値: auto

tweedie_variance_power

Tweedie 分布の分散を制御するパラメータ。

オプション

有効な値: 浮動小数点数。範囲: (1, 2)。

デフォルト値: 1.5

updater

ツリーアップデーターが実行される順序を定義するカンマ区切りの文字列。これにより、モジュール式にツリーを構築および修正できます。

有効な入力の完全なリストについては、XGBoost Parameters (XGBoost パラメータ) を参照してください。

オプション

有効な値: カンマ区切りの文字列。

デフォルト値: grow_colmaker、prune

XGBoost リリース 0.72 モデルの調整

自動モデル調整は、ハイパーパラメータ調整とも呼ばれ、データセットのトレーニングと検証でさまざまなハイパーパラメータをテストする多数のジョブを実行して、モデルの最適なバージョンを見つけます。次の 3 つのタイプのハイパーパラメータを選択します。

  • モデルトレーニング中に最適化する学習 objective 関数

  • 検証中にモデルのパフォーマンスを評価するために使用する eval_metric

  • モデルの自動調整時に使用する一連のハイパーパラメータとそれぞれの値の範囲

アルゴリズムが計算する一連の評価メトリクスから評価メトリクスを選択します。自動モデル調整は、選択されたハイパーパラメータを検索して、評価メトリクスを最適化するモデルになる値の組み合わせを見つけます。

モデル調整の詳細については、「でモデルの自動チューニングを実行する SageMaker」を参照してください。

XGBoost リリース 0.72 アルゴリズムで計算されるメトリクス

バージョン 0.72 の XGBoost アルゴリズムは、モデルの検証に次の 9 つのメトリクスを計算します。モデルを調整するときに、これらのいずれかのメトリクスを選択してモデルを評価します。有効な eval_metric 値の完全なリストについては、「XGBoost Learning Task Parameters」(XGBoost ラーニングタスクのパラメータ) を参照してください。

メトリクス名 説明 最適化の方向
validation:auc

曲線下面積。

最大化

validation:error

#(誤ったケース)/#(すべてのケース) で計算される二項分類誤り率。

最小化

validation:logloss

負の対数尤度。

最小化

validation:mae

平均絶対誤差。

最小化

validation:map

平均精度の平均。

最大化

validation:merror

#(誤ったケース)/#(すべてのケース) で計算される複数クラス分類誤り率。

最小化

validation:mlogloss

複数クラス分類の負の対数尤度。

最小化

validation:ndcg

正規化減損累積利得。

最大化

validation:rmse

二乗平均平方根誤差。

最小化

調整可能な XGBoost リリース 0.72 のハイパーパラメータ

以下のハイパーパラメータを使用して XGBoost モデルを調整します。XGBoost のメトリクスに最も影響を与えるハイパーパラメータは、alphamin_child_weightsubsampleetanum_round です。

Parameter Name パラメータタイプ 推奨範囲
alpha

ContinuousParameterRanges

MinValue: 0、 MaxValue: 1000

colsample_bylevel

ContinuousParameterRanges

MinValue: 0.1、 MaxValue: 1

colsample_bytree

ContinuousParameterRanges

MinValue: 0.5、 MaxValue: 1

eta

ContinuousParameterRanges

MinValue: 0.1、 MaxValue: 0.5

gamma

ContinuousParameterRanges

MinValue: 0、 MaxValue: 5

lambda

ContinuousParameterRanges

MinValue: 0、 MaxValue: 1000

max_delta_step

IntegerParameterRanges

[0, 10]

max_depth

IntegerParameterRanges

[0, 10]

min_child_weight

ContinuousParameterRanges

MinValue: 0、 MaxValue: 120

num_round

IntegerParameterRanges

[1, 4000]

subsample

ContinuousParameterRanges

MinValue: 0.5、 MaxValue: 1