La régression linéaire PS combine un modèle de régression linéaire avec une architecture de serveur de paramètres (PS) pour gérer des tâches d'entraînement à grande échelle, traitant jusqu'à des centaines de milliards d'échantillons et des milliards de caractéristiques. L'architecture PS répartit le calcul et le stockage des paramètres du modèle entre les nœuds de travail, ce qui améliore l'efficacité et l'évolutivité de l'entraînement.
Utilisez la régression linéaire PS lorsque votre jeu de données est trop volumineux pour un entraînement sur une seule machine ou lorsque votre espace de caractéristiques est extrêmement multidimensionnel, y compris dans des formats clairsemés.
Fonctionnement
Chargez les données d'entraînement depuis une table d'entrée MaxCompute. Le format dense prend en charge les colonnes DOUBLE et BIGINT ; le format clairsemé utilise des colonnes STRING au format clé-valeur (KV).
Soumettez une tâche d'entraînement. L'architecture PS fragmente les paramètres du modèle sur les nœuds serveur et exécute les mises à jour de gradient en parallèle sur les nœuds de travail.
Une fois l'entraînement terminé, le système enregistre le modèle sous forme de modèle hors ligne (par défaut) ou l'écrit dans une table MaxCompute.
Exécutez la prédiction à l'aide du modèle enregistré pour générer des scores de sortie écrits dans une table de sortie distincte.
Configuration du composant
Méthode 1 : Interface visuelle
Ajoutez le composant PS Linear Regression à votre workflow dans Designer, puis configurez ses paramètres dans le volet droit.
| Type de paramètre | Paramètre | Obligatoire | Description |
|---|---|---|---|
| Configuration des champs | Colonnes de caractéristiques | Oui | Les colonnes de caractéristiques de la source de données d'entrée à utiliser pour l'entraînement. |
| Colonne d'étiquette | Oui | La colonne d'étiquette. Prend en charge les types de données DOUBLE et BIGINT. | |
| Format clairsemé ? | Non | Sélectionnez true si les données d'entrée sont au format clé-valeur (KV). Valeur par défaut : false. | |
| Séparateur de paires KV | Non | Le séparateur entre les paires clé-valeur. Valeur par défaut : espace. S'applique uniquement lorsque le format clairsemé est activé. | |
| Séparateur clé-valeur | Non | Le séparateur entre une clé et sa valeur. Valeur par défaut : deux-points (:). S'applique uniquement lorsque le format clairsemé est activé. |
|
| Configuration des paramètres | Poids L1 | Non | Le coefficient de régularisation L1. Une valeur plus élevée produit un modèle plus clairsemé avec moins d'éléments non nuls. Valeurs valides : nombres à virgule flottante non négatifs. Valeur par défaut : 1,0. |
| Poids L2 | Non | Le coefficient de régularisation L2. Une valeur plus élevée réduit la valeur absolue des paramètres du modèle. Valeurs valides : nombres à virgule flottante non négatifs. Valeur par défaut : 0. | |
| Nombre maximal d'itérations | Non | Le nombre maximal d'itérations d'entraînement. Définissez la valeur sur 0 pour supprimer la limite. Valeurs valides : entiers non négatifs. Valeur par défaut : 100. | |
| Écart de convergence minimal | Non | Le seuil d'arrêt de l'algorithme d'optimisation. L'entraînement s'arrête lorsque l'amélioration tombe en dessous de cette valeur. Valeurs valides : [0, 1]. Valeur par défaut : 0,000001. | |
| ID de caractéristique maximal | Non | L'ID de caractéristique maximal ou la dimension de caractéristique. Peut être supérieur à la valeur réelle. Si vous laissez ce champ vide, le système exécute une tâche SQL pour le calculer automatiquement. Valeurs valides : entiers non négatifs. | |
| Optimisation de l'exécution | Nombre de cœurs | Non | Le nombre de cœurs CPU à allouer. Valeur par défaut : allocation par le système. |
| Taille de la mémoire par cœur | Non | La mémoire allouée par cœur, en Mo. Valeur par défaut : allocation par le système. |
La régularisation L1 favorise la parcimonie, ce qui est utile lorsque de nombreuses caractéristiques sont non pertinentes et que vous souhaitez un modèle clairsemé. La régularisation L2 réduit proportionnellement tous les coefficients, ce qui est utile lorsque les caractéristiques sont corrélées. Si vous ne savez pas laquelle utiliser, commencez par L2 (définissez L1 weight sur 0) et ajustez ensuite.
Méthode 2 : Commande PAI
Exécutez les commandes PAI via le composant SQL Script.
Commande d'entraînement :
PAI -name ps_linearregression
-project algo_public
-DinputTableName="lm_test_input"
-DmodelName="linear_regression_model"
-DlabelColName="label"
-DfeatureColNames="features"
-Dl1Weight=1.0
-Dl2Weight=0.0
-DmaxIter=100
-Depsilon=1e-6
-DenableSparse=true
Commande de prédiction :
drop table if exists logistic_regression_predict;
PAI -name prediction
-DmodelName="linear_regression_model"
-DoutputTableName="linear_regression_predict"
-DinputTableName="lm_test_input"
-DappendColNames="label,features"
-DfeatureColNames="features"
-DenableSparse=true
Paramètres :
| Paramètre | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|
inputTableName |
Oui | — | Le nom de la table d'entrée. |
modelName |
Oui | — | Le nom du modèle de sortie. |
labelColName |
Oui | — | La colonne d'étiquette dans la table d'entrée. Prend en charge les types de données DOUBLE et BIGINT. |
featureColNames |
Oui | — | Les colonnes de caractéristiques dans la table d'entrée. Format dense : DOUBLE et BIGINT. Format clairsemé : STRING. |
outputTableName |
Non | — | La table de sortie pour les résultats d'évaluation du modèle. Obligatoire lorsque enableFitGoodness est true. |
inputTablePartitions |
Non | — | Les partitions de la table d'entrée à utiliser pour l'entraînement. |
enableSparse |
Non | false |
Indique si les données d'entrée sont au format clairsemé (KV). Valeurs valides : true, false. |
itemDelimiter |
Non | Espace | Le séparateur entre les paires clé-valeur. S'applique uniquement lorsque enableSparse est true. |
kvDelimiter |
Non | : |
Le séparateur entre une clé et sa valeur. S'applique uniquement lorsque enableSparse est true. |
enableModelIo |
Non | true |
Indique s'il faut enregistrer le modèle en tant que modèle hors ligne. Si la valeur est false, le modèle est écrit dans une table MaxCompute. Valeurs valides : true, false. |
maxIter |
Non | 100 |
Le nombre maximal d'itérations d'entraînement. Valeurs valides : entiers non négatifs. |
epsilon |
Non | 0.000001 |
Le seuil de convergence pour l'algorithme d'optimisation. L'entraînement s'arrête lorsque l'amélioration tombe en dessous de cette valeur. Valeurs valides : [0, 1]. |
l1Weight |
Non | 1.0 |
Le coefficient de régularisation L1. Une valeur plus élevée produit un modèle plus clairsemé. Valeurs valides : nombres à virgule flottante non négatifs. |
l2Weight |
Non | 0 |
Le coefficient de régularisation L2. Une valeur plus élevée réduit la valeur absolue des paramètres du modèle. Valeurs valides : nombres à virgule flottante non négatifs. |
modelSize |
Non | 0 |
L'ID de caractéristique maximal ou la dimension de caractéristique. Peut être supérieur à la valeur réelle. Si la valeur est 0, le système le calcule automatiquement. Valeurs valides : entiers non négatifs. |
coreNum |
Non | Allocation par le système | Le nombre de cœurs CPU par nœud de travail. |
memSizePerCore |
Non | Allocation par le système | La mémoire par cœur, en Mo. |
Exemple
Cet exemple entraîne un modèle de régression linéaire PS sur des données au format KV clairsemé et exécute une prédiction.
Étape 1 : Créer les données d'entrée
Exécutez l'instruction SQL suivante dans le composant SQL Script pour générer la table d'entrée.
drop table if exists lm_test_input;
create table lm_test_input as
select
*
from
(
select cast(2 as BIGINT) as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features
union all
select cast(1 as BIGINT) as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features
union all
select cast(1 as BIGINT) as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features
union all
select cast(2 as BIGINT) as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features
union all
select cast(1 as BIGINT) as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features
union all
select cast(1 as BIGINT) as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features
union all
select cast(0 as BIGINT) as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features
union all
select cast(1 as BIGINT) as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features
union all
select cast(0 as BIGINT) as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features
union all
select cast(1 as BIGINT) as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features
) tmp;
La table comporte deux colonnes : label (BIGINT) et features (STRING au format KV). Chaque valeur de caractéristique encode des ID de caractéristique et des valeurs séparés par des deux-points, les paires étant séparées par des espaces — par exemple, 1:0.55 2:-0.15.

