La regresión lineal PS combina un modelo de regresión lineal con una arquitectura de servidor de parámetros (PS) para gestionar tareas de entrenamiento a gran escala, con capacidad para cientos de miles de millones de muestras y miles de millones de features. La arquitectura PS distribuye tanto la computación como el almacenamiento de los parámetros del modelo entre los workers, lo que mejora la eficiencia y la escalabilidad del entrenamiento.
Utilice la regresión lineal PS cuando su conjunto de datos sea demasiado grande para el entrenamiento en una sola máquina o cuando el espacio de features tenga una dimensionalidad extremadamente alta, incluidos los formatos dispersos.
Funcionamiento
Cargue los datos de entrenamiento desde una tabla de entrada de MaxCompute. El formato denso admite columnas DOUBLE y BIGINT; el formato disperso utiliza columnas STRING en formato clave-valor (KV).
Envíe una tarea de entrenamiento. La arquitectura PS fragmenta los parámetros del modelo en los nodos de servidor y ejecuta actualizaciones de gradiente en paralelo en los nodos worker.
Una vez finalizado el entrenamiento, el modelo se guarda como un modelo sin conexión (predeterminado) o se escribe en una tabla de MaxCompute.
Ejecute la predicción mediante el modelo guardado para generar puntuaciones de salida que se escriben en una tabla de salida independiente.
Configuración del componente
Método 1: Interfaz visual
Agregue el componente PS Linear Regression a su flujo de trabajo en Designer y configure sus parámetros en el panel derecho.
| Tipo de parámetro | Parámetro | Obligatorio | Descripción |
|---|---|---|---|
| Fields setting | Feature Columns | Sí | Las columnas de features de la fuente de datos de entrada que se utilizarán para el entrenamiento. |
| Label Column | Sí | La columna de etiqueta. Admite los tipos de datos DOUBLE y BIGINT. | |
| Is it a sparse format? | No | Seleccione true si los datos de entrada están en formato clave-valor (KV). Valor predeterminado: false. | |
| KV pair separator | No | El separador entre pares clave-valor. Valor predeterminado: espacio. Solo tiene efecto cuando el formato disperso está habilitado. | |
| Key-value separator | No | El separador entre una clave y su valor. Valor predeterminado: dos puntos (:). Solo tiene efecto cuando el formato disperso está habilitado. |
|
| Parameters setting | L1 weight | No | El coeficiente de regularización L1. Un valor mayor produce un modelo más disperso con menos elementos distintos de cero. Valores válidos: números de punto flotante no negativos. Valor predeterminado: 1.0. |
| L2 weight | No | El coeficiente de regularización L2. Un valor mayor indica que los valores absolutos de los parámetros del modelo son menores. Valores válidos: números de punto flotante no negativos. Valor predeterminado: 0. | |
| Maximum iterations | No | El número máximo de iteraciones de entrenamiento. Establezca 0 para no tener límite. Valores válidos: enteros no negativos. Valor predeterminado: 100. | |
| Minimum convergence deviance | No | El umbral de detención para el algoritmo de optimización. El entrenamiento se detiene cuando la mejora cae por debajo de este valor. Valores válidos: [0, 1]. Valor predeterminado: 0.000001. | |
| Maximum feature ID | No | El ID de feature máximo o la dimensión de la feature. Se puede establecer en un valor superior al real. Si se deja en blanco, el sistema ejecuta una tarea SQL para calcularlo automáticamente. Valores válidos: enteros no negativos. | |
| Execution tuning | Number of cores | No | El número de núcleos de CPU por asignar. Valor predeterminado: asignado por el sistema. |
| Memory size per core | No | La memoria asignada por núcleo, en MB. Valor predeterminado: asignado por el sistema. |
La regularización L1 fomenta la dispersión, lo cual es útil cuando muchas features son irrelevantes y se desea un modelo disperso. La regularización L2 reduce todos los coeficientes proporcionalmente, lo que resulta útil cuando las features están correlacionadas. Si no está seguro de cuál utilizar, comience con L2 (establezca L1 weight en 0) y ajuste a partir de ahí.
Método 2: Comando de PAI
Ejecute comandos de PAI a través del componente SQL Script.
Comando de entrenamiento:
PAI -name ps_linearregression
-project algo_public
-DinputTableName="lm_test_input"
-DmodelName="linear_regression_model"
-DlabelColName="label"
-DfeatureColNames="features"
-Dl1Weight=1.0
-Dl2Weight=0.0
-DmaxIter=100
-Depsilon=1e-6
-DenableSparse=true
Comando de predicción:
drop table if exists logistic_regression_predict;
PAI -name prediction
-DmodelName="linear_regression_model"
-DoutputTableName="linear_regression_predict"
-DinputTableName="lm_test_input"
-DappendColNames="label,features"
-DfeatureColNames="features"
-DenableSparse=true
Parámetros:
|
Parámetro |
Obligatorio |
Valor predeterminado |
Descripción |
|
|
Sí |
— |
El nombre de la tabla de entrada. |
|
|
Sí |
— |
El nombre del modelo de salida. |
|
|
Sí |
— |
La columna de etiqueta en la tabla de entrada. Admite los tipos de datos DOUBLE y BIGINT. |
|
|
Sí |
— |
Las columnas de features en la tabla de entrada. Formato denso: DOUBLE y BIGINT. Formato disperso: STRING. |
|
|
No |
— |
La tabla de salida para los resultados de evaluación del modelo. Obligatorio cuando |
|
|
No |
— |
Las particiones de la tabla de entrada que se utilizarán para el entrenamiento. |
|
|
No |
|
Indica si los datos de entrada están en formato disperso (KV). Valores válidos: |
|
|
No |
Espacio |
El separador entre pares clave-valor. Solo tiene efecto cuando |
|
|
No |
|
El separador entre una clave y su valor. Solo tiene efecto cuando |
|
|
No |
|
Indica si se debe guardar el modelo como un modelo sin conexión. Si es |
|
|
No |
|
El número máximo de iteraciones de entrenamiento. Valores válidos: enteros no negativos. |
|
|
No |
|
El umbral de convergencia para el algoritmo de optimización. El entrenamiento se detiene cuando la mejora cae por debajo de este valor. Valores válidos: [0, 1]. |
|
|
No |
|
El coeficiente de regularización L1. Un valor mayor produce un modelo más disperso. Valores válidos: números de punto flotante no negativos. |
|
|
No |
|
El coeficiente de regularización L2. Un valor mayor indica que los valores absolutos de los parámetros del modelo son menores. Valores válidos: números de punto flotante no negativos. |
|
|
No |
|
El ID de feature máximo o la dimensión de la feature. Puede ser mayor que el valor real. Si se establece en 0, el sistema lo calcula automáticamente. Valores válidos: enteros no negativos. |
|
|
No |
Asignado por el sistema |
El número de núcleos de CPU por worker. |
|
|
No |
Asignado por el sistema |
La memoria por núcleo, en MB. |
Ejemplo
Este ejemplo entrena un modelo de regresión lineal PS con datos dispersos en formato KV y ejecuta una predicción.
Paso 1: Crear los datos de entrada
Ejecute la siguiente sentencia SQL en el componente SQL Script para generar la tabla de entrada.
drop table if exists lm_test_input;
create table lm_test_input as
select
*
from
(
select cast(2 as BIGINT) as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features
union all
select cast(1 as BIGINT) as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features
union all
select cast(1 as BIGINT) as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features
union all
select cast(2 as BIGINT) as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features
union all
select cast(1 as BIGINT) as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features
union all
select cast(1 as BIGINT) as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features
union all
select cast(0 as BIGINT) as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features
union all
select cast(1 as BIGINT) as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features
union all
select cast(0 as BIGINT) as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features
union all
select cast(1 as BIGINT) as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features
) tmp;
La tabla tiene dos columnas: label (BIGINT) y features (STRING en formato KV). Cada valor de features codifica IDs de features y valores separados por dos puntos, con pares separados por espacios; por ejemplo, 1:0.55 2:-0.15.

