PS-SMART associe Parameter Server (PS) et Scalable Multiple Additive Regression Tree (SMART) pour entraîner des modèles de régression sur des jeux de données comportant des milliards d'échantillons et des centaines de milliers de features.
Limites
Les données d'entrée doivent respecter les exigences suivantes :
La colonne cible doit être numérique. Convertissez les types STRING dans les tables MaxCompute avant l'entraînement.
Pour les données au format clé-valeur, les ID de feature doivent être des entiers positifs et les valeurs de feature des nombres réels. Utilisez un composant de sérialisation pour les ID de feature de type STRING ou appliquez une ingénierie des features (discrétisation) pour les chaînes catégorielles.
Les jeux de données contenant des centaines de milliers de features consomment beaucoup de ressources et s'exécutent lentement. Privilégiez les algorithmes GBDT, qui traitent directement les features continues. Appliquez un encodage one-hot aux features catégorielles pour filtrer celles à faible fréquence, mais évitez de discrétiser les features continues.
L'algorithme introduit de l'aléatoire via l'échantillonnage des données (data_sample_ratio), l'échantillonnage des features (fea_sample_ratio), l'approximation par histogramme et la fusion des esquisses. Les structures d'arbres peuvent varier entre les workers distribués, bien que les performances du modèle restent similaires. Les résultats peuvent donc différer d'une exécution à l'autre, même avec des données et des paramètres identiques.
Augmentez le nombre de cœurs de calcul pour accélérer l'entraînement. Celui-ci ne démarre qu'une fois toutes les ressources allouées ; demander davantage de ressources prolonge donc le temps d'attente lorsque le cluster est très sollicité.
Configuration
Interface visuelle
Ajoutez le composant PS-SMART Regression au canevas Designer, puis configurez les paramètres dans le volet de droite.
|
Type de paramètre |
Paramètre |
Description |
|
Configuration des champs |
Format sparse |
Sépare les paires clé-valeur du format sparse par des espaces. Les clés et les valeurs sont séparées par des deux-points (:). Exemple : 1:0.3 3:0.9. |
|
Sélectionner les colonnes de features |
Colonnes de features de la table d'entrée utilisées pour l'entraînement. Pour le format dense, sélectionnez uniquement des colonnes BIGINT ou DOUBLE. Pour le format sparse clé-valeur avec des clés et valeurs numériques, sélectionnez uniquement des colonnes STRING. |
|
|
Sélectionner la colonne de libellé |
Colonne de libellé issue de la table d'entrée. Prend en charge les types STRING et numériques. Le système convertit internement ces valeurs en types numériques uniquement, par exemple 0 et 1 pour la classification binaire. |
|
|
Sélectionner la colonne de pondération |
Colonne servant à pondérer chaque ligne d'échantillon. Seuls les types numériques sont pris en charge. |
|
|
Configuration des paramètres |
Type de fonction objectif |
Types disponibles :
|
|
Indice de distribution Tweedie |
Disponible uniquement si le type de fonction objectif est Tweedie regression. Spécifie l'indice de la relation entre la variance et la moyenne de la distribution de Tweedie. |
|
|
Type de métrique d'évaluation |
Types disponibles :
|
|
|
Nombre d'arbres |
Nombre total d'arbres à construire. Doit être un entier positif. Le temps d'entraînement augmente proportionnellement à cette valeur. |
|
|
Profondeur maximale de l'arbre |
Par défaut : 5 (maximum 32 nœuds feuilles). |
|
|
Ratio d'échantillonnage des données |
Fraction des données d'entraînement échantillonnées pour construire chaque arbre. L'échantillonnage accélère l'entraînement en construisant des apprenants faibles sur un sous-ensemble de données. |
|
|
Ratio d'échantillonnage des features |
Fraction des features échantillonnées pour construire chaque arbre. Cette technique accélère l'entraînement en construisant des apprenants faibles sur un sous-ensemble de features. |
|
|
Coefficient de pénalité L1 |
Contrôle la taille des nœuds feuilles. Des valeurs plus élevées produisent une distribution plus uniforme. Augmentez cette valeur pour réduire le surapprentissage. |
|
|
Coefficient de pénalité L2 |
Contrôle la taille des nœuds feuilles. Des valeurs plus élevées produisent une distribution plus uniforme. Augmentez cette valeur pour réduire le surapprentissage. |
|
|
Taux d'apprentissage |
Plage : (0,1). |
|
|
Précision de l'esquisse approximative |
Seuil de quantile pour la scission lors de la construction d'une esquisse. Des valeurs plus faibles génèrent davantage de buckets. Utilisez la valeur par défaut 0,03. |
|
|
Changement minimal de perte de scission |
Changement de perte minimal requis pour scinder un nœud. Des valeurs plus élevées produisent des scissions plus conservatrices. |
|
|
Nombre de features |
Nombre total de features ou ID de feature maximal. Si ce champ n'est pas renseigné, le système calcule automatiquement cette valeur en exécutant une tâche SQL. |
|
|
Biais global |
Valeur de prédiction initiale pour tous les échantillons. |
|
|
Graine du générateur de nombres aléatoires |
Graine pour le générateur de nombres aléatoires. Doit être un entier. |
|
|
Type d'importance des features |
Types disponibles :
|
|
|
Optimisation de l'exécution |
Nombre de cœurs |
Alloué par le système par défaut. |
|
Mémoire par cœur (Mo) |
Mémoire par cœur en Mo. Allouée par le système par défaut. |
Commandes PAI
Vous pouvez également configurer le composant PS-SMART Regression en exécutant des commandes PAI depuis le composant de script SQL. Pour plus d'informations, consultez Script SQL.
# Train the model.
PAI -name ps_smart
-project algo_public
-DinputTableName="smart_regression_input"
-DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
-DoutputTableName="pai_temp_24515_545859_2"
-DoutputImportanceTableName="pai_temp_24515_545859_3"
-DlabelColName="label"
-DfeatureColNames="features"
-DenableSparse="true"
-Dobjective="reg:linear"
-Dmetric="rmse"
-DfeatureImportanceType="gain"
-DtreeCount="5"
-DmaxDepth="5"
-Dshrinkage="0.3"
-Dl2="1.0"
-Dl1="0"
-Dlifecycle="3"
-DsketchEps="0.03"
-DsampleRatio="1.0"
-DfeatureRatio="1.0"
-DbaseScore="0.5"
-DminSplitLoss="0"
# Make predictions.
PAI -name prediction
-project algo_public
-DinputTableName="smart_regression_input";
-DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
-DoutputTableName="pai_temp_24515_545860_1"
-DfeatureColNames="features"
-DappendColNames="label,features"
-DenableSparse="true"
-Dlifecycle="28"
|
Type de paramètre |
Paramètre |
Obligatoire |
Valeur par défaut |
Description |
|
Paramètres de données |
featureColNames |
Oui |
Aucune |
Colonnes de features de la table d'entrée utilisées pour l'entraînement. Pour le format dense, sélectionnez uniquement des colonnes BIGINT ou DOUBLE. Pour le format sparse clé-valeur avec des clés et valeurs numériques, sélectionnez uniquement des colonnes STRING. |
|
labelColName |
Oui |
Aucune |
Colonne de libellé issue de la table d'entrée. Prend en charge les types STRING et numériques. Le système convertit internement ces valeurs en types numériques uniquement, par exemple 0 et 1 pour la classification binaire. |
|
|
weightCol |
Non |
Aucune |
Colonne servant à pondérer chaque ligne d'échantillon. Seuls les types numériques sont pris en charge. |
|
|
enableSparse |
Non |
false |
Indique si les données sont au format sparse. Valeurs valides : {true,false}. Sépare les paires clé-valeur par des espaces. Les clés et les valeurs sont séparées par des deux-points (:). Exemple : 1:0.3 3:0.9. |
|
|
inputTableName |
Oui |
Aucune |
Nom de la table d'entrée. |
|
|
modelName |
Oui |
Aucune |
Nom du modèle en sortie. |
|
|
outputImportanceTableName |
Non |
Aucune |
Nom de la table de sortie contenant les informations sur l'importance des features. |
|
|
inputTablePartitions |
Non |
Aucune |
Format : ds=1/pt=1. |
|
|
outputTableName |
Non |
Aucune |
Table de sortie dans MaxCompute, au format binaire. |
|
|
lifecycle |
Non |
3 |
Cycle de vie de la table de sortie, en jours. |
|
|
Paramètres de l'algorithme |
objective |
Oui |
reg:linear |
Type de fonction objectif. Types disponibles :
|
|
metric |
Non |
Aucune |
Métrique d'évaluation pour le jeu de données d'entraînement. La sortie est écrite dans le fichier stdout de la zone du coordinateur Logview. Types disponibles :
|
|
|
treeCount |
Non |
1 |
Nombre d'arbres. Le temps d'entraînement augmente proportionnellement à cette valeur. |
|
|
maxDepth |
Non |
5 |
Profondeur maximale d'un arbre. Plage : de 1 à 20. |
|
|
sampleRatio |
Non |
1,0 |
Ratio d'échantillonnage des données. Plage : (0,1]. Une valeur de 1,0 indique l'absence d'échantillonnage. |
|
|
featureRatio |
Non |
1,0 |
Ratio d'échantillonnage des features. Plage : (0,1]. Une valeur de 1,0 indique l'absence d'échantillonnage. |
|
|
l1 |
Non |
0 |
Coefficient de pénalité L1. Des valeurs plus élevées produisent une distribution plus uniforme des nœuds feuilles. Augmentez cette valeur pour réduire le surapprentissage. |
|
|
l2 |
Non |
1,0 |
Coefficient de pénalité L2. Des valeurs plus élevées produisent une distribution plus uniforme des nœuds feuilles. Augmentez cette valeur pour réduire le surapprentissage. |
|
|
shrinkage |
Non |
0,3 |
Taux d'apprentissage. Plage : (0,1). |
|
|
sketchEps |
Non |
0,03 |
Seuil de quantile pour la scission lors de la construction d'une esquisse. Le nombre de buckets est O(1.0/sketchEps). Des valeurs plus faibles génèrent davantage de buckets. Utilisez la valeur par défaut. Plage : (0,1). |
|
|
minSplitLoss |
Non |
0 |
Changement de perte minimal requis pour scinder un nœud. Des valeurs plus élevées produisent des scissions plus conservatrices. |
|
|
featureNum |
Non |
Aucune |
Nombre total de features ou ID de feature maximal. Si ce paramètre n'est pas spécifié lors de l'estimation de l'utilisation des ressources, le système calcule automatiquement la valeur en exécutant une tâche SQL. |
|
|
baseScore |
Non |
0,5 |
Valeur de prédiction initiale pour tous les échantillons. |
|
|
randSeed |
Non |
Aucune |
Graine pour le générateur de nombres aléatoires. Doit être un entier. |
|
|
featureImportanceType |
Non |
gain |
Méthode de calcul de l'importance des features. Méthodes disponibles :
|
|
|
tweedieVarPower |
Non |
1,5 |
Indice de la relation entre la variance et la moyenne de la distribution de Tweedie. |
|
|
Paramètres d'optimisation |
coreNum |
Non |
Alloué par le système |
Nombre de cœurs. Des valeurs plus élevées accélèrent l'algorithme. |
|
Non |
Alloué par le système |
Mémoire par cœur en Mo. |
Exemple
-
Utilisez le nœud ODPS SQL pour exécuter l'instruction SQL ci-dessous et générer les données d'entrée. Cet exemple utilise le format clé-valeur.
drop table if exists smart_regression_input; create table smart_regression_input as select * from ( select 2.0 as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features union all select 1.0 as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features union all select 1.0 as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features union all select 2.0 as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features union all select 1.0 as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features union all select 1.0 as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features union all select 0.0 as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features union all select 1.0 as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features union all select 0.0 as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features union all select 1.0 as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features ) tmp;Les données générées sont illustrées ci-dessous.