Au format KV, les ID de caractéristique doivent être des entiers positifs et les valeurs de caractéristique doivent être des nombres réels. Si les ID de caractéristique sont des chaînes, sérialisez d'abord les données. Si les valeurs de caractéristique sont des chaînes catégorielles, appliquez une discrétisation des caractéristiques avant l'entraînement.
Étape 2 : Construire le workflow
Construisez un workflow dans Designer en utilisant les composants illustrés ci-dessous. Pour plus de détails sur la création de workflows, consultez Modélisation algorithmique.

Étape 3 : Configurer les composants
Read Table-1:
Dans l'onglet Select Table , définissez Table Name sur lm_test_input.
PS Linear Regression:
Utilisez les paramètres ci-dessous. Laissez tous les autres paramètres avec leurs valeurs par défaut.
| Type de paramètre | Paramètre | Valeur |
|---|---|---|
| Configuration des champs | Format clairsemé ? | true |
| Colonnes de caractéristiques | features |
|
| Colonne d'étiquette | label |
|
| Optimisation de l'exécution | Nombre de cœurs | 3 |
| Taille de la mémoire par cœur | 1024 Mo |
Prediction:
Utilisez les paramètres ci-dessous. Laissez tous les autres paramètres avec leurs valeurs par défaut.
| Type de paramètre | Paramètre | Valeur |
|---|---|---|
| Configuration des champs | Colonnes de caractéristiques | features |
| Colonne de sortie verbatim | label, features |
|
| Matrice clairsemée | Sélectionné | |
| Séparateur clé-valeur | : (deux-points) |
|
| Séparateur de paires KV | (laisser vide pour utiliser l'espace) |
Étape 4 : Exécuter le workflow
Cliquez sur le bouton Exécuter
sur le canevas pour démarrer le workflow.
Étape 5 : Afficher les résultats de prédiction
Une fois le workflow terminé, cliquez avec le bouton droit sur le composant Prediction-1 et choisissez View Data > Prediction Result Output.

Exécuter le même exemple avec des commandes PAI
Les commandes suivantes reproduisent le workflow ci-dessus en utilisant l'interface de commande PAI. Toutes les commandes utilisent la même table lm_test_input.
Entraînement :
PAI -name ps_linearregression
-project algo_public
-DinputTableName="lm_test_input"
-DmodelName="linear_regression_model"
-DlabelColName="label"
-DfeatureColNames="features"
-Dl1Weight=1.0
-Dl2Weight=0.0
-DmaxIter=100
-Depsilon=1e-6
-DenableSparse=true
Prédiction :
drop table if exists logistic_regression_predict;
PAI -name prediction
-DmodelName="linear_regression_model"
-DoutputTableName="linear_regression_predict"
-DinputTableName="lm_test_input"
-DappendColNames="label,features"
-DfeatureColNames="features"
-DenableSparse=true
La table de sortie de prédiction (linear_regression_predict) contient les colonnes originales label et features auxquelles sont ajoutés les scores prédits.