翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
XGBoost バージョン 0.72
重要
XGBoost 0.72 は Amazon SageMaker AI によって廃止されました。この古いバージョンの XGBoost は、次のコードサンプルに示すように、そのイメージ URI をプルすることで引き続き組み込みアルゴリズムとして使用できます。XGBoost の場合、:1
で終わるイメージ URI は古いバージョン用です。
新しいバージョンを使用する場合、イメージ URI タグを明示的に指定する必要があります (「サポートバージョン」を参照)。
Amazon SageMaker AI XGBoost アルゴリズムの以前のリリースは、0.72 リリースに基づいています。XGBoost
お客様は、Amazon SageMaker AI を使用した XGBoost アルゴリズム の新しいリリースの使用を検討する必要があります。SageMaker AI の組み込みアルゴリズムとして、または通常 Tensorflow 深層学習フレームワークを使用する場合と同様に、ローカル環境でスクリプトを実行するフレームワークとして使用できます。この新しい実装では、メモリのフットプリントは縮小し、ロギングは強化され、ハイパーパラメータ検証は向上し、メトリクスセットは拡張されています。新しいバージョンへの移行を先延ばしにする必要がある場合は、XGBoost の以前の実装を引き続き利用することができます。ただし、この以前の実装は、XGBoost の 0.72 リリースに関連付けられたままになります。
XGBoost リリース 0.72 の入出力インターフェイス
勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。
XGBoost の SageMaker AI 実装は、トレーニングと推論のための 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 AI アルゴリズムとは異なります。
CSV トレーニング入力モードの場合、アルゴリズムで使用できるメモリの合計 (インスタントカウント * InstanceType
で使用できるメモリ) でトレーニングデータセットを保持できる必要があります。libsvm トレーニング入力モードの場合、これは必須ではありませんが推奨されます。
SageMaker AI XGBoost は Python pickle モジュールを使用してモデルをシリアル化/逆シリアル化します。これはモデルの保存/ロードに使用できます。
SageMaker AI 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 AI 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 AI XGBoost は現在、CPUs。これは (CPU バウンドではなく) メモリバウンドアルゴリズムです。したがって、コンピューティング最適化インスタンス (C4 など) よりも汎用コンピューティングインスタンス (M4 など) を選択することを推奨します。さらに、トレーニングデータを保持するために、選択したインスタンスに十分なメモリを用意することを推奨します。メインメモリに収まらないデータについてはディスク容量を使用できますが (libsvm 入力モードで利用できる out-of-core 機能)、ディスクにキャッシュファイルを書き込むとアルゴリズムの処理速度が低下します。
XGBoost リリース 0.72 のサンプルノートブック
SageMaker AI XGBoost の最新バージョンを組み込みアルゴリズムとして使用して回帰モデルをトレーニングおよびホストする方法を示すサンプルノートブックについては、Amazon SageMaker AI XGBoost アルゴリズムを使用した回帰
XGBoost リリース 0.72 のハイパーパラメータ
XGBoost アルゴリズムのハイパーパラメータを以下の表に示します。これらは、データからモデルパラメータを推定しやすくするためにユーザが設定するパラメータです。設定の必要がある必須ハイパーパラメータは、アルファベット順に最初に一覧表示されています。設定可能なオプションのハイパーパラメータは、アルファベット順に次に一覧表示されています。SageMaker AI XGBoost アルゴリズムは、オープンソースの XGBoost パッケージの実装です。現在、SageMaker AI はバージョン 0.72 をサポートしています。このバージョンの XGBoost のハイパーパラメータ設定の詳細については、「XGBoost パラメータ
Parameter Name | 説明 |
---|---|
num_class |
クラスの数。
有効な値: 整数 |
num_round |
トレーニングを実行するラウンド数。 必須 有効な値: 整数 |
alpha |
重みに対する L1 正規化項。この値を大きくすると、モデルがより控えめになります。 オプション 有効な値: 浮動小数点数 デフォルト値: 0 |
base_score |
すべてのインスタンスの初期予測スコア、全体的な偏り。 オプション 有効な値: 浮動小数点数 デフォルト値: 0.5 |
booster |
使用するブースター。 オプション 有効な値: 文字列。 デフォルト値: |
colsample_bylevel |
各レベルにおける、各分割の列のサブサンプル率。 オプション 有効な値: 浮動小数点数。範囲: [0,1]。 デフォルト値: 1 |
colsample_bytree |
各ツリーを構築する際の列のサブサンプル率。 オプション 有効な値: 浮動小数点数。範囲: [0,1]。 デフォルト値: 1 |
csv_weights |
このフラグを有効にすると、XGBoost は、トレーニングデータの 2 列目 (ラベルの後の列) をインスタンスの重みとして使用して、csv 入力のインスタンスの重要性を区別します。 オプション 有効な値: 0 または 1 デフォルト値: 0 |
early_stopping_rounds |
検証スコアに改善が見られなくなるまでモデルのトレーニングが行われます。トレーニングを続行するには、少なくとも オプション 有効な値: 整数 デフォルト値: - |
eta |
過剰適合を防ぐために更新で使用されるステップサイズの縮小。各ブースティングステップ後、新しい特徴の重みを直接取得できます。 オプション 有効な値: 浮動小数点数。範囲: [0,1]。 デフォルト値: 0.3 |
eval_metric |
検証データの検証メトリクス。目標に応じてデフォルトのメトリクスが割り当てられます。
有効な入力のリストについては、XGBoost Parameters (XGBoost パラメータ) オプション 有効な値: 文字列 デフォルト値: 目標に基づくデフォルト |
gamma |
ツリーのリーフノードに追加のパーティションを作成するために必要な損失低減の最小値。数値が大きいほど、アルゴリズムはより控えめになります。 オプション 有効な値: 浮動小数点数。範囲: [0,∞)。 デフォルト値: 0 |
grow_policy |
ツリーに新しいノードを追加する方法を制御します。現在、 オプション 有効な値: 文字列。 デフォルト値: |
lambda |
重みに対する L2 正規化項。この値を大きくすると、モデルがより控えめになります。 オプション 有効な値: 浮動小数点数 デフォルト値: 1 |
lambda_bias |
偏りに対する L2 正規化項。 オプション 有効な値: 浮動小数点数。範囲: [0.0, 1.0]。 デフォルト値: 0 |
max_bin |
連続する特徴をバケットに入れる別個のビンの最大数。 オプション 有効な値: 整数 デフォルト値: 256 |
max_delta_step |
各ツリーの重みの推定に許可されるデルタステップの最大値。正の整数が使用されている場合、更新はより保守的になります。推奨されるオプションは、ロジスティック回帰での使用です。更新を制御しやすくするには、1 ~ 10 に設定します。 オプション 有効な値: 整数。範囲: [0,∞)。 デフォルト値: 0 |
max_depth |
ツリーの最大深度。この値を増やすとモデルがより複雑になり、過剰適合が発生しやすくなります。0 は無制限を示します。上限は オプション 有効な値: 整数。範囲: [0,∞) デフォルト値: 6 |
max_leaves |
追加されるノードの最大数。 オプション 有効な値: 整数 デフォルト値: 0 |
min_child_weight |
子に必要とされるインスタンスの重み (ヘッセ) の合計の最小値。ツリーのパーティション分割ステップにより、リーフノードのインスタンスの重みの合計が オプション 有効な値: 浮動小数点数。範囲: [0,∞)。 デフォルト値: 1 |
normalize_type |
正規化アルゴリズムの種類。 オプション 有効な値: tree または forest のいずれか。 デフォルト値: tree |
nthread |
xgboost の実行に使用される並列スレッドの数。 オプション 有効な値: 整数 デフォルト値: スレッドの最大数。 |
objective |
学習タスクと対応する学習目標を指定します。例: オプション 有効な値: 文字列 デフォルト値: |
one_drop |
このフラグを有効にすると、ドロップアウト中に常に 1 つ以上のツリーがドロップされます。 オプション 有効な値: 0 または 1 デフォルト値: 0 |
process_type |
実行するブースティング処理の種類。 オプション 有効な値: 文字列。 デフォルト値: |
rate_drop |
ドロップアウト中にドロップする、前のツリーの割合を指定するドロップアウト率。 オプション 有効な値: 浮動小数点数。範囲: [0.0, 1.0]。 デフォルト値: 0.0 |
refresh_leaf |
これは、'更新' アップデータープラグインのパラメータです。 オプション 有効な値: 0/1 デフォルト値: 1 |
sample_type |
サンプリングアルゴリズムの種類。 オプション 有効な値: デフォルト値: |
scale_pos_weight |
正の重みと負の重みの均衡を制御します。不均衡なクラスに役立ちます。検討する一般的な値 : オプション 有効な値: 浮動小数点数 デフォルト値: 1 |
seed |
乱数シード。 オプション 有効な値: 整数 デフォルト値: 0 |
silent |
0 は実行中のメッセージを出力する、1 はサイレントモードを意味します。 有効な値: 0 または 1 オプション デフォルト値: 0 |
sketch_eps |
近似貪欲アルゴリズムでのみ使用されます。これは、O(1 / オプション 有効な値: 浮動小数点: [0, 1]。 デフォルト値: 0.03 |
skip_drop |
ブースティングの反復中にドロップアウト手順をスキップする確率。 オプション 有効な値: 浮動小数点数。範囲: [0.0, 1.0]。 デフォルト値: 0.0 |
subsample |
トレーニングインスタンスのサブサンプル率。0.5 に設定すると、XGBoost はツリーの成長にデータインスタンスの半分をランダムに収集します。これにより、過剰適合を防ぎます。 オプション 有効な値: 浮動小数点数。範囲: [0,1]。 デフォルト値: 1 |
tree_method |
XGBoost で使用されるツリー構造アルゴリズム。 オプション 有効な値: デフォルト値: |
tweedie_variance_power |
Tweedie 分布の分散を制御するパラメータ。 オプション 有効な値: 浮動小数点数。範囲: (1, 2)。 デフォルト値: 1.5 |
updater |
ツリーアップデーターが実行される順序を定義するカンマ区切りの文字列。これにより、モジュール式にツリーを構築および修正できます。 有効な入力の完全なリストについては、XGBoost Parameters (XGBoost パラメータ) オプション 有効な値: カンマ区切りの文字列。 デフォルト値: |
XGBoost リリース 0.72 モデルの調整
自動モデル調整は、ハイパーパラメータ調整とも呼ばれ、データセットのトレーニングと検証でさまざまなハイパーパラメータをテストする多数のジョブを実行して、モデルの最適なバージョンを見つけます。次の 3 つのタイプのハイパーパラメータを選択します。
-
モデルトレーニング中に最適化する学習
objective
関数 -
検証中にモデルのパフォーマンスを評価するために使用する
eval_metric
-
モデルの自動調整時に使用する一連のハイパーパラメータとそれぞれの値の範囲
アルゴリズムが計算する一連の評価メトリクスから評価メトリクスを選択します。自動モデル調整は、選択されたハイパーパラメータを検索して、評価メトリクスを最適化するモデルになる値の組み合わせを見つけます。
モデル調整の詳細については、「SageMaker AI による自動モデル調整」を参照してください。
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 のメトリクスに最も影響を与えるハイパーパラメータは、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 |