Pular para o conteúdo principal

stochasticLogisticRegression

Introduzido na versão: v20.1.0 Esta função implementa regressão logística estocástica. Ela pode ser usada para problemas de classificação binária, oferece suporte aos mesmos parâmetros personalizados que stochasticLinearRegression e funciona da mesma forma. Uso A função é usada em duas etapas:
  1. Treinamento
Para o treinamento, pode ser usada uma 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;
Aqui, também precisamos inserir dados na tabela train_data. O número de parâmetros não é fixo; depende apenas do número de argumentos passados para logisticRegressionState. Todos eles devem ser valores numéricos. Observe que a coluna com o valor-alvo (que queremos aprender a prever) deve ser inserida como o primeiro argumento. Os rótulos previstos devem estar em [-1, 1].
  1. Predição
Usando o estado salvo, podemos prever a probabilidade de um objeto ter o rótulo 1.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
A consulta retornará uma coluna de probabilidades. Observe que o primeiro argumento de evalMLMethod é um objeto AggregateFunctionState; os seguintes são colunas de características. Também podemos definir um limite de probabilidade, que atribui elementos a rótulos diferentes.
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)
Então, o resultado serão rótulos. test_data é uma tabela como train_data, mas pode não conter o valor alvo. Sintaxe
stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Argumentos
  • learning_rate — Coeficiente do tamanho do passo quando um passo de descida do gradiente é executado. Uma taxa de aprendizado muito alta pode causar pesos infinitos no modelo. O padrão é 0.00001. Float64
  • l2_regularization_coef — Coeficiente de regularização L2, que pode ajudar a evitar overfitting. O padrão é 0.1. Float64
  • mini_batch_size — Define o número de elementos para os quais os gradientes serão calculados e somados para executar um passo de descida do gradiente. A descida estocástica pura usa um único elemento; no entanto, usar batches pequenos (cerca de 10 elementos) torna os passos do gradiente mais estáveis. O padrão é 15. UInt64
  • method — Método de atualização dos pesos: Adam (padrão), SGD, Momentum, Nesterov. Momentum e Nesterov exigem um pouco mais de computação e memória; no entanto, podem ser úteis em termos de velocidade de convergência e estabilidade dos métodos de gradiente estocástico. String
  • target — Rótulos-alvo da classificação binária. Devem estar no intervalo [-1, 1]. Float
  • x1, x2, ... — Valores das características (variáveis independentes). Todos devem ser numéricos. Float
Valor retornado Retorna os pesos treinados do modelo de regressão logística. Use evalMLMethod para fazer previsões, que retorna probabilidades de um objeto ter o rótulo 1. Array(Float64) Exemplos Treinando um 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
Salva o estado do modelo treinado na tabela
Fazendo previsões
Query
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Response
Retorna valores de probabilidade para os dados de teste
Classificação por limiar
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
Retorna rótulos de classificação binária usando limiar de probabilidade
Veja também
Última modificação em 10 de junho de 2026