El componente Linear Regression entrena un modelo que predice una salida numérica continua a partir de una o más variables de entrada. Úselo cuando la variable objetivo (como ingresos por ventas, temperatura o precio) tenga una relación aproximadamente lineal con las variables de entrada. Para datos dispersos de alta dimensionalidad, donde la mayoría de los valores son cero, habilite la entrada en formato disperso para representar los datos de manera eficiente en formato KV.
Configurar el componente
Método 1: usar la interfaz gráfica
Agregue el componente Linear Regression al lienzo del flujo de trabajo en Designer y configure sus parámetros en el panel derecho.
Fields setting
|
Parámetro |
Descripción |
Valor predeterminado |
|
Select feature columns |
Columnas de variables de la fuente de datos de entrada que se usan para el entrenamiento. |
— |
|
Select label column |
Variable dependiente. Son compatibles los tipos DOUBLE y BIGINT. |
— |
|
Is sparse format |
Representa los datos de entrada en formato KV. Habilite esta opción para datos dispersos de alta dimensionalidad donde la mayoría de los valores son cero. |
Off |
|
Separator between key-value pairs |
Separador entre pares clave-valor cuando el formato disperso está habilitado. |
Comma (,) |
|
Separator between key and value |
Separador entre una clave y su valor cuando el formato disperso está habilitado. |
Colon (:) |
Parameters setting
|
Parámetro |
Descripción |
Valor predeterminado |
|
Maximum iterations |
Número máximo de iteraciones del algoritmo. |
100 |
|
Minimum likelihood error |
Umbral de convergencia de la log-verosimilitud. El algoritmo se detiene cuando la diferencia de log-verosimilitud entre iteraciones consecutivas cae por debajo de este valor. |
0.000001 |
|
Regularization type |
Método de regularización para reducir el sobreajuste. Opciones: L1, L2, None. Use L1 para generar coeficientes dispersos (útil cuando muchas variables son irrelevantes). Use L2 para penalizar coeficientes grandes (útil cuando las variables están correlacionadas). Establezca el valor en None para deshabilitar la regularización. |
None |
|
Regularization coefficient |
Intensidad de la penalización por regularización. Los valores más altos aplican una regularización más fuerte. Se ignora cuando Regularization type se establece en None. |
1 |
|
Generate model evaluation table |
Genera una tabla de evaluación del modelo que contiene: R-Squared, Adjusted R-Squared, AIC, grados de libertad, desviación estándar de los residuos y deviance. |
Off |
|
Regression coefficient evaluation |
Agrega estadísticas por coeficiente a la tabla de evaluación: T-value, P-value e intervalo de confianza [2.5%, 97.5%]. Esta función solo está disponible cuando se selecciona Generate model evaluation table. |
Off |
Execution tuning
|
Parámetro |
Descripción |
Valor predeterminado |
|
Number of computing cores |
Número de núcleos que se van a utilizar. |
System allocated |
|
Memory size per core |
Memoria asignada por núcleo. |
System allocated |
Método 2: usar comandos de PAI
Utilice comandos de PAI para configurar el componente Linear Regression. Ejecútelos mediante el componente SQL Script. Para obtener más información, consulte SQL Script.
PAI -name linearregression
-project algo_public
-DinputTableName=lm_test_input
-DfeatureColNames=x
-DlabelColName=y
-DmodelName=lm_test_input_model_out;
|
Parámetro |
Obligatorio |
Valor predeterminado |
Descripción |
|
inputTableName |
Sí |
— |
Nombre de la tabla de entrada. |
|
modelName |
Sí |
— |
Nombre del modelo de salida. |
|
outputTableName |
No |
— |
Nombre de la tabla de evaluación del modelo de salida. Es obligatorio cuando |
|
labelColName |
Sí |
— |
Columna de la variable dependiente. Son compatibles los tipos DOUBLE y BIGINT. Solo se puede especificar una columna. |
|
featureColNames |
Sí |
— |
Columnas de variables independientes. Para entradas densas, son compatibles los tipos DOUBLE y BIGINT. Para entradas dispersas, es compatible el tipo STRING. |
|
inputTablePartitions |
No |
— |
Particiones de la tabla de entrada que se van a leer. |
|
enableSparse |
No |
false |
Indica si los datos de entrada están en formato disperso. Valores válidos: |
|
itemDelimiter |
No |
|
Separador entre pares clave-valor. Se usa cuando |
|
kvDelimiter |
No |
|
Separador entre una clave y su valor. Se usa cuando |
|
maxIter |
No |
100 |
Número máximo de iteraciones. |
|
epsilon |
No |
0.000001 |
Umbral de convergencia. El algoritmo se detiene cuando la diferencia de log-verosimilitud entre iteraciones consecutivas es menor que este valor. |
|
regularizedType |
No |
None |
Método de regularización. Valores válidos: |
|
regularizedLevel |
No |
1 |
Coeficiente de regularización. No se utiliza cuando |
|
enableFitGoodness |
No |
false |
Indica si se genera una tabla de evaluación del modelo. Cuando es |
|
enableCoefficientEstimate |
No |
false |
Indica si se incluyen estadísticas por coeficiente en la tabla de evaluación. Cuando es |
|
lifecycle |
No |
-1 |
Ciclo de vida de la tabla de evaluación del modelo de salida. |
|
coreNum |
No |
System allocated |
Número de núcleos de cómputo. |
|
memSizePerCore |
No |
System allocated |
Memoria asignada por núcleo. |
Ejemplo
Este ejemplo recorre el flujo de trabajo completo: crear los datos de entrenamiento, entrenar un modelo de regresión lineal, ejecutar predicciones e inspeccionar ambas tablas de salida.
Paso 1: crear los datos de entrenamiento
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;
Paso 2: entrenar el modelo
El siguiente comando entrena el modelo con la evaluación del modelo y la estimación de coeficientes habilitadas. La salida se escribe en 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;
Paso 3: ejecutar predicciones
Pase el modelo entrenado y la tabla de entrada original al componente prediction. La salida incluye tanto los valores reales como los predichos.
pai -name prediction
-project algo_public
-DmodelName=lm_test_input_model_out
-DinputTableName=lm_test_input
-DoutputTableName=lm_test_input_predict_out
-DappendColNames=y;
Paso 4: consultar la tabla de evaluación del modelo
Consulte lm_test_input_conf_out para comprobar las métricas de bondad de ajuste y los coeficientes de regresión.
+----------------------+---------------------+---------------------+--------+--------------------------------------------+-------------+
| 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 |
+----------------------+---------------------+---------------------+--------+--------------------------------------------+-------------+
El valor R-Squared de 0.988 indica un ajuste excelente. El P-value de x2 (0.81) sugiere que esta variable tiene poca significancia estadística en este conjunto de datos.
Paso 5: consultar los resultados de la predicción
+-----+-------------------+---------------------+---------------------------+
| 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 columna prediction_score contiene el valor predicho por el modelo para cada fila. Conecte estos resultados a componentes posteriores para análisis o reportes adicionales.
Pasos siguientes
Para mejorar la precisión del modelo, establezca
regularizedTypeenl1ol2y ajusteregularizedLevelpara reducir el sobreajuste. Comience conl2si sus variables están correlacionadas. Usel1si desea que el modelo seleccione un subconjunto disperso de variables.Para ejecutar predicciones con datos nuevos, pase
lm_test_input_model_outal componentepredictionjunto con una tabla de entrada diferente.Para comparar versiones del modelo, habilite
enableFitGoodnessy compare los valores de R-Squared y AIC entre ejecuciones.