GBDT回歸
梯度漸進(jìn)回歸樹GBDT(Gradient Boosting Decision Tree)是一種迭代決策樹算法,適用于線性及非線性回歸場景。
組件配置
您可以使用以下任意一種方式,配置GBDT回歸組件參數(shù)。
方式一:可視化方式
在Designer工作流頁面配置組件參數(shù)。
頁簽 | 參數(shù) | 描述 |
字段設(shè)置 | 輸入列 | 輸入數(shù)據(jù)源中,參與訓(xùn)練的特征列。支持DOUBLE及BIGINT類型。 說明 特征列數(shù)量不能超過800。 |
標(biāo)簽列 | 支持DOUBLE及BIGINT類型。 | |
分組列 | 支持DOUBLE及BIGINT類型,默認(rèn)將全表作為一組。 | |
參數(shù)設(shè)置 | 損失函數(shù)類型 | 支持gbrank loss、lambdamart dcg loss、lambdamart ndcg loss及regression loss類型。 |
gbrank loss中的Tau參數(shù) | 取值范圍為[0,1]。 | |
gbrank與regression loss中的指數(shù)底數(shù) | 取值范圍為[1,10]。 | |
metric類型 | 支持NDCG及DCG類型。 | |
樹數(shù)量 | 取值范圍為1~10000。 | |
學(xué)習(xí)速率 | 取值范圍為(0,1)。 | |
最大葉子數(shù) | 取值范圍為1~1000。 | |
一棵樹的最大深度 | 取值范圍為1~100。 | |
葉子節(jié)點容納的最少樣本數(shù) | 取值范圍為1~1000。 | |
樣本采樣比例 | 取值范圍為(0,1)。 | |
訓(xùn)練中采集的特征比例 | 取值范圍為(0,1)。 | |
測試樣本數(shù)比例 | 取值范圍為[0,1)。 | |
隨機(jī)數(shù)產(chǎn)生器種子 | 取值范圍為[0,10]。 | |
是否使用newton方法來學(xué)習(xí) | 使用Newton方法的開關(guān)。 | |
一個特征分裂的最大數(shù)量 | 取值范圍為1~1000。 | |
執(zhí)行調(diào)優(yōu) | 計算核心數(shù) | 系統(tǒng)根據(jù)輸入數(shù)據(jù)量,自動分配訓(xùn)練的實例數(shù)量。 |
每個核內(nèi)存 | 系統(tǒng)根據(jù)輸入數(shù)據(jù)量,自動分配內(nèi)存。單位為MB。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數(shù)。您可以使用SQL腳本組件進(jìn)行PAI命令調(diào)用,詳情請參見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"
參數(shù) | 是否必選 | 描述 | 默認(rèn)值 |
inputTableName | 是 | 輸入表的名稱。 | 無 |
featureColNames | 否 | 輸入表中,用于訓(xùn)練的特征列名。支持DOUBLE及BIGINT類型。 | 所有數(shù)值列 |
labelColName | 是 | 輸入表中的標(biāo)簽列名,支持DOUBLE及BIGINT類型。 | 無 |
inputTablePartitions | 否 | 輸入表中,參與訓(xùn)練的分區(qū)。支持的格式包括:
說明 如果指定多個分區(qū),則使用英文逗號(,)分隔。 | 所有分區(qū) |
modelName | 是 | 輸出的模型名稱。 | 無 |
outputImportanceTableName | 否 | 輸出特征重要性的表名。 | 無 |
groupIDColName | 否 | 數(shù)據(jù)分組列。 | 全表 |
lossType | 否 | 損失函數(shù)包括以下類型:
| 0 |
metricType | 否 | 包括以下類型:
| 0 |
treeCount | 否 | 樹數(shù)量,取值范圍為1~10000。 | 500 |
shrinkage | 否 | 學(xué)習(xí)速率,取值范圍為(0,1)。 | 0.05 |
maxLeafCount | 否 | 最大葉子數(shù),取值范圍為1~1000。 | 32 |
maxDepth | 否 | 樹的最大深度,取值范圍為1~100。 | 10 |
minLeafSampleCount | 否 | 葉子節(jié)點容納的最少樣本數(shù),取值范圍為1~1000。 | 500 |
sampleRatio | 否 | 訓(xùn)練采集的樣本比例,取值范圍為(0,1)。 | 0.6 |
featureRatio | 否 | 訓(xùn)練采集的特征比例,取值范圍為(0,1)。 | 0.6 |
tau | 否 | GBRank Loss中的Tau參數(shù),取值范圍為[0,1]。 | 0.6 |
p | 否 | GBRank Loss中的p參數(shù),取值范圍為[1,10]。 | 1 |
randSeed | 否 | 隨機(jī)數(shù)種子,取值范圍為[0,10]。 | 0 |
newtonStep | 否 | 使用Newton迭代法的開關(guān),取值范圍為{0,1}。 | 1 |
featureSplitValueMaxSize | 否 | 特征分裂的最大數(shù)量,取值范圍為1~1000。 | 500 |
lifecycle | 否 | 輸出表的生命周期。 | 無 |
示例
使用SQL語句,生成測試數(shù)據(jù)。
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;
生成的測試數(shù)據(jù)表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回歸組件的訓(xùn)練參數(shù)。
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命令,提交預(yù)測組件參數(shù)。
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"
查看預(yù)測結(jié)果表gbdt_ls_test_prediction_result。
label
prediction_result
prediction_score
prediction_detail
0
NULL
0.0
{“l(fā)abel”: 0}
0
NULL
0.0
{“l(fā)abel”: 0}
1
NULL
0.9990234375
{“l(fā)abel”: 0.9990234375}
1
NULL
0.9990234375
{“l(fā)abel”: 0.9990234375}
0
NULL
0.0
{“l(fā)abel”: 0}
0
NULL
0.0
{“l(fā)abel”: 0}