勾配ブースティング決定木 (GBDT) は、線形および非線形回帰シナリオに適した反復決定木アルゴリズムである。
コンポーネントの設定
次のいずれかの方法を使用して、GBDT回帰コンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
GBDT回帰コンポーネントのパラメーターは、Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | 入力列 | トレーニング用に入力テーブルから選択されたフィーチャ列。 DOUBLE型とBIGINT型の列はサポートされています。 説明 最大800個のフィーチャ列を選択できます。 |
ラベル列 | ラベル列。 DOUBLE型とBIGINT型の列がサポートされています。 | |
グループ列 | DOUBLE型とBIGINT型の列がサポートされています。 デフォルトでは、テーブル全体はグループです。 | |
パラメーター設定 | 損失関数タイプ | 損失関数のタイプ。 有効値: Gbrank Loss、Lambdamart DCG Loss、Lambdamart NDCG Loss、および回帰Loss。 |
gbrank損失のタウ | このパラメーターは、Loss Function TypeパラメーターがGbrank Lossに設定されている場合にのみ必要です。 有効な値: [0,1] 。 | |
Gbrankと回帰損失の指数ベース | このパラメーターは、Loss Function TypeパラメーターがGbrank LossまたはRegression Lossに設定されている場合にのみ必要です。 有効な値: [1,10] 。 | |
メトリックタイプ | メトリックタイプ。 有効な値: NDCGおよびDCG。 | |
決定木の数 | 木の数。 有効な値: 1 ~ 10000 | |
学習率 | 学習率。 有効値: (0,1) | |
最大リーフ数量 | 各ツリーのリーフノードの最大数。 有効な値: 1 ~ 1000 | |
最大決定ツリーの深さ | 各ツリーの最大深さ。 設定可能な値は 1~100 です。 | |
リーフノードの最小サンプル量 | 各リーフノードの最小サンプル数。 有効な値: 1 ~ 1000 | |
サンプル比 | トレーニングのために選択されたサンプルの割合。 有効値: (0,1) | |
特徴の比率 | トレーニングのために選択された特徴の割合。 有効値: (0,1) | |
サンプル比 | テスト用に選択されたサンプルの割合。 有効な値: [0,1] | |
ランダムシード | ランダムシード。 有効な値: [0,10] 。 | |
ニュートン-ラフソン法を使う | ニュートンのメソッドを使用するかどうかを指定します。 | |
最大機能分割時間 | 各フィーチャの最大分割数。 有効な値: 1 ~ 1000 | |
チューニング | コンピューティングコア数 | コアの数。 システムは、入力データの量に基づいてコアを自動的に割り当てます。 |
コアあたりのメモリサイズ | 各コアのメモリサイズ。 システムは、入力データの量に基づいてメモリを自動的に割り当てます。 単位:MB。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
PAI -name gbdt
-project algo_public
-DfeatureSplitValueMaxSize="500"
-DlossType="0"
-DrandSeed="0"
-DnewtonStep="0"
-Dshrinkage="0.05"
-DmaxLeafCount="32"
-DlabelColName="campaign"
-DinputTableName="bank_data_partition"
-DminLeafSampleCount="500"
-DsampleRatio="0.6"
-DgroupIDColName="age"
-DmaxDepth="11"
-DmodelName="xlab_m_GBDT_83602"
-DmetricType="2"
-DfeatureRatio="0.6"
-DinputTablePartitions="pt=20150501"
-Dtau="0.6"
-Dp="1"
-DtestRatio="0.0"
-DfeatureColNames="previous,cons_conf_idx,euribor3m"
-DtreeCount="500"
パラメーター | 必須 | 説明 | デフォルト値 |
inputTableName | 可 | 入力テーブルの名前。 | N/A |
featureColNames | 不可 | トレーニング用に入力テーブルから選択されたフィーチャ列。 DOUBLE型とBIGINT型の列がサポートされています。 | 数値データ型のすべての列 |
labelColName | 可 | 入力テーブルのラベル列。 DOUBLE型とBIGINT型の列がサポートされています。 | N/A |
inputTablePartitions | 不可 | トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターを次のいずれかの形式で指定します。
説明 複数のパーティションを指定する場合は、これらのパーティションをコンマ (,) で区切ります。 | すべてのパーティション |
modelName | 可 | 出力モデルの名前。 | N/A |
outputImportanceTableName | 不可 | 機能の重要性を提供するテーブルの名前。 | N/A |
groupIDColName | 不可 | グループ列の名前。 | フルテーブル |
lossType | 不可 | 損失関数のタイプ。 有効な値:
| 0 |
metricType | 不可 | メトリックタイプ。 有効な値:
| 0 |
treeCount | 不可 | 木の数。 有効な値: 1 ~ 10000 | 500 |
収缩 | 不可 | 学習率。 有効値: (0,1) | 0.05 |
maxLeafCount | 不可 | 各ツリーのリーフノードの最大数。 有効な値: 1 ~ 1000 | 32 |
maxDepth | 不可 | 各ツリーの最大深さ。 設定可能な値は 1~100 です。 | 10 |
minLeafSampleCount | 不可 | 各リーフノードの最小サンプル数。 有効な値: 1 ~ 1000 | 500 |
sampleRatio | 不可 | トレーニングのために選択されたサンプルの割合。 有効値: (0,1) | 0.6 |
featureRatio | 不可 | トレーニングのために選択された特徴の割合。 有効値: (0,1) | 0.6 |
タウ | 不可 | GBRank損失関数のTauパラメーター。 有効な値: [0,1] 。 | 0.6 |
p | 不可 | GBRank損失関数のpパラメーター。 有効な値: [1,10] 。 | 1 |
randSeed | 不可 | ランダムシード。 有効な値: [0,10] 。 | 0 |
newtonStep | 不可 | ニュートンのメソッドを使用するかどうかを指定します。 有効な値: 0と1 | 1 |
featureSplitValueMaxSize | 不可 | 各フィーチャの最大分割数。 有効な値: 1 ~ 1000 | 500 |
ライフサイクル | 不可 | 出力テーブルのライフサイクル。 | N/A |
例:
次のSQL文を実行してテストデータを生成します。
drop table if exists gbdt_ls_test_input; create table gbdt_ls_test_input as select * from ( select cast(1 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label union all select cast(0 as double) as f0, cast(1 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label union all select cast(0 as double) as f0, cast(0 as double) as f1, cast(1 as double) as f2, cast(0 as double) as f3, cast(1 as bigint) as label union all select cast(0 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(1 as double) as f3, cast(1 as bigint) as label union all select cast(1 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label union all select cast(0 as double) as f0, cast(1 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label ) a;
次のテストデータテーブルgbdt_ls_test_inputが生成されます。
f0
f1
f2
f3
ラベル
1.0
0.0
0.0
0.0
0
0.0
0.0
1.0
0.0
1
0.0
0.0
0.0
1.0
1
0.0
1.0
0.0
0.0
0
1.0
0.0
0.0
0.0
0
0.0
1.0
0.0
0.0
0
次のPAIコマンドを実行して、GBDT Regressionコンポーネントに設定されたトレーニングパラメータを送信します。
gbdt_ls_test_modelが存在する場合は、オフラインモデルをドロップし
drop offlinemodel if exists gbdt_ls_test_model; PAI -name gbdt -project algo_public -DfeatureSplitValueMaxSize="500" -DlossType="3" -DrandSeed="0" -DnewtonStep="1" -Dshrinkage="0.5" -DmaxLeafCount="32" -DlabelColName="label" -DinputTableName="gbdt_ls_test_input" -DminLeafSampleCount="1" -DsampleRatio="1" -DmaxDepth="10" -DmetricType="0" -DmodelName="gbdt_ls_test_model" -DfeatureRatio="1" -Dp="1" -Dtau="0.6" -DtestRatio="0" -DfeatureColNames="f0,f1,f2,f3" -DtreeCount="10"
次のPAIコマンドを実行して、予測コンポーネントに設定されたパラメーターを送信します。
drop table if exists gbdt_ls_test_prediction_result; PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DmodelName="gbdt_ls_test_model" -DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" -DoutputTableName="gbdt_ls_test_prediction_result" -DscoreColName="prediction_score" -DkvDelimiter=":" -DinputTableName="gbdt_ls_test_input" -DenableSparse="false" -DappendColNames="label"
予測結果テーブルgbdt_ls_test_prediction_resultを表示します。
ラベル
prediction_result
prediction_score
予測_詳細
0
NULL
0.0
{"label": 0}
0
NULL
0.0
{"label": 0}
1
NULL
0.9990234375
{"label": 0.9990234375}
1
NULL
0.9990234375
{"label": 0.9990234375}
0
NULL
0.0
{"label": 0}
0
NULL
0.0
{"label": 0}