Gradient Boosting Decision Tree (GBDT) es un algoritmo avanzado de aprendizaje automático. Utiliza un método iterativo para construir una colección de árboles de decisión destinados al análisis de regresión. Al optimizar progresivamente una función de pérdida, el algoritmo puede manejar problemas de regresión tanto lineales como no lineales, y ofrece resultados de predicción con alta precisión.
Configurar el componente
Método 1: Configuración visual
Agregue el componente GBDT Regression a la página del flujo de trabajo en Designer. A continuación, configure los parámetros en el panel derecho.
|
Tipo de parámetro |
Parámetro |
Descripción |
|
Configuración de campos |
Columnas de entrada |
Las columnas de funciones del origen de datos de entrada que se utilizan para el entrenamiento. Admite los tipos DOUBLE y BIGINT. Nota
El número de columnas de funciones no puede exceder 800. |
|
Columna de etiqueta |
Admite los tipos DOUBLE y BIGINT. |
|
|
Columna de grupo |
Admite los tipos DOUBLE y BIGINT. De forma predeterminada, toda la tabla se trata como un solo grupo. |
|
|
Configuración de parámetros |
Tipo de función de pérdida |
Los tipos compatibles son gbrank loss, lambdamart dcg loss, lambdamart ndcg loss y regression loss. |
|
Parámetro Tau en gbrank loss |
El valor debe estar en el intervalo [0.1]. |
|
|
Base del exponente en gbrank y regression loss |
El valor debe estar en el intervalo [1.10]. |
|
|
Tipo de métrica |
Los tipos compatibles son NDCG y DCG. |
|
|
Número de árboles |
El valor debe estar en el intervalo de 1 a 10000. |
|
|
Tasa de aprendizaje |
El valor debe estar en el intervalo (0.1). |
|
|
Número máximo de nodos hoja |
El valor debe estar en el intervalo de 1 a 1000. |
|
|
Profundidad máxima de un árbol |
El valor debe estar en el intervalo de 1 a 11. |
|
|
Número mínimo de muestras en un nodo hoja |
El valor debe estar en el intervalo de 1 a 1000. |
|
|
Proporción de muestreo de muestras |
El valor debe estar en el intervalo (0.1). |
|
|
Proporción de muestreo de funciones durante el entrenamiento |
El valor debe estar en el intervalo (0.1). |
|
|
Proporción de muestras de prueba |
El valor debe estar en el intervalo [0.1). |
|
|
Semilla para el generador de números aleatorios |
El valor debe estar en el intervalo [0.10]. |
|
|
Usar el método de Newton para el aprendizaje |
Especifica si se usa el método de Newton. |
|
|
Número máximo de divisiones para una función |
El valor debe estar en el intervalo de 1 a 1000. |
|
|
Ajuste de ejecución |
Número de núcleos de cómputo |
El sistema asigna automáticamente el número de instancias de entrenamiento según el volumen de datos de entrada. |
|
Memoria por núcleo |
El sistema asigna automáticamente la memoria según el volumen de datos de entrada. La unidad es MB. |
Método 2: Uso de comandos de PAI
Utilice comandos de PAI para configurar los parámetros del componente GBDT Regression. Puede usar el componente SQL Script para invocar comandos de PAI. Para obtener más información, 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 |
Obligatorio |
Valor predeterminado |
Descripción |
|
inputTableName |
Sí |
Ninguna |
El nombre de la tabla de entrada. |
|
featureColNames |
No |
Todas las columnas numéricas |
Los nombres de las columnas de funciones en la tabla de entrada que se usan para el entrenamiento. Admite los tipos DOUBLE y BIGINT. |
|
labelColName |
Sí |
Ninguna |
El nombre de la columna de etiqueta en la tabla de entrada. Admite los tipos DOUBLE y BIGINT. |
|
inputTablePartitions |
No |
Todas las particiones |
Las particiones de la tabla de entrada que se usan para el entrenamiento. Se admiten los siguientes formatos:
Nota
Use comas (,) para separar varias particiones. |
|
modelName |
Sí |
Ninguna |
El nombre del modelo de salida. |
|
outputImportanceTableName |
No |
Ninguna |
El nombre de la tabla de salida para la importancia de funciones. |
|
groupIDColName |
No |
Tabla completa |
La columna de agrupación de datos. |
|
lossType |
No |
0 |
La función de pérdida. Se admiten los siguientes tipos:
|
|
metricType |
No |
0 |
Los tipos incluyen los siguientes:
|
|
treeCount |
No |
500 |
El número de árboles. El valor debe estar en el intervalo de 1 a 10000. |
|
shrinkage |
No |
0.05 |
La tasa de aprendizaje. El valor debe estar en el intervalo (0.1). |
|
maxLeafCount |
No |
32 |
El número máximo de nodos hoja. El valor debe estar en el intervalo de 1 a 1000. |
|
maxDepth |
No |
10 |
La profundidad máxima de un árbol. El valor debe estar en el intervalo de 1 a 11. |
|
minLeafSampleCount |
No |
500 |
El número mínimo de muestras en un nodo hoja. El valor debe estar en el intervalo de 1 a 1000. |
|
sampleRatio |
No |
0.6 |
La proporción de muestreo para las muestras durante el entrenamiento. El valor debe estar en el intervalo (0.1). |
|
featureRatio |
No |
0.6 |
La proporción de muestreo para las funciones durante el entrenamiento. El valor debe estar en el intervalo (0.1). |
|
tau |
No |
0.6 |
El parámetro Tau en GBRank Loss. El valor debe estar en el intervalo [0.1]. |
|
p |
No |
1 |
El parámetro p en GBRank Loss. El valor debe estar en el intervalo [1.10]. |
|
randSeed |
No |
0 |
La semilla para el generador de números aleatorios. El valor debe estar en el intervalo [0.10]. |
|
newtonStep |
No |
1 |
Especifica si se usa el método de iteración de Newton. El valor puede ser {0.1}. |
|
featureSplitValueMaxSize |
No |
500 |
El número máximo de divisiones para una función. El valor debe estar en el intervalo de 1 a 1000. |
|
lifecycle |
No |
Ninguna |
El ciclo de vida de la tabla de salida. |
Ejemplo
-
Utilice una sentencia SQL para generar datos de prueba.
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;La tabla de datos de prueba generada gbdt_ls_test_input es la siguiente.
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
-
Utilice un comando de PAI para enviar los parámetros de entrenamiento del componente 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" -
Utilice un comando de PAI para enviar los parámetros del componente 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" -
Consulte la tabla de resultados de predicción 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}