La regresión logística estándar se utiliza para la clasificación binaria. El componente Logistic Regression for Multiclass Classification en Platform for AI (PAI) amplía esta capacidad para admitir la clasificación multiclase mediante el algoritmo de optimización L-BFGS. Este componente acepta formatos de datos de entrada tanto dispersos como densos.
Configurar el componente
Existen dos métodos de configuración disponibles. Utilice Machine Learning Designer para una configuración visual sin código. Use los comandos de PAI para flujos de trabajo con scripts o automatizados en pipelines.
Método 1: Configuración en Machine Learning Designer
Abra el componente Logistic Regression for Multiclass Classification en Machine Learning Designer (anteriormente Machine Learning Studio) y establezca los siguientes parámetros.
Fields Setting tab
|
Parámetro |
Descripción |
|
Training feature columns |
Columnas de características seleccionadas de la tabla de entrada para el entrenamiento. Admite los tipos de datos DOUBLE y BIGINT. Se admite un máximo de 20 millones de características. |
|
Target columns |
Columnas de etiquetas en la tabla de entrada. |
|
Sparse format |
Indica si los datos de entrada están en formato disperso. |
Parameters Setting tab
|
Parámetro |
Descripción |
|
Regularization type |
La penalización aplicada al modelo durante el entrenamiento. Valores válidos: L1, L2 y None. |
|
Maximum number of iterations |
El número máximo de iteraciones de L-BFGS. Valor predeterminado: |
|
Regularization coefficient |
La intensidad de la penalización por regularización. No aplica cuando Regularization type está establecido en None. |
|
Minimum convergence deviance |
El umbral de convergencia para el algoritmo L-BFGS. El entrenamiento se detiene cuando la diferencia en la log-verosimilitud entre iteraciones consecutivas cae por debajo de este valor. Valor predeterminado: |
Método 2: Uso de comandos de PAI
Pase los parámetros directamente al algoritmo logisticregression_multi mediante comandos de PAI. Ejecute los comandos de PAI a través del componente SQL Script. Para obtener más información, consulte SQL Script.
El siguiente ejemplo muestra la sintaxis del comando:
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"
Parámetros
|
Parámetro |
Obligatorio |
Valor predeterminado |
Descripción |
|
|
Sí |
— |
Nombre de la tabla de entrada. |
|
|
No |
Todas las columnas numéricas |
Columnas de características seleccionadas de la tabla de entrada para el entrenamiento. Se admite un máximo de 20 millones de características. |
|
|
Sí |
— |
Nombre de la columna de etiqueta. |
|
|
No |
Tabla completa |
Particiones seleccionadas de la tabla de entrada. Use |
|
|
Sí |
— |
Nombre del modelo de salida. |
|
|
No |
|
Tipo de regularización. Valores válidos: |
|
|
No |
|
Coeficiente de regularización. No aplica cuando |
|
|
No |
|
Número máximo de iteraciones de L-BFGS. |
|
|
No |
|
Umbral de convergencia para el algoritmo L-BFGS. El entrenamiento se detiene cuando la diferencia en la log-verosimilitud entre iteraciones consecutivas es menor que este valor. |
|
|
No |
|
Indica si los datos de entrada están en formato disperso. Valores válidos: |
|
|
No |
|
Delimitador entre pares clave-valor en la entrada de formato disperso. |
|
|
No |
|
Delimitador entre claves y valores en la entrada de formato disperso. |
|
|
No |
Predeterminado del sistema |
Número de núcleos. |
|
|
No |
Predeterminado del sistema |
Memoria asignada por núcleo, en MB. |
Ejemplo
Este ejemplo entrena un modelo de regresión logística multiclase con un conjunto de datos de cuatro características y ejecuta predicciones. Todos los comandos se ejecutan a través del componente SQL Script.
Paso 1: Crear datos de entrenamiento
Ejecute las siguientes sentencias SQL para crear la tabla 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 tabla contiene cuatro columnas de características DOUBLE (f0–f3) y una columna de etiqueta 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 |
Paso 2: Entrenar el modelo
Ejecute el siguiente comando de PAI para entrenar el modelo y guardarlo como 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";
Paso 3: Ejecutar predicciones
Ejecute el siguiente comando de PAI para generar predicciones y escribir los resultados en 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";
Paso 4: Consultar resultados
Consulte la tabla multi_lr_test_prediction_result para revisar la salida de la predicción:
|
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} |
Las columnas de salida contienen la siguiente información:
prediction_result: La etiqueta de clase predicha.
prediction_score: La probabilidad asignada a la clase predicha.
prediction_detail: Un objeto JSON que asigna cada etiqueta de clase a su probabilidad predicha. Cada clave es una etiqueta de clase y cada valor representa la confianza del modelo para dicha clase. Por ejemplo,
{"0": 0.999..., "1": 2.32e-07, "2": 2.32e-07}indica que el modelo asigna una certeza casi absoluta a la clase0y una probabilidad cercana a cero a las clases1y2.