

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

# XGBoost バージョン 0.72
<a name="xgboost-72"></a>

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

```
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")
```

```
import boto3
from sagemaker import image_uris

xgb_image_uri = image_uris.retrieve("xgboost", boto3.Session().region_name, "1")
```
新しいバージョンを使用する場合、イメージ URI タグを明示的に指定する必要があります (「[サポートバージョン](xgboost.md#xgboost-supported-versions)」を参照)。

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

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

## XGBoost リリース 0.72 の入出力インターフェイス
<a name="xgboost-72-InputOutput"></a>

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

SageMaker AI の XGBoost の実装では、トレーニングと推論に 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 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 インスタンスに関する推奨事項
<a name="xgboost-72-Instance"></a>

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

## XGBoost リリース 0.72 のサンプルノートブック
<a name="xgboost-72-sample-notebooks"></a>

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

## XGBoost リリース 0.72 のハイパーパラメータ
<a name="xgboost-72-hyperparameters"></a>

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


| Parameter Name | 説明 | 
| --- | --- | 
| num\_class | クラスの数。<br />`objective` が *multi:softmax* または *multi:softprob* に設定されている場合は**必須**。<br />有効な値: 整数 | 
| num\_round | トレーニングを実行するラウンド数。<br />**必須**<br />有効な値: 整数 | 
| alpha | 重みに対する L1 正規化項。この値を大きくすると、モデルがより控えめになります。<br />**オプション**<br />有効な値: 浮動小数点数<br />デフォルト値: 0 | 
| base\_score | すべてのインスタンスの初期予測スコア、全体的な偏り。<br />**オプション**<br />有効な値: 浮動小数点数<br />デフォルト値: 0.5 | 
| booster | 使用するブースター。`gbtree` 値と `dart` 値はツリー型のモデルを使用し、`gblinear` は一次関数を使用します。<br />**オプション**<br />有効な値： 文字列。`gbtree`、`gblinear`、`dart` のいずれか 1 つ。<br />デフォルト値: `gbtree` | 
| colsample\_bylevel | 各レベルにおける、各分割の列のサブサンプル率。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,1]。<br />デフォルト値： 1 | 
| colsample\_bytree | 各ツリーを構築する際の列のサブサンプル率。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,1]。<br />デフォルト値： 1 | 
| csv\_weights | このフラグを有効にすると、XGBoost は、トレーニングデータの 2 列目 (ラベルの後の列) をインスタンスの重みとして使用して、csv 入力のインスタンスの重要性を区別します。<br />**オプション**<br />有効な値: 0 または 1<br />デフォルト値: 0 | 
| early\_stopping\_rounds | 検証スコアに改善が見られなくなるまでモデルのトレーニングが行われます。トレーニングを続行するには、少なくとも `early_stopping_rounds` ごとに検証エラーが減少する必要があります。SageMaker AI ホスティングは推論に最適なモデルを使用します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: - | 
| eta | 過剰適合を防ぐために更新で使用されるステップサイズの縮小。各ブースティングステップ後、新しい特徴の重みを直接取得できます。`eta` パラメータは実際に特徴の重みを縮小して、ブースティング処理をより控えめにします。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,1]。<br />デフォルト値: 0.3 | 
| eval\_metric | 検証データの検証メトリクス。目標に応じてデフォルトのメトリクスが割り当てられます。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/xgboost-72.html)<br />有効な入力のリストについては、[XGBoost Parameters (XGBoost パラメータ)](https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst#learning-task-parameters) を参照してください。<br />**オプション**<br />有効な値: 文字列<br />デフォルト値: 目標に基づくデフォルト | 
| gamma | ツリーのリーフノードに追加のパーティションを作成するために必要な損失低減の最小値。数値が大きいほど、アルゴリズムはより控えめになります。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,∞)。<br />デフォルト値: 0 | 
| grow\_policy | ツリーに新しいノードを追加する方法を制御します。現在、`tree_method` が `hist` に設定されている場合にのみサポートされます。<br />**オプション**<br />有効な値： 文字列。`depthwise` または `lossguide` です。<br />デフォルト値: `depthwise` | 
| lambda | 重みに対する L2 正規化項。この値を大きくすると、モデルがより控えめになります。<br />**オプション**<br />有効な値: 浮動小数点数<br />デフォルト値： 1 | 
| lambda\_bias | 偏りに対する L2 正規化項。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0.0, 1.0]。<br />デフォルト値: 0 | 
| max\_bin | 連続する特徴をバケットに入れる別個のビンの最大数。`tree_method` が `hist` に設定されている場合にのみ使用されます。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: 256 | 
| max\_delta\_step | 各ツリーの重みの推定に許可されるデルタステップの最大値。正の整数が使用されている場合、更新はより保守的になります。推奨されるオプションは、ロジスティック回帰での使用です。更新を制御しやすくするには、1 ～ 10 に設定します。<br />**オプション**<br />有効な値: 整数。範囲: [0,∞)。<br />デフォルト値: 0 | 
| max\_depth | ツリーの最大深度。この値を増やすとモデルがより複雑になり、過剰適合が発生しやすくなります。0 は無制限を示します。上限は `grow_policy` = `depth-wise` の場合に必須です。<br />**オプション**<br />有効な値: 整数。範囲: [0,∞)<br />デフォルト値: 6 | 
| max\_leaves | 追加されるノードの最大数。`grow_policy` が `lossguide` に設定されている場合にのみ関連します。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: 0 | 
| min\_child\_weight | 子に必要とされるインスタンスの重み (ヘッセ) の合計の最小値。ツリーのパーティション分割ステップにより、リーフノードのインスタンスの重みの合計が `min_child_weight` を下回る場合、構築処理は追加のパーティション分割を行わなくなります。線形回帰モデルでは、これは単に各ノードに必要とされるインスタンスの最小数に対応します。アルゴリズムが大きいほど、より控えめになります。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,∞)。<br />デフォルト値： 1 | 
| normalize\_type | 正規化アルゴリズムの種類。<br />**オプション**<br />有効な値: *tree* または *forest* のいずれか。<br />デフォルト値: *tree* | 
| nthread | *xgboost* の実行に使用される並列スレッドの数。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: スレッドの最大数。 | 
| objective | 学習タスクと対応する学習目標を指定します。例: `reg:logistic`、`reg:softmax`、`multi:squarederror`。有効な入力の完全なリストについては、「[XGBoost パラメータ](https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst#learning-task-parameters)」を参照してください。<br />**オプション**<br />有効な値: 文字列<br />デフォルト値: `reg:squarederror` | 
| one\_drop | このフラグを有効にすると、ドロップアウト中に常に 1 つ以上のツリーがドロップされます。<br />**オプション**<br />有効な値: 0 または 1<br />デフォルト値: 0 | 
| process\_type | 実行するブースティング処理の種類。<br />**オプション**<br />有効な値： 文字列。`default` または `update` です。<br />デフォルト値: `default` | 
| rate\_drop | ドロップアウト中にドロップする、前のツリーの割合を指定するドロップアウト率。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0.0, 1.0]。<br />デフォルト値: 0.0 | 
| refresh\_leaf | これは、'更新' アップデータープラグインのパラメータです。`true` (1) に設定すると、ツリーのリーフとツリーノードの統計情報が更新されます。`false` (0) に設定すると、ツリーノードの統計情報のみが更新されます。<br />**オプション**<br />有効な値: 0/1<br />デフォルト値： 1 | 
| sample\_type | サンプリングアルゴリズムの種類。<br />**オプション**<br />有効な値: `uniform` または `weighted`。<br />デフォルト値: `uniform` | 
| scale\_pos\_weight | 正の重みと負の重みの均衡を制御します。不均衡なクラスに役立ちます。検討する一般的な値 :`sum(negative cases)` / `sum(positive cases)`。<br />**オプション**<br />有効な値: 浮動小数点数<br />デフォルト値： 1 | 
| seed | 乱数シード。<br />**オプション**<br />有効な値: 整数<br />デフォルト値: 0 | 
| silent | 0 は実行中のメッセージを出力する、1 はサイレントモードを意味します。<br />有効な値: 0 または 1<br />**オプション**<br />デフォルト値: 0 | 
| sketch\_eps | 近似貪欲アルゴリズムでのみ使用されます。これは、O(1 / `sketch_eps`) 個のビンに換算します。ビンの数を直接選択することと比較して、これはスケッチの精度により理論的に保証されます。<br />**オプション**<br />有効な値: 浮動小数点: [0, 1]。<br />デフォルト値: 0.03 | 
| skip\_drop | ブースティングの反復中にドロップアウト手順をスキップする確率。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0.0, 1.0]。<br />デフォルト値: 0.0 | 
| subsample | トレーニングインスタンスのサブサンプル率。0.5 に設定すると、XGBoost はツリーの成長にデータインスタンスの半分をランダムに収集します。これにより、過剰適合を防ぎます。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: [0,1]。<br />デフォルト値： 1 | 
| tree\_method | XGBoost で使用されるツリー構造アルゴリズム。<br />**オプション**<br />有効な値: `auto`、`exact`、`approx`、`hist` のいずれか。<br />デフォルト値: `auto` | 
| tweedie\_variance\_power | Tweedie 分布の分散を制御するパラメータ。<br />**オプション**<br />有効な値: 浮動小数点数。範囲: (1, 2)。<br />デフォルト値: 1.5 | 
| updater | ツリーアップデーターが実行される順序を定義するカンマ区切りの文字列。これにより、モジュール式にツリーを構築および修正できます。<br />有効な入力の完全なリストについては、[XGBoost Parameters (XGBoost パラメータ)](https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst) を参照してください。<br />**オプション**<br />有効な値: カンマ区切りの文字列。<br />デフォルト値: `grow_colmaker`、prune | 

