La régression logistique standard gère la classification binaire. Le composant Logistic Regression for Multiclass Classification de Platform for AI (PAI) étend cette approche à la classification multiclasse grâce à l'algorithme d'optimisation L-BFGS. Ce composant accepte les formats de données d'entrée clairsemés (sparse) et denses.
Configurer le composant
Deux méthodes de configuration sont disponibles. Utilisez Machine Learning Designer pour une configuration visuelle sans code, ou les commandes PAI pour automatiser les workflows via des scripts ou des pipelines.
Méthode 1 : Configuration dans Machine Learning Designer
Ouvrez le composant Logistic Regression for Multiclass Classification dans Machine Learning Designer (anciennement Machine Learning Studio) et définissez les paramètres suivants.
Fields Setting tab
| Paramètre | Description |
|---|---|
| Training feature columns | Colonnes de caractéristiques sélectionnées dans la table d'entrée pour l'entraînement. Prend en charge les types de données DOUBLE et BIGINT. Jusqu'à 20 millions de caractéristiques sont prises en charge. |
| Target columns | Colonnes d'étiquettes dans la table d'entrée. |
| Sparse format | Indique si les données d'entrée sont au format clairsemé (sparse). |
Parameters Setting tab
| Paramètre | Description |
|---|---|
| Regularization type | Pénalité appliquée au modèle pendant l'entraînement. Valeurs valides : L1, L2 et None. |
| Maximum number of iterations | Nombre maximal d'itérations L-BFGS. Par défaut : 100. |
| Regularization coefficient | Intensité de la pénalité de régularisation. Non applicable lorsque Regularization type est défini sur None. |
| Minimum convergence deviance | Seuil de convergence pour l'algorithme L-BFGS. L'entraînement s'arrête lorsque la différence de log-vraisemblance entre les itérations consécutives est inférieure à cette valeur. Par défaut : 0.000001. |
Méthode 2 : Utilisation des commandes PAI
Transmettez les paramètres directement à l'algorithme logisticregression_multi via les commandes PAI. Exécutez ces commandes dans le composant SQL Script. Pour plus d'informations, consultez SQL Script.
L'exemple suivant illustre la syntaxe de la commande :
PAI -name logisticregression_multi
-project algo_public
-DmodelName="xlab_m_logistic_regression_6096"
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="l1"
-Depsilon="0.000001"
-DlabelColName="y"
-DfeatureColNames="pdays,emp_var_rate"
-DgoodValue="1"
-DinputTableName="bank_data"
Paramètres
| Paramètre | Requis | Par défaut | Description |
|---|---|---|---|
inputTableName |
Oui | — | Nom de la table d'entrée. |
featureColNames |
Non | Toutes les colonnes numériques | Colonnes de caractéristiques sélectionnées dans la table d'entrée pour l'entraînement. Jusqu'à 20 millions de caractéristiques sont prises en charge. |
labelColName |
Oui | — | Nom de la colonne d'étiquette. |
inputTablePartitions |
Non | Table complète | Partitions sélectionnées dans la table d'entrée. Utilisez partition_name=value pour les partitions uniques et name1=value1/name2=value2 pour les partitions multiniveaux. Séparez plusieurs partitions par des virgules (,). |
modelName |
Oui | — | Nom du modèle de sortie. |
regularizedType |
Non | l1 |
Type de régularisation. Valeurs valides : l1, l2 et None. |
regularizedLevel |
Non | 1.0 |
Coefficient de régularisation. Non applicable lorsque regularizedType est défini sur None. |
maxIter |
Non | 100 |
Nombre maximal d'itérations L-BFGS. |
epsilon |
Non | 1.0e-06 |
Seuil de convergence pour l'algorithme L-BFGS. L'entraînement s'arrête lorsque la différence de log-vraisemblance entre les itérations consécutives est inférieure à cette valeur. |
enableSparse |
Non | false |
Indique si les données d'entrée sont au format clairsemé (sparse). Valeurs valides : true et false. |
itemDelimiter |
Non | , |
Délimiteur entre les paires clé-valeur dans les entrées au format clairsemé. |
kvDelimiter |
Non | : |
Délimiteur entre les clés et les valeurs dans les entrées au format clairsemé. |
coreNum |
Non | Paramètre système par défaut | Nombre de cœurs. |
memSizePerCore |
Non | Paramètre système par défaut | Mémoire allouée par cœur, en Mo. |
Exemple
Cet exemple entraîne un modèle de régression logistique multiclasse sur un jeu de données comportant quatre caractéristiques, puis effectue des prédictions. Toutes les commandes sont exécutées via le composant SQL Script.
Étape 1 : Création des données d'entraînement
Exécutez les instructions SQL suivantes pour créer la table multi_lr_test_input :
drop table if exists multi_lr_test_input;
create table multi_lr_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(2 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
) a;
La table contient quatre colonnes de caractéristiques de type DOUBLE (f0–f3) et une colonne d'étiquette de type BIGINT :
| f0 | f1 | f2 | f3 | label |
|---|---|---|---|---|
| 1.0 | 0.0 | 0.0 | 0.0 | 0 |
| 0.0 | 0.0 | 1.0 | 0.0 | 2 |
| 0.0 | 0.0 | 0.0 | 1.0 | 1 |
| 0.0 | 1.0 | 0.0 | 0.0 | 0 |
Étape 2 : Entraînement du modèle
Exécutez la commande PAI suivante pour entraîner le modèle et l'enregistrer sous le nom multi_lr_test_model :
drop offlinemodel if exists multi_lr_test_model;
PAI -name logisticregression_multi
-project algo_public
-DmodelName="multi_lr_test_model"
-DitemDelimiter=","
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="None"
-Depsilon="0.000001"
-DkvDelimiter=":"
-DlabelColName="label"
-DfeatureColNames="f0,f1,f2,f3"
-DenableSparse="false"
-DinputTableName="multi_lr_test_input";
Étape 3 : Exécution des prédictions
Exécutez la commande PAI suivante pour générer des prédictions et écrire les résultats dans multi_lr_test_prediction_result :
drop table if exists multi_lr_test_prediction_result;
PAI -name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DmodelName="multi_lr_test_model"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="multi_lr_test_prediction_result"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DinputTableName="multi_lr_test_input"
-DenableSparse="false"
-DappendColNames="label";
Étape 4 : Consultation des résultats
Interrogez la table multi_lr_test_prediction_result pour examiner les résultats de prédiction :
| label | prediction_result | prediction_score | prediction_detail |
|---|---|---|---|
| 0 | 0 | 0.9999997274902165 | {"0": 0.9999997274902165, "1": 2.324679066261573e-07, "2": 2.324679066261569e-07} |
| 0 | 0 | 0.9999997274902165 | {"0": 0.9999997274902165, "1": 2.324679066261573e-07, "2": 2.324679066261569e-07} |
| 2 | 2 | 0.9999999155958832 | {"0": 2.018833979850994e-07, "1": 2.324679066261573e-07, "2": 0.9999999155958832} |
| 1 | 1 | 0.9999999155958832 | {"0": 2.018833979850994e-07, "1": 0.9999999155958832, "2": 2.324679066261569e-07} |
Les colonnes de sortie contiennent les informations suivantes :
prediction_result : L'étiquette de classe prédite.
prediction_score : La probabilité attribuée à la classe prédite.
prediction_detail : Un objet JSON associant chaque étiquette de classe à sa probabilité prédite. Chaque clé correspond à une étiquette de classe et chaque valeur représente la confiance du modèle pour cette classe. Par exemple,
{"0": 0.999..., "1": 2.32e-07, "2": 2.32e-07}indique que le modèle attribue une quasi-certitude à la classe0et une probabilité quasi nulle aux classes1et2.