O Gradient Boosting Decision Tree (GBDT) é um algoritmo avançado de machine learning. Ele utiliza um método iterativo para construir um conjunto de árvores de decisão voltadas à análise de regressão. Ao otimizar progressivamente uma função de perda, o algoritmo lida com problemas de regressão lineares e não lineares, fornecendo resultados de previsão altamente precisos.
Configure o componente
Método 1: Configuração visual
Adicione o componente GBDT Regression à página de workflow do Designer. Em seguida, configure os parâmetros no painel à direita.
|
Tipo de parâmetro |
Parâmetro |
Descrição |
|
Configuração de campos |
Colunas de entrada |
As colunas de features da source de dados de entrada usadas para treinamento. Compatível com os tipos DOUBLE e BIGINT. Nota
O número de colunas de features não pode exceder 800. |
|
Coluna de rótulo |
Compatível com os tipos DOUBLE e BIGINT. |
|
|
Coluna de grupo |
Compatível com os tipos DOUBLE e BIGINT. Por padrão, toda a tabela é tratada como um único grupo. |
|
|
Configuração de parâmetros |
Tipo de função de perda |
Os tipos suportados são gbrank loss, lambdamart dcg loss, lambdamart ndcg loss e regression loss. |
|
Parâmetro Tau em gbrank loss |
O valor deve estar no intervalo de [0,1]. |
|
|
Base do expoente em gbrank e regression loss |
O valor deve estar no intervalo de [1,10]. |
|
|
Tipo de métrica |
Os tipos suportados são NDCG e DCG. |
|
|
Número de árvores |
O valor deve estar no intervalo de 1 a 10000. |
|
|
Taxa de aprendizado |
O valor deve estar no intervalo de (0,1). |
|
|
Número máximo de nós folha |
O valor deve estar no intervalo de 1 a 1000. |
|
|
Profundidade máxima da árvore |
O valor deve estar no intervalo de 1 a 11. |
|
|
Número mínimo de amostras em um nó folha |
O valor deve estar no intervalo de 1 a 1000. |
|
|
Taxa de amostragem |
O valor deve estar no intervalo de (0,1). |
|
|
Taxa de amostragem de features durante o treinamento |
O valor deve estar no intervalo de (0,1). |
|
|
Proporção de amostras de teste |
O valor deve estar no intervalo de [0,1). |
|
|
Semente para o gerador de números aleatórios |
O valor deve estar no intervalo de [0,10]. |
|
|
Usar método de Newton para aprendizado |
Define se o método de Newton será utilizado. |
|
|
Número máximo de divisões para uma feature |
O valor deve estar no intervalo de 1 a 1000. |
|
|
Ajuste de execução |
Número de núcleos de computação |
O sistema aloca automaticamente o número de instâncias de treinamento com base no volume de dados de entrada. |
|
Memória por núcleo |
O sistema aloca memória automaticamente conforme o volume de dados de entrada. A unidade é MB. |
Método 2: Usar comandos PAI
Utilize comandos PAI para configurar os parâmetros do componente GBDT Regression. É possível usar o componente SQL Script para chamar comandos PAI. Para mais informações, consulte 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"
|
Parâmetro |
Obrigatório |
Valor padrão |
Descrição |
|
inputTableName |
Sim |
Nenhum |
Nome da tabela de entrada. |
|
featureColNames |
Não |
Todas as colunas numéricas |
Nomes das colunas de features na tabela de entrada usadas para treinamento. Compatível com os tipos DOUBLE e BIGINT. |
|
labelColName |
Sim |
Nenhum |
Nome da coluna de rótulo na tabela de entrada. Compatível com os tipos DOUBLE e BIGINT. |
|
inputTablePartitions |
Não |
Todas as partições |
Partições da tabela de entrada utilizadas no treinamento. Os seguintes formatos são suportados:
Nota
Use vírgulas (,) para separar múltiplas partições. |
|
modelName |
Sim |
Nenhum |
Nome do modelo de saída. |
|
outputImportanceTableName |
Não |
Nenhum |
Nome da tabela de saída para importância de features. |
|
groupIDColName |
Não |
Tabela completa |
Coluna de agrupamento de dados. |
|
lossType |
Não |
0 |
Função de perda. Os seguintes tipos são suportados:
|
|
metricType |
Não |
0 |
Os tipos incluem:
|
|
treeCount |
Não |
500 |
Quantidade de árvores. O valor deve estar no intervalo de 1 a 10000. |
|
shrinkage |
Não |
0,05 |
Taxa de aprendizado. O valor deve estar no intervalo de (0,1). |
|
maxLeafCount |
Não |
32 |
Limite máximo de nós folha. O valor deve estar entre 1 e 1000. |
|
maxDepth |
Não |
10 |
Profundidade máxima permitida para a árvore. O valor deve variar de 1 a 11. |
|
minLeafSampleCount |
Não |
500 |
Mínimo de amostras exigido em um nó folha. O valor deve estar no intervalo de 1 a 1000. |
|
sampleRatio |
Não |
0,6 |
Proporção de amostragem utilizada durante o treinamento. O valor deve estar no intervalo de (0,1). |
|
featureRatio |
Não |
0,6 |
Taxa de amostragem de features durante o treinamento. O valor deve estar no intervalo de (0,1). |
|
tau |
Não |
0,6 |
Parâmetro Tau em GBRank Loss. O valor deve estar no intervalo de [0,1]. |
|
p |
Não |
1 |
Parâmetro p em GBRank Loss. O valor deve estar no intervalo de [1,10]. |
|
randSeed |
Não |
0 |
Semente do gerador de números aleatórios. O valor deve estar no intervalo de [0,10]. |
|
newtonStep |
Não |
1 |
Define se o método de iteração de Newton será usado. O valor pode ser {0,1}. |
|
featureSplitValueMaxSize |
Não |
500 |
Número máximo de divisões para uma feature. O valor deve estar no intervalo de 1 a 1000. |
|
lifecycle |
Não |
Nenhum |
Ciclo de vida da tabela de saída. |
Exemplo
-
Execute uma instrução SQL para gerar dados de teste.
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;A tabela de dados de teste gerada gbdt_ls_test_input é apresentada abaixo.
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
-
Envie os parâmetros de treinamento do componente GBDT Regression usando um comando PAI.
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" -
Envie os parâmetros do componente Prediction através de um comando 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" -
Visualize a tabela de resultados da previsão 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}