## XGBoost リリース 0.72 モデルの調整
<a name="xgboost-72-tuning"></a>

自動モデル調整は、ハイパーパラメータ調整とも呼ばれ、データセットのトレーニングと検証でさまざまなハイパーパラメータをテストする多数のジョブを実行して、モデルの最適なバージョンを見つけます。**次の 3 つのタイプのハイパーパラメータを選択します。
+ モデルトレーニング中に最適化する学習 `objective` 関数
+ 検証中にモデルのパフォーマンスを評価するために使用する `eval_metric`
+ モデルの自動調整時に使用する一連のハイパーパラメータとそれぞれの値の範囲

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

モデル調整の詳細については、「[SageMaker AI の自動モデルチューニング](automatic-model-tuning.md)」を参照してください。

### XGBoost リリース 0.72 アルゴリズムで計算されるメトリクス
<a name="xgboost-72-metrics"></a>

バージョン 0.72 の XGBoost アルゴリズムは、モデルの検証に次の 9 つのメトリクスを計算します。モデルを調整するときに、これらのいずれかのメトリクスを選択してモデルを評価します。有効な `eval_metric` 値の完全なリストについては、「[XGBoost Learning Task Parameters」(XGBoost ラーニングタスクのパラメータ](https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst#learning-task-parameters)) を参照してください。


| メトリクス名 | 説明 | 最適化の方向 | 
| --- | --- | --- | 
| validation:auc | 曲線下面積。 | 最大化 | 
| validation:error | \#(誤ったケース)/\#(すべてのケース) で計算される二項分類誤り率。 | 最小化 | 
| validation:logloss | 負の対数尤度。 | 最小化 | 
| validation:mae | 平均絶対誤差。 | 最小化 | 
| validation:map | 平均精度の平均。 | 最大化 | 
| validation:merror | \#(誤ったケース)/\#(すべてのケース) で計算される複数クラス分類誤り率。 | 最小化 | 
| validation:mlogloss | 複数クラス分類の負の対数尤度。 | 最小化 | 
| validation:ndcg | 正規化減損累積利得。 | 最大化 | 
| validation:rmse | 二乗平均平方根誤差。 | 最小化 | 

### 調整可能な XGBoost リリース 0.72 のハイパーパラメータ
<a name="xgboost-72-tunable-hyperparameters"></a>

以下のハイパーパラメータを使用して 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 | 