La regresión logística para clasificación binaria entrena un clasificador binario mediante el algoritmo de regresión logística. El componente admite datos de entrada densos y dispersos, y utiliza el optimizador BFGS de memoria limitada (L-BFGS).
Funcionamiento
El entrenamiento se ejecuta en tres etapas:
Procesamiento de características: el algoritmo lee las columnas de características especificadas (tipos DOUBLE o BIGINT) y la columna de etiqueta de la tabla de entrada. Si la entrada tiene formato disperso, el componente analiza los pares clave-valor antes de procesarlos.
Entrenamiento: L-BFGS minimiza iterativamente la función de pérdida. En cada iteración se actualizan los pesos del modelo. El entrenamiento se detiene cuando la mejora de la log-verosimilitud entre dos iteraciones consecutivas cae por debajo de
epsilon, o cuando se alcanza el número máximo de iteraciones.Predicción: el modelo entrenado asigna a cada fila una etiqueta de clase predicha (
prediction_result), una puntuación de confianza (prediction_score) y una distribución de probabilidad para todas las clases (prediction_detail).
Configurar el componente
Elija uno de los siguientes métodos.
Método 1: Configuración en Machine Learning Designer
Abra la pestaña de configuración del pipeline en Machine Learning Designer y establezca los parámetros en el panel del componente.
Fields setting
|
Parámetro |
Descripción |
|
Training feature columns |
Columnas de características de la tabla de entrada que se utilizan para el entrenamiento. Admite tipos DOUBLE y BIGINT. Máximo de 20 millones de características. |
|
Target columns |
La columna de etiqueta en la tabla de entrada. |
|
Positive class value |
El valor de etiqueta que representa la clase positiva en la clasificación binaria. |
|
Use sparse format |
Habilite esta opción si los datos de entrada tienen formato disperso. |
Parameters setting
|
Parámetro |
Descripción |
Valor predeterminado |
|
Regularization type |
Regularización que se aplica durante el entrenamiento. Valores válidos: None, L1, L2. Consulte Elegir un tipo de regularización. |
— |
|
Maximum iterations |
Número máximo de iteraciones de L-BFGS. |
100 |
|
Regularization coefficient |
Intensidad de la regularización. No tiene efecto cuando Regularization type es None. |
— |
|
Minimum convergence deviance |
Umbral de convergencia ( |
0.000001 |
Tuning
|
Parámetro |
Descripción |
|
Cores |
El sistema lo establece automáticamente. |
|
Memory size per core |
El sistema lo establece automáticamente. |
Método 2: Configuración mediante comandos de PAI
Ejecute el siguiente comando de PAI a través del componente SQL Script.
PAI -name logisticregression_binary
-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 obligatorios
|
Parámetro |
Descripción |
|
|
Nombre de la tabla de entrada. |
|
|
Columna de etiqueta en la tabla de entrada. |
|
|
Nombre del modelo sin conexión de salida. |
Parámetros opcionales
|
Parámetro |
Descripción |
Valor predeterminado |
|
|
Columnas de características utilizadas para el entrenamiento. Máximo de 20 millones de características. |
Todas las columnas numéricas |
|
|
Particiones que se usarán de la tabla de entrada. Formatos: |
Tabla completa |
|
|
Tipo de regularización. Valores válidos: |
|
|
|
Coeficiente de regularización. No tiene efecto cuando |
|
|
|
Número máximo de iteraciones de L-BFGS. |
|
|
|
Umbral de convergencia. El entrenamiento se detiene cuando la mejora de la log-verosimilitud entre dos iteraciones cae por debajo de este valor. |
|
|
|
Valor de etiqueta correspondiente a la clase positiva. Se asigna aleatoriamente si no se especifica. |
— |
|
|
Indica si los datos de entrada tienen formato disperso. Valores válidos: |
|
|
|
Delimitador entre pares clave-valor en la entrada dispersa. |
|
|
|
Delimitador entre claves y valores en la entrada dispersa. |
|
|
|
Número de núcleos. |
Asignado automáticamente |
|
|
Tamaño de memoria por núcleo, en MB. |
Asignado automáticamente |
Elegir un tipo de regularización
|
Tipo de regularización |
Cuándo usarlo |
Efecto |
|
L1 (predeterminado) |
Datos de alta dimensionalidad con muchas características irrelevantes |
Lleva los coeficientes de las características irrelevantes a cero y genera un modelo disperso |
|
L2 |
La mayoría de las características son relevantes y se desea evitar coeficientes grandes |
Reduce todos los coeficientes hacia cero sin eliminarlos |
|
None |
Conjuntos de datos pequeños o cuando se quiere entender la línea base sin regularización |
No se aplica regularización; se ignora |
Formato de datos dispersos
Cuando enableSparse es true, el componente lee cada celda como una cadena de clave-valor. Las claves son índices basados en cero y los valores deben ser numéricos. Los valores de clave no numéricos provocan un error.
itemDelimitersepara los pares clave-valor dentro de una celda.kvDelimitersepara una clave de su valor.
Ejemplo de entrada con los delimitadores predeterminados (, y :):
|
key_value |
|
1:100,4:200,5:300 |
|
1:10,2:20,3:30 |
Ejemplo
Este ejemplo muestra un flujo de trabajo completo de entrenamiento a predicción con un conjunto de datos denso.
Paso 1: Crear la tabla de entrenamiento
DROP TABLE IF EXISTS lr_test_input;
CREATE TABLE 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), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(1 AS BIGINT)
UNION ALL
SELECT CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
UNION ALL
SELECT CAST(0 AS DOUBLE), CAST(1 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS DOUBLE), CAST(0 AS BIGINT)
) a;
La tabla resultante lr_test_input:
|
f0 |
f1 |
f2 |
f3 |
label |
|
1.0 |
0.0 |
0.0 |
0.0 |
0 |
|
0.0 |
0.0 |
1.0 |
0.0 |
1 |
|
0.0 |
0.0 |
0.0 |
1.0 |
1 |
|
0.0 |
1.0 |
0.0 |
0.0 |
0 |
|
1.0 |
0.0 |
0.0 |
0.0 |
0 |
|
0.0 |
1.0 |
0.0 |
0.0 |
0 |
Paso 2: Entrenar el modelo
DROP OFFLINEMODEL IF EXISTS lr_test_model;
PAI -name logisticregression_binary
-project algo_public
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="None"
-Depsilon="0.000001"
-DkvDelimiter=":"
-DlabelColName="label"
-DfeatureColNames="f0,f1,f2,f3"
-DenableSparse="false"
-DgoodValue="1"
-DinputTableName="lr_test_input";
Paso 3: Ejecutar la predicción
Para obtener detalles sobre los parámetros del componente Prediction, consulte Prediction.
DROP TABLE IF EXISTS lr_test_prediction_result;
PAI -name prediction
-project algo_public
-DdetailColName="prediction_detail"
-DmodelName="lr_test_model"
-DitemDelimiter=","
-DresultColName="prediction_result"
-Dlifecycle="28"
-DoutputTableName="lr_test_prediction_result"
-DscoreColName="prediction_score"
-DkvDelimiter=":"
-DinputTableName="lr_test_input"
-DenableSparse="false"
-DappendColNames="label";
Paso 4: Revisar los resultados
La tabla de salida lr_test_prediction_result contiene:
|
label |
prediction_result |
prediction_score |
prediction_detail |
|
0 |
0 |
0.9999998793434426 |
{"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
|
1 |
1 |
0.999999799574135 |
{"0": 2.004258650156743e-07, "1": 0.999999799574135} |
|
1 |
1 |
0.999999799574135 |
{"0": 2.004258650156743e-07, "1": 0.999999799574135} |
|
0 |
0 |
0.9999998793434426 |
{"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
|
0 |
0 |
0.9999998793434426 |
{"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
|
0 |
0 |
0.9999998793434426 |
{"0": 0.9999998793434426, "1": 1.206565574533681e-07} |
Columnas de salida:
prediction_result: etiqueta de clase predicha (0 o 1)prediction_score: probabilidad de la clase predichaprediction_detail: distribución de probabilidad para todas las clases como objeto JSON
Todas las predicciones coinciden con las etiquetas reales, con puntuaciones de confianza superiores a 0.9999.