Saltar al contenido principal

stochasticLinearRegression

Introducido en: v20.1.0 Esta función implementa la regresión lineal estocástica. Admite parámetros personalizados para:
  • tasa de aprendizaje
  • coeficiente de regularización L2
  • tamaño del mini-batch
También incluye algunos métodos para actualizar los pesos:
  • Adam (usado de forma predeterminada)
  • SGD simple
  • Momentum
  • Nesterov
Uso La función se utiliza en dos pasos: ajustar el modelo y hacer predicciones con datos nuevos.
  1. Ajuste
Para ajustar, se puede usar una consulta como esta:
CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
Aquí también debemos insertar datos en la tabla train_data. El número de parámetros no es fijo; depende únicamente de la cantidad de argumentos que se pasan a linearRegressionState. Todos deben ser valores numéricos. Tenga en cuenta que la columna con el valor objetivo (que queremos aprender a predecir) se pasa como primer argumento.
  1. Predicción
Después de guardar un estado en la tabla, podemos usarlo varias veces para hacer predicciones o incluso fusionarlo con otros estados y crear modelos nuevos, aún mejores.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
La consulta devolverá una columna de valores predichos. Tenga en cuenta que el primer argumento de evalMLMethod es un objeto AggregateFunctionState; los siguientes son las columnas de características. test_data es una tabla como train_data, pero puede no contener el valor objetivo. Notas
  1. Para fusionar dos modelos, el usuario puede crear una consulta como esta:
SELECT state1 + state2 FROM your_models
donde la tabla your_models contiene ambos modelos. Esta consulta devolverá un nuevo objeto AggregateFunctionState.
  1. Puede recuperar los pesos del modelo creado para utilizarlos sin guardar el modelo, si no se usa el combinador -State.
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
Una consulta como esta ajustará el modelo y devolverá sus pesos: primero aparecen los pesos, que corresponden a los parámetros del modelo, y el último valor es el sesgo. Así, en el ejemplo anterior, la consulta devolverá una columna con 3 valores. Sintaxis
stochasticLinearRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Argumentos
  • learning_rate — Coeficiente de la longitud del paso cuando se ejecuta un paso de descenso por gradiente. Una tasa de aprendizaje demasiado alta puede hacer que el modelo tenga pesos infinitos. El valor predeterminado es 0.00001. Float64
  • l2_regularization_coef — Coeficiente de regularización L2 que puede ayudar a evitar el sobreajuste. El valor predeterminado es 0.1. Float64
  • mini_batch_size — Establece el número de elementos para los que se calcularán y sumarán los gradientes a fin de realizar un paso de descenso por gradiente. El descenso estocástico puro usa un solo elemento; sin embargo, usar lotes pequeños (de unos 10 elementos) hace que los pasos del gradiente sean más estables. El valor predeterminado es 15. UInt64
  • method — Método para actualizar los pesos: Adam (predeterminado), SGD, Momentum, Nesterov. Momentum y Nesterov requieren algo más de cálculo y memoria; sin embargo, son útiles en términos de velocidad de convergencia y estabilidad de los métodos de gradiente estocástico. const String
  • target — Valor objetivo (variable dependiente) que se va a aprender a predecir. Debe ser numérico. Float*
  • x1, x2, ... — Valores de las características (variables independientes). Todos deben ser numéricos. Float*
Valor devuelto Devuelve los pesos entrenados del modelo de regresión lineal. Los primeros valores corresponden a los parámetros del modelo; el último es el sesgo. Use evalMLMethod para realizar predicciones. Array(Float64) Ejemplos Entrenamiento de un modelo
Query
CREATE TABLE your_model
ENGINE = Memory
AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data
Response
Guarda el estado del modelo entrenado en la tabla
Realizar predicciones
Query
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
Response
Devuelve los valores predichos para los datos de prueba
Obtener los pesos del modelo
Query
SELECT stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
Devuelve los pesos del modelo sin guardar el estado
Véase también
Última modificación el 10 de junio de 2026