Le composant Linear Regression entraîne un modèle qui prédit une sortie numérique continue à partir d'une ou plusieurs caractéristiques d'entrée. Utilisez-le lorsque votre variable cible (telle que le chiffre d'affaires, la température ou le prix) entretient une relation approximativement linéaire avec les caractéristiques d'entrée. Pour les données creuses et de haute dimensionnalité, où la plupart des valeurs de caractéristiques sont nulles, activez l'entrée au format creux pour représenter les données efficacement au format clé-valeur (KV).
Configurez le composant
Méthode 1 : Utilisez l'interface utilisateur
Ajoutez le composant Linear Regression au canevas du workflow dans Designer, puis configurez ses paramètres dans le volet de droite.
Configuration des champs
| Paramètre | Description | Par défaut |
|---|---|---|
| Sélectionnez les colonnes de caractéristiques | Colonnes de caractéristiques de la source de données d'entrée à utiliser pour l'entraînement. | — |
| Sélectionnez la colonne d'étiquette | Variable dépendante. Les types DOUBLE et BIGINT sont pris en charge. | — |
| Format creux | Représente les données d'entrée au format KV. Activez cette option pour les données creuses et de haute dimensionnalité où la plupart des valeurs de caractéristiques sont nulles. | Désactivé |
| Séparateur entre les paires clé-valeur | Séparateur entre les paires clé-valeur lorsque le format creux est activé. | Virgule (,) |
| Séparateur entre la clé et la valeur | Séparateur entre une clé et sa valeur lorsque le format creux est activé. | Deux-points (:) |
Configuration des paramètres
| Paramètre | Description | Par défaut |
|---|---|---|
| Nombre maximal d'itérations | Nombre maximal d'itérations pour l'algorithme. | 100 |
| Erreur de vraisemblance minimale | Seuil de convergence de la log-vraisemblance. L'algorithme s'arrête lorsque la différence de log-vraisemblance entre deux itérations consécutives est inférieure à cette valeur. | 0,000001 |
| Type de régularisation | Méthode de régularisation pour réduire le surajustement. Options : L1, L2, None. Utilisez L1 pour produire des coefficients creux (utile lorsque de nombreuses caractéristiques sont non pertinentes) ; utilisez L2 pour pénaliser les coefficients élevés (utile lorsque les caractéristiques sont corrélées). Définissez sur None pour désactiver la régularisation. | None |
| Coefficient de régularisation | Intensité de la pénalité de régularisation. Des valeurs plus élevées appliquent une régularisation plus forte. Ignoré lorsque Regularization type est défini sur None. | 1 |
| Générez le tableau d'évaluation du modèle | Génère un tableau d'évaluation du modèle contenant : R-carré, R-carré ajusté, AIC, degrés de liberté, écart-type des résidus et déviance. | Désactivé |
| Évaluation du coefficient de régression | Ajoute des statistiques par coefficient — valeur T, valeur P et intervalle de confiance [2,5 %, 97,5 %] — au tableau d'évaluation. Disponible uniquement lorsque Generate model evaluation table est sélectionné. | Désactivé |
Optimisation de l'exécution
| Paramètre | Description | Par défaut |
|---|---|---|
| Nombre de cœurs de calcul | Nombre de cœurs à utiliser. | Attribué par le système |
| Taille de la mémoire par cœur | Mémoire par cœur. | Attribué par le système |
Méthode 2 : Utilisez les commandes PAI
Utilisez les commandes PAI pour configurer le composant Linear Regression . Exécutez-les via le composant SQL Script. Pour plus d'informations, consultez SQL Script.
PAI -name linearregression
-project algo_public
-DinputTableName=lm_test_input
-DfeatureColNames=x
-DlabelColName=y
-DmodelName=lm_test_input_model_out;
| Paramètre | Obligatoire | Par défaut | Description |
|---|---|---|---|
| inputTableName | Oui | — | Nom de la table d'entrée. |
| modelName | Oui | — | Nom du modèle de sortie. |
| outputTableName | Non | — | Nom de la table d'évaluation du modèle de sortie. Requis lorsque enableFitGoodness est true. |
| labelColName | Oui | — | Colonne de variable dépendante. Les types DOUBLE et BIGINT sont pris en charge. Une seule colonne peut être spécifiée. |
| featureColNames | Oui | — | Colonnes de variables indépendantes. Pour l'entrée dense, les types DOUBLE et BIGINT sont pris en charge. Pour l'entrée creuse, le type STRING est pris en charge. |
| inputTablePartitions | Non | — | Partitions de la table d'entrée à lire. |
| enableSparse | Non | false | Indique si les données d'entrée sont au format creux. Valeurs valides : true, false. |
| itemDelimiter | Non | , |
Séparateur entre les paires clé-valeur. Utilisé lorsque enableSparse est true. |
| kvDelimiter | Non | : |
Séparateur entre une clé et sa valeur. Utilisé lorsque enableSparse est true. |
| maxIter | Non | 100 | Nombre maximal d'itérations. |
| epsilon | Non | 0,000001 | Seuil de convergence. L'algorithme s'arrête lorsque la différence de log-vraisemblance entre deux itérations consécutives est inférieure à cette valeur. |
| regularizedType | Non | None | Méthode de régularisation. Valeurs valides : l1, l2, None. Utilisez l1 pour la sélection de caractéristiques creuses ; utilisez l2 lorsque les caractéristiques sont corrélées et que vous souhaitez pénaliser les coefficients élevés. |
| regularizedLevel | Non | 1 | Coefficient de régularisation. Non utilisé lorsque regularizedType est None. |
| enableFitGoodness | Non | false | Indique s'il faut générer un tableau d'évaluation du modèle. Lorsque true, la table de sortie inclut : R-carré, R-carré ajusté, AIC, degrés de liberté, écart-type des résidus et déviance. Valeurs valides : true, false. |
| enableCoefficientEstimate | Non | false | Indique s'il faut inclure des statistiques par coefficient dans le tableau d'évaluation. Lorsque true, ajoute la valeur T, la valeur P et l'intervalle de confiance [2,5 %, 97,5 %] pour chaque coefficient. Requiert que enableFitGoodness soit true. Valeurs valides : true, false. |
| lifecycle | Non | -1 | Cycle de vie de la table d'évaluation du modèle de sortie. |
| coreNum | Non | Attribué par le système | Nombre de cœurs de calcul. |
| memSizePerCore | Non | Attribué par le système | Mémoire par cœur. |
Exemple
Cet exemple détaille le workflow complet : créez des données d'entraînement, entraînez un modèle de régression linéaire, exécutez des prédictions et inspectez les deux tables de sortie.
Étape 1 : Créez les données d'entraînement
DROP TABLE IF EXISTS lm_test_input;
CREATE TABLE lm_test_input AS
SELECT * FROM
(
SELECT 10 AS y, 1.84 AS x1, 1 AS x2, '0:1.84 1:1' AS sparsecol1
UNION ALL
SELECT 20 AS y, 2.13 AS x1, 0 AS x2, '0:2.13' AS sparsecol1
UNION ALL
SELECT 30 AS y, 3.89 AS x1, 0 AS x2, '0:3.89' AS sparsecol1
UNION ALL
SELECT 40 AS y, 4.19 AS x1, 0 AS x2, '0:4.19' AS sparsecol1
UNION ALL
SELECT 50 AS y, 5.76 AS x1, 0 AS x2, '0:5.76' AS sparsecol1
UNION ALL
SELECT 60 AS y, 6.68 AS x1, 2 AS x2, '0:6.68 1:2' AS sparsecol1
UNION ALL
SELECT 70 AS y, 7.58 AS x1, 0 AS x2, '0:7.58' AS sparsecol1
UNION ALL
SELECT 80 AS y, 8.01 AS x1, 0 AS x2, '0:8.01' AS sparsecol1
UNION ALL
SELECT 90 AS y, 9.02 AS x1, 3 AS x2, '0:9.02 1:3' AS sparsecol1
UNION ALL
SELECT 100 AS y, 10.56 AS x1, 0 AS x2, '0:10.56' AS sparsecol1
) tmp;
Étape 2 : Entraînez le modèle
La commande suivante entraîne le modèle avec l'évaluation du modèle et l'estimation des coefficients activées. La sortie est écrite dans lm_test_input_conf_out.
PAI -name linearregression
-project algo_public
-DinputTableName=lm_test_input
-DlabelColName=y
-DfeatureColNames=x1,x2
-DmodelName=lm_test_input_model_out
-DoutputTableName=lm_test_input_conf_out
-DenableCoefficientEstimate=true
-DenableFitGoodness=true
-Dlifecycle=1;
Étape 3 : Exécutez des prédictions
Transmettez le modèle entraîné et la table d'entrée d'origine au composant prediction . La sortie inclut à la fois les valeurs réelles et prédites.
pai -name prediction
-project algo_public
-DmodelName=lm_test_input_model_out
-DinputTableName=lm_test_input
-DoutputTableName=lm_test_input_predict_out
-DappendColNames=y;
Étape 4 : Consultez le tableau d'évaluation du modèle
Interrogez lm_test_input_conf_out pour vérifier les métriques de qualité d'ajustement et les coefficients de régression.
+----------------------+---------------------+---------------------+--------+--------------------------------------------+-------------+
| colname | value | tscore | pvalue | confidenceinterval | p |
+----------------------+---------------------+---------------------+--------+--------------------------------------------+-------------+
| Intercept | -6.42378496687763 | -2.2725755951390028 | 0.06 | {"2.5%": -11.964027, "97.5%": -0.883543} | coefficient |
| x1 | 10.260063429838898 | 23.270944360826963 | 0.0 | {"2.5%": 9.395908, "97.5%": 11.124219} | coefficient |
| x2 | 0.35374498323846265 | 0.2949247320997519 | 0.81 | {"2.5%": -1.997160, "97.5%": 2.704650} | coefficient |
| rsquared | 0.9879675667384592 | NULL | NULL | NULL | goodness |
| adjusted_rsquared | 0.9845297286637332 | NULL | NULL | NULL | goodness |
| aic | 59.331109494251805 | NULL | NULL | NULL | goodness |
| degree_of_freedom | 7.0 | NULL | NULL | NULL | goodness |
| standardErr_residual | 3.765777749448906 | NULL | NULL | NULL | goodness |
| deviance | 99.26757440771128 | NULL | NULL | NULL | goodness |
+----------------------+---------------------+---------------------+--------+--------------------------------------------+-------------+
La valeur R-carré de 0,988 indique un excellent ajustement. La valeur P pour x2 (0,81) suggère qu'elle a une faible signification statistique dans cet ensemble de données.
Étape 5 : Consultez les résultats de prédiction
+-----+-------------------+---------------------+---------------------------+
| y | prediction_result | prediction_score | prediction_detail |
+-----+-------------------+---------------------+---------------------------+
| 10 | NULL | 12.808476727264404 | {"y": 12.8084767272644} |
| 20 | NULL | 15.43015013867922 | {"y": 15.43015013867922} |
| 30 | NULL | 33.48786177519568 | {"y": 33.48786177519568} |
| 40 | NULL | 36.565880804147355 | {"y": 36.56588080414735} |
| 50 | NULL | 52.674180388994415 | {"y": 52.67418038899442} |
| 60 | NULL | 62.82092871092313 | {"y": 62.82092871092313} |
| 70 | NULL | 71.34749583130122 | {"y": 71.34749583130122} |
| 80 | NULL | 75.75932310613193 | {"y": 75.75932310613193} |
| 90 | NULL | 87.1832221199846 | {"y": 87.18322211998461} |
| 100 | NULL | 101.92248485222113 | {"y": 101.9224848522211} |
+-----+-------------------+---------------------+---------------------------+
La colonne prediction_score contient la valeur prédite par le modèle pour chaque ligne. Connectez ces résultats aux composants en aval pour une analyse ou un rapport ultérieur.
Étapes suivantes
Pour améliorer la précision du modèle, définissez
regularizedTypesurl1oul2et ajustezregularizedLevelpour réduire le surajustement. Commencez parl2si vos caractéristiques sont corrélées ; utilisezl1si vous souhaitez que le modèle sélectionne un sous-ensemble creux de caractéristiques.Pour exécuter des prédictions sur de nouvelles données, transmettez
lm_test_input_model_outau composantpredictionavec une table d'entrée différente.Pour comparer les versions du modèle, activez
enableFitGoodnesset comparez les valeurs R-carré et AIC entre les exécutions.