Gradient Boosting Decision Tree (GBDT) は高度な機械学習アルゴリズムです。このアルゴリズムは反復的な手法を用いて回帰分析のための決定木のコレクションを構築します。損失関数を段階的に最適化することで、線形および非線形の回帰問題の両方を処理し、高精度な予測結果を提供できます。
コンポーネントの設定
方法 1:ビジュアル設定
Designer ワークフロー ページに GBDT Regression コンポーネントを追加します。その後、右側のペインでパラメーターを設定します。
|
パラメータータイプ |
パラメーター |
説明 |
|
フィールド設定 |
入力列 |
トレーニングに使用する入力データソースの特徴量列です。DOUBLE 型および BIGINT 型をサポートします。 説明
特徴量列の数は 800 列を超えてはなりません。 |
|
ラベル列 |
DOUBLE 型および BIGINT 型をサポートします。 |
|
|
グループ列 |
DOUBLE 型および BIGINT 型をサポートします。デフォルトでは、テーブル全体が 1 つのグループとして扱われます。 |
|
|
パラメーター設定 |
損失関数タイプ |
サポートされるタイプは、gbrank loss、lambdamart dcg loss、lambdamart ndcg loss、および regression loss です。 |
|
gbrank loss の Tau パラメーター |
値は [0,1] の範囲内である必要があります。 |
|
|
gbrank および regression loss の指数底 |
値は [1,10] の範囲内である必要があります。 |
|
|
メトリックタイプ |
サポートされるタイプは NDCG および DCG です。 |
|
|
木の数 |
値は 1 ~ 10000 の範囲内である必要があります。 |
|
|
学習率 |
値は (0,1) の範囲内である必要があります。 |
|
|
リーフノードの最大数 |
値は 1 ~ 1000 の範囲内である必要があります。 |
|
|
木の最大深さ |
値は 1 ~ 11 の範囲内である必要があります。 |
|
|
リーフノード上の最小サンプル数 |
値は 1 ~ 1000 の範囲内である必要があります。 |
|
|
サンプル抽出比率 |
値は (0,1) の範囲内である必要があります。 |
|
|
トレーニング中の特徴量抽出比率 |
値は (0,1) の範囲内である必要があります。 |
|
|
テストサンプルの比率 |
値は [0,1) の範囲内である必要があります。 |
|
|
乱数ジェネレータのシード |
値は [0,10] の範囲内である必要があります。 |
|
|
ニュートン法を使用して学習する |
ニュートン法を使用するかどうかを指定します。 |
|
|
特徴量の最大分割数 |
値は 1 ~ 1000 の範囲内である必要があります。 |
|
|
実行チューニング |
計算コア数 |
システムは入力データ量に基づいて自動的にトレーニングインスタンス数を割り当てます。 |
|
コアあたりのメモリ |
システムは入力データ量に基づいて自動的にメモリを割り当てます。単位は MB です。 |
方法 2:PAI コマンドの使用
PAI コマンドを使用して GBDT Regression コンポーネントのパラメーターを設定します。SQL Script コンポーネントを使用して PAI コマンドを呼び出すことができます。詳細については、「SQL Script」をご参照ください。
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 |
Yes |
None |
入力テーブルの名前です。 |
|
featureColNames |
No |
All numeric columns |
トレーニングに使用する入力テーブル内の特徴量列の名前です。DOUBLE 型および BIGINT 型をサポートします。 |
|
labelColName |
Yes |
None |
入力テーブル内のラベル列の名前です。DOUBLE 型および BIGINT 型をサポートします。 |
|
inputTablePartitions |
No |
All partitions |
トレーニングに使用する入力テーブルのパーティションです。次の形式をサポートします。
説明
複数のパーティションを指定する場合は、カンマ (,) で区切ります。 |
|
modelName |
Yes |
None |
出力モデルの名前です。 |
|
outputImportanceTableName |
No |
None |
特徴量重要度の出力テーブル名です。 |
|
groupIDColName |
No |
Full table |
データのグルーピング列です。 |
|
lossType |
No |
0 |
損失関数です。次のタイプをサポートします。
|
|
metricType |
No |
0 |
タイプは以下のとおりです。
|
|
treeCount |
No |
500 |
木の数です。値は 1 ~ 10000 の範囲内である必要があります。 |
|
shrinkage |
No |
0.05 |
学習率です。値は (0,1) の範囲内である必要があります。 |
|
maxLeafCount |
No |
32 |
リーフノードの最大数です。値は 1 ~ 1000 の範囲内である必要があります。 |
|
maxDepth |
No |
10 |
木の最大深さです。値は 1 ~ 11 の範囲内である必要があります。 |
|
minLeafSampleCount |
No |
500 |
リーフノード上の最小サンプル数です。値は 1 ~ 1000 の範囲内である必要があります。 |
|
sampleRatio |
No |
0.6 |
トレーニング中のサンプル抽出比率です。値は (0,1) の範囲内である必要があります。 |
|
featureRatio |
No |
0.6 |
トレーニング中の特徴量抽出比率です。値は (0,1) の範囲内である必要があります。 |
|
tau |
No |
0.6 |
GBRank Loss の Tau パラメーターです。値は [0,1] の範囲内である必要があります。 |
|
p |
No |
1 |
GBRank Loss の p パラメーターです。値は [1,10] の範囲内である必要があります。 |
|
randSeed |
No |
0 |
乱数ジェネレータのシードです。値は [0,10] の範囲内である必要があります。 |
|
newtonStep |
No |
1 |
ニュートン反復法を使用するかどうかを指定します。値は {0,1} です。 |
|
featureSplitValueMaxSize |
No |
500 |
特徴量の最大分割数です。値は 1 ~ 1000 の範囲内である必要があります。 |
|
lifecycle |
No |
None |
出力テーブルのライフサイクルです。 |
例
-
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
label
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 コンポーネントのトレーニングパラメーターを送信します。
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 コマンドを使用して Prediction コンポーネントのパラメーターを送信します。
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 を確認します。
label
prediction_result
prediction_score
prediction_detail
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}