Le Gradient Boosting Decision Tree (GBDT) est un algorithme d'apprentissage automatique avancé. Il utilise une méthode itérative pour construire un ensemble d'arbres de décision dédiés à l'analyse de régression. En optimisant progressivement une fonction de perte, l'algorithme peut traiter des problèmes de régression linéaire et non linéaire, tout en fournissant des résultats de prédiction hautement précis.
Configuration du composant
Méthode 1 : Configuration visuelle
Ajoutez le composant GBDT Regression à la page du flux de travail Designer. Configurez ensuite les paramètres dans le volet de droite.
|
Type de paramètre |
Paramètre |
Description |
|
Configuration des champs |
Colonnes d'entrée |
Les colonnes de caractéristiques de la source de données d'entrée utilisées pour l'entraînement. Prend en charge les types DOUBLE et BIGINT. Remarque
Le nombre de colonnes de caractéristiques ne doit pas dépasser 800. |
|
Colonne d'étiquette |
Prend en charge les types DOUBLE et BIGINT. |
|
|
Colonne de groupe |
Prend en charge les types DOUBLE et BIGINT. Par défaut, l'intégralité de la table est traitée comme un seul groupe. |
|
|
Configuration des paramètres |
Type de fonction de perte |
Les types pris en charge sont gbrank loss, lambdamart dcg loss, lambdamart ndcg loss et regression loss. |
|
Paramètre Tau dans gbrank loss |
La valeur doit être comprise entre [0,1]. |
|
|
Base de l'exposant dans gbrank et regression loss |
La valeur doit être comprise entre [1,10]. |
|
|
Type de métrique |
Les types pris en charge sont NDCG et DCG. |
|
|
Nombre d'arbres |
La valeur doit être comprise entre 1 et 10000. |
|
|
Taux d'apprentissage |
La valeur doit être comprise entre (0,1). |
|
|
Nombre maximal de nœuds feuilles |
La valeur doit être comprise entre 1 et 1000. |
|
|
Profondeur maximale d'un arbre |
La valeur doit être comprise entre 1 et 11. |
|
|
Nombre minimal d'échantillons sur un nœud feuille |
La valeur doit être comprise entre 1 et 1000. |
|
|
Taux d'échantillonnage des échantillons |
La valeur doit être comprise entre (0,1). |
|
|
Taux d'échantillonnage des caractéristiques pendant l'entraînement |
La valeur doit être comprise entre (0,1). |
|
|
Ratio d'échantillons de test |
La valeur doit être comprise entre [0,1). |
|
|
Graine pour le générateur de nombres aléatoires |
La valeur doit être comprise entre [0,10]. |
|
|
Utiliser la méthode de Newton pour l'apprentissage |
Indique s'il faut utiliser la méthode de Newton. |
|
|
Nombre maximal de scissions pour une caractéristique |
La valeur doit être comprise entre 1 et 1000. |
|
|
Optimisation de l'exécution |
Nombre de cœurs de calcul |
Le système alloue automatiquement le nombre d'instances d'entraînement en fonction du volume des données d'entrée. |
|
Mémoire par cœur |
Le système alloue automatiquement la mémoire en fonction du volume des données d'entrée. L'unité est le Mo. |
Méthode 2 : Utiliser les commandes PAI
Utilisez les commandes PAI pour configurer les paramètres du composant GBDT Regression. Vous pouvez utiliser le composant SQL Script pour appeler les commandes PAI. Pour plus d'informations, consultez 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"
|
Paramètre |
Obligatoire |
Valeur par défaut |
Description |
|
inputTableName |
Oui |
Aucune |
Nom de la table d'entrée. |
|
featureColNames |
Non |
Toutes les colonnes numériques |
Noms des colonnes de caractéristiques de la table d'entrée utilisées pour l'entraînement. Prend en charge les types DOUBLE et BIGINT. |
|
labelColName |
Oui |
Aucune |
Nom de la colonne d'étiquette de la table d'entrée. Prend en charge les types DOUBLE et BIGINT. |
|
inputTablePartitions |
Non |
Toutes les partitions |
Partitions de la table d'entrée utilisées pour l'entraînement. Les formats suivants sont pris en charge :
Remarque
Séparez plusieurs partitions par des virgules (,). |
|
modelName |
Oui |
Aucune |
Nom du modèle de sortie. |
|
outputImportanceTableName |
Non |
Aucune |
Nom de la table de sortie pour l'importance des caractéristiques. |
|
groupIDColName |
Non |
Table complète |
Colonne de regroupement des données. |
|
lossType |
Non |
0 |
Fonction de perte. Les types suivants sont pris en charge :
|
|
metricType |
Non |
0 |
Les types incluent les éléments suivants :
|
|
treeCount |
Non |
500 |
Nombre d'arbres. La valeur doit être comprise entre 1 et 10000. |
|
shrinkage |
Non |
0.05 |
Taux d'apprentissage. La valeur doit être comprise entre (0,1). |
|
maxLeafCount |
Non |
32 |
Nombre maximal de nœuds feuilles. La valeur doit être comprise entre 1 et 1000. |
|
maxDepth |
Non |
10 |
Profondeur maximale d'un arbre. La valeur doit être comprise entre 1 et 11. |
|
minLeafSampleCount |
Non |
500 |
Nombre minimal d'échantillons sur un nœud feuille. La valeur doit être comprise entre 1 et 1000. |
|
sampleRatio |
Non |
0.6 |
Taux d'échantillonnage des échantillons pendant l'entraînement. La valeur doit être comprise entre (0,1). |
|
featureRatio |
Non |
0.6 |
Taux d'échantillonnage des caractéristiques pendant l'entraînement. La valeur doit être comprise entre (0,1). |
|
tau |
Non |
0.6 |
Paramètre Tau dans GBRank Loss. La valeur doit être comprise entre [0,1]. |
|
p |
Non |
1 |
Paramètre p dans GBRank Loss. La valeur doit être comprise entre [1,10]. |
|
randSeed |
Non |
0 |
Graine pour le générateur de nombres aléatoires. La valeur doit être comprise entre [0,10]. |
|
newtonStep |
Non |
1 |
Indique s'il faut utiliser la méthode d'itération de Newton. La valeur peut être {0,1}. |
|
featureSplitValueMaxSize |
Non |
500 |
Nombre maximal de scissions pour une caractéristique. La valeur doit être comprise entre 1 et 1000. |
|
lifecycle |
Non |
Aucune |
Cycle de vie de la table de sortie. |
Exemple
-
Utilisez une instruction SQL pour générer des données de test.
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 table de données de test générée gbdt_ls_test_input se présente comme suit.
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
-
Soumettez les paramètres d'entraînement du composant GBDT Regression à l'aide d'une commande 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" -
Soumettez les paramètres du composant Prediction à l'aide d'une commande 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" -
Consultez la table des résultats de prédiction 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}