En el formato KV, los IDs de features deben ser enteros positivos y los valores de features deben ser números reales. Si los IDs de features son cadenas, serialice primero los datos. Si los valores de features son cadenas categóricas, aplique la discretización de features antes del entrenamiento.
Paso 2: Construir el flujo de trabajo
Construya un flujo de trabajo en Designer con los componentes que se muestran a continuación. Para obtener detalles sobre la creación de flujos de trabajo, consulte Algorithm modeling.

Paso 3: Configurar los componentes
Read Table-1:
En la pestaña Select Table, establezca Table Name en lm_test_input.
PS Linear Regression:
Utilice la siguiente configuración. Deje todos los demás parámetros con sus valores predeterminados.
| Tipo de parámetro | Parámetro | Valor |
|---|---|---|
| Fields setting | Is it a sparse format? | true |
| Feature Columns | features |
|
| Label Column | label |
|
| Execution tuning | Number of cores | 3 |
| Memory size per core | 1024 MB |
Prediction:
Utilice la siguiente configuración. Deje todos los demás parámetros con sus valores predeterminados.
| Tipo de parámetro | Parámetro | Valor |
|---|---|---|
| Fields setting | Feature Columns | features |
| Verbatim Output Column | label, features |
|
| Sparse Matrix | Selected | |
| Key-value separator | : (dos puntos) |
|
| KV pair separator | (déjelo en blanco para usar espacio) |
Paso 4: Ejecutar el flujo de trabajo
Haga clic en el botón Run
en el lienzo para iniciar el flujo de trabajo.
Paso 5: Consultar los resultados de la predicción
Una vez completado el flujo de trabajo, haga clic con el botón derecho en el componente Prediction-1 y elija View Data > Prediction Result Output.

Ejecutar el mismo ejemplo con comandos de PAI
Los siguientes comandos reproducen el flujo de trabajo anterior mediante la interfaz de comandos de PAI. Todos los comandos utilizan la misma tabla lm_test_input.
Entrenamiento:
PAI -name ps_linearregression
-project algo_public
-DinputTableName="lm_test_input"
-DmodelName="linear_regression_model"
-DlabelColName="label"
-DfeatureColNames="features"
-Dl1Weight=1.0
-Dl2Weight=0.0
-DmaxIter=100
-Depsilon=1e-6
-DenableSparse=true
Predicción:
drop table if exists logistic_regression_predict;
PAI -name prediction
-DmodelName="linear_regression_model"
-DoutputTableName="linear_regression_predict"
-DinputTableName="lm_test_input"
-DappendColNames="label,features"
-DfeatureColNames="features"
-DenableSparse=true
La tabla de salida de predicción (linear_regression_predict) contiene las columnas originales label y features con las puntuaciones predichas anexadas.