Saltar al contenido principal

stochasticLogisticRegression

Introducido en: v20.1.0 Esta función implementa la regresión logística estocástica. Puede utilizarse para problemas de clasificación binaria, admite los mismos parámetros personalizados que stochasticLinearRegression y funciona de la misma manera. Uso La función se utiliza en dos pasos:
  1. Entrenamiento
Para el entrenamiento, 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
stochasticLogisticRegression(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
Aquí también necesitamos insertar datos en la tabla train_data. El número de parámetros no es fijo; depende únicamente del número de argumentos pasados a logisticRegressionState. Todos deben ser valores numéricos. Ten en cuenta que la columna con el valor objetivo (que queremos aprender a predecir) se inserta como primer argumento. Las etiquetas predichas deben estar en [-1, 1].
  1. Predicción
Usando el estado guardado, podemos predecir la probabilidad de que un objeto tenga la etiqueta 1.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
La consulta devolverá una columna de probabilidades. Tenga en cuenta que el primer argumento de evalMLMethod es un objeto AggregateFunctionState, y a continuación van columnas de características. También podemos establecer un umbral de probabilidad, que asigna elementos a distintas etiquetas.
SELECT result < 1.1 AND result > 0.5 FROM
(WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) AS result FROM test_data)
Entonces, el resultado serán etiquetas. test_data es una tabla como train_data, pero puede no contener el valor objetivo. Sintaxis
stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Argumentos
  • learning_rate — Coeficiente de la longitud del paso cuando se realiza un paso de descenso de gradiente. Una tasa de aprendizaje demasiado alta puede producir pesos infinitos en el modelo. 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 de gradiente. El descenso puramente estocástico usa un solo elemento; sin embargo, usar lotes pequeños (de unos 10 elementos) hace que los pasos de 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, resultan útiles en cuanto a velocidad de convergencia y estabilidad de los métodos de gradiente estocástico. String
  • target — Etiquetas objetivo de clasificación binaria. Deben estar en el intervalo [-1, 1]. Float
  • x1, x2, ... — Valores de las características (variables independientes). Todos deben ser numéricos. Float
Valor devuelto Devuelve los pesos del modelo de regresión logística entrenado. Use evalMLMethod para hacer predicciones; devuelve probabilidades de que el objeto tenga la etiqueta 1. Array(Float64) Ejemplos Entrenamiento de un modelo
Query
CREATE TABLE your_model
ENGINE = MergeTree
ORDER BY tuple()
AS SELECT
stochasticLogisticRegressionState(1.0, 1.0, 10, '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 valores de probabilidad para los datos de prueba
Clasificación con umbral
Query
SELECT result < 1.1 AND result > 0.5
FROM (
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) AS result FROM test_data)
Response
Devuelve etiquetas de clasificación binaria usando un umbral de probabilidad
Vea también
Última modificación el 10 de junio de 2026