XGBoost バージョン 0.72 - Amazon SageMaker

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

XGBoost バージョン 0.72

重要

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

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 が回帰、分類 (バイナリとマルチクラス)、ランキングの問題に対して推奨される選択肢になります。

お客様は、XGBoost アルゴリズム の新しいリリースの使用を検討する必要があります。たとえば、Tensorflow 深層学習フレームワークで通常行うように、SageMaker 組み込みアルゴリズムとして、またはローカル環境でスクリプトを実行するフレームワークとして使用できます。この新しい実装では、メモリのフットプリントは縮小し、ロギングは強化され、ハイパーパラメータ検証は向上し、メトリクスセットは拡張されています。新しいバージョンへの移行を先延ばしにする必要がある場合は、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 データ形式とより一貫性を保つためにトレーニングの入力にプロトコルバッティング形式を使用する、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 では CPU を使用したトレーニングのみ行うことができます。これは (CPU バウンドではなく) メモリバウンドアルゴリズムです。したがって、コンピューティング最適化インスタンス (C4 など) よりも汎用コンピューティングインスタンス (M4 など) を選択することを推奨します。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。メインメモリに収まらないデータについてはディスク容量を使用できますが (libsvm 入力モードで利用できる out-of-core 機能)、ディスクにキャッシュファイルを書き込むとアルゴリズムの処理速度が低下します。

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

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

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

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

パラメータ名 説明
num_class

クラスの数。

必須ifobjectiveは、 に設定されます。マルチ:ソフトマックスまたはマルチ:ソフトプローブ

有効な値: 整数

num_round

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

必須

有効な値: 整数

alpha

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

オプション

有効な値: 浮動小数点数

デフォルト値: 0

base_score

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

オプション

有効な値: 浮動小数点数

デフォルト値: 0.5

booster

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

オプション

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

デフォルト値: gbtree

colsample_bylevel

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

オプション

有効な値: Float S 範囲: [0,1]。

デフォルト値: 1

colsample_bytree

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

オプション

有効な値: Float S 範囲: [0,1]。

デフォルト値: 1

csv_weights

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

オプション

有効な値: 0 または 1

デフォルト値: 0

early_stopping_rounds

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

オプション

有効な値: 整数

デフォルト値: -

eta

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

オプション

有効な値: Float S 範囲: [0,1]。

デフォルト値: 0.3

eval_metric

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

  • rmse: 回帰の場合

  • error: 分類の場合

  • map: ランク付けの場合

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

オプション

有効な値: 文字列

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

gamma

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

オプション

有効な値: Float S 範囲: [0, ∞)。

デフォルト値: 0

grow_policy

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

オプション

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

デフォルト値: depthwise

lambda

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

オプション

有効な値: 浮動小数点数

デフォルト値: 1

lambda_bias

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

オプション

有効な値: Float S 範囲: [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 を下回る場合、構築処理は追加のパーティション分割を行わなくなります。線形回帰モデルでは、これは単に各ノードに必要とされるインスタンスの最小数に対応します。アルゴリズムが大きいほど、より控えめになります。

オプション

有効な値: Float S 範囲: [0, ∞)。

デフォルト値: 1

normalize_type

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

オプション

有効な値: 次のいずれかを実行しますツリーまたは森林

デフォルト値: tree

nthread

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

オプション

有効な値: 整数

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

objective

学習タスクと対応する学習目標を指定します。例: reg:logistic,reg:softmax,multi:squarederror。 有効な入力の完全なリストについては、有効な入力の完全なリストについては、XGBoost パラメータ

オプション

有効な値: 文字列

デフォルト値: reg:squarederror

one_drop

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

オプション

有効な値: 0 または 1

デフォルト値: 0

process_type

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

オプション

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

デフォルト値: default

rate_drop

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

オプション

有効な値: Float S 範囲: [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

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

オプション

有効な値: Float S 範囲: [0.0, 1.0]。

デフォルト値: 0.0

subsample

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

オプション

有効な値: Float S 範囲: [0,1]。

デフォルト値: 1

tree_method

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

オプション

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

デフォルト値: auto

tweedie_variance_power

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

オプション

有効な値: Float S 範囲: (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 つのメトリクスを計算します。モデルを調整するときに、これらのメトリクスの 1 つを選択してモデルを評価します。有効なeval_metric値については、XgBoost ラーニングタスクパラメータ

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

曲線下面積。

最大化

validation:error

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

最小化

validation:logloss

負の対数尤度。

最小化

validation:mae

平均絶対誤差。

最小化

validation:map

平均精度の平均。

最大化

validation:merror

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

最小化

validation:mlogloss

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

最小化

validation:ndcg

正規化減損累積利得。

最大化

validation:rmse

二乗平均平方根誤差。

最小化

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

以下のハイパーパラメータを使用して XGBoost モデルを調整します。XGBoost 評価メトリクスを最適化する上で最も大きな影響を与えるハイパーパラメータは、次のとおりです。alpha,min_child_weight,subsample,eta, およびnum_round

パラメータ名 パラメータータイプ 推奨範囲
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