-
Construisez le workflow ci-dessous et exécutez les composants. Pour plus d'informations, consultez Modélisation d'algorithme.

Dans la liste des composants située à gauche du canevas Designer, recherchez les composants Read Table, PS-SMART Regression, Prediction et Write Table, puis faites-les glisser sur le canevas.
-
Configurez les paramètres des composants.
Cliquez sur le composant Read Table-1 sur le canevas. Dans l'onglet Select Table du volet de droite, définissez Table Name sur smart_regression_input.
-
Cliquez sur le composant PS-SMART Regression-1 sur le canevas. Dans le volet de droite, configurez les paramètres comme indiqué dans le tableau ci-dessous. Conservez les valeurs par défaut pour les autres paramètres.
Type de paramètre
Paramètre
Description
Configuration des champs
Format sparse
Cochez la case Is sparse format.
Colonnes de features
Sélectionnez la colonne features.
Colonne de libellé
Sélectionnez la colonne label.
Configuration des paramètres
Type de fonction objectif
Définissez sur Linear regression.
Type de métrique d'évaluation
Sélectionnez rooted mean square error.
Nombre d'arbres
Définissez sur 5.
-
Cliquez sur le composant Prediction-1 sur le canevas. Dans le volet de droite, configurez les paramètres comme indiqué dans le tableau ci-dessous. Conservez les valeurs par défaut pour les autres paramètres.
Type de paramètre
Paramètre
Description
Configuration des champs
Colonnes de features
Toutes les colonnes sont sélectionnées par défaut. Les colonnes supplémentaires n'affectent pas les résultats de la prédiction.
Colonnes transmises
Sélectionnez la colonne label.
Matrice sparse
Cochez la case Sparse matrix.
Séparateur clé-valeur
Définissez sur un deux-points (:).
Séparateur entre paires clé-valeur
Définissez sur un espace.
Cliquez sur le composant Write Table-1 sur le canevas. Dans le volet de droite, sous l'onglet Select Table, définissez Table Name for Output sur smart_regression_output.
Une fois les paramètres configurés, cliquez sur le bouton d'exécution
pour lancer le workflow.
Cliquez avec le bouton droit sur le composant Prediction-1 et choisissez .

-
Pour consulter l'importance des features, cliquez avec le bouton droit sur le composant PS-SMART Regression-1 et sélectionnez dans le menu contextuel.

La colonne id indique le numéro ordinal de la feature d'entrée. Étant donné que les données d'entrée de cet exemple utilisent le format clé-valeur, la colonne id représente la clé de la paire clé-valeur. La table d'importance des features ne contient que deux features, ce qui signifie que seules ces deux features ont été utilisées lors de la scission des arbres. Les autres features ont une importance de 0. La colonne value indique le type d'importance de la feature. La valeur par défaut est gain, qui correspond au gain d'information total apporté par la feature au modèle.
Déploiement du modèle
Pour déployer le modèle généré par le composant PS-SMART en tant que service en ligne, ajoutez le composant General-purpose Model Export en aval du composant PS-SMART. Configurez les paramètres du composant de la même manière que pour les autres composants de la série PS. Pour plus d'informations, consultez General-purpose Model Export.
Après une exécution réussie, déployez le service de modèle sur la page PAI-EAS Model Online Service. Pour plus d'informations, consultez Déployer un service dans la console.
Références
Pour plus d'informations sur les composants Designer, consultez Présentation de Designer.
Designer propose divers composants d'algorithmes adaptés à différents scénarios. Pour plus d'informations, consultez Présentation des composants Designer.