Pular para o conteúdo principal

stochasticLinearRegression

Introduzido em: v20.1.0 Esta função implementa regressão linear estocástica. Ela oferece suporte a parâmetros personalizados para:
  • taxa de aprendizado
  • coeficiente de regularização L2
  • tamanho do mini-batch
Ela também inclui alguns métodos para atualizar os pesos:
  • Adam (usado por padrão)
  • SGD simples
  • Momentum
  • Nesterov
Uso A função é usada em duas etapas: ajustar o modelo e fazer previsões com novos dados.
  1. Ajuste
Para o ajuste, pode-se usar 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
stochasticLinearRegressionState(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; ele depende apenas do número de argumentos passados para linearRegressionState. Todos eles devem ser valores numéricos. Observe que a coluna com o valor-alvo (que queremos aprender a prever) é inserida como o primeiro argumento.
  1. Predição
Após salvar um estado na tabela, podemos usá-lo várias vezes para predição ou até mesmo mesclá-lo com outros estados e criar modelos novos, ainda melhores.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
A consulta retornará uma coluna de valores previstos. Observe que o primeiro argumento de evalMLMethod é um objeto AggregateFunctionState; os demais são colunas de atributos. test_data é uma tabela como train_data, mas pode não conter o valor-alvo. Observações
  1. Para mesclar dois modelos, o usuário pode criar a seguinte consulta:
SELECT state1 + state2 FROM your_models
onde a tabela your_models contém os dois modelos. Esta consulta retornará um novo objeto AggregateFunctionState.
  1. Você pode recuperar os pesos do modelo criado para uso próprio sem salvar o modelo, se nenhum combinador -State for usado.
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
Uma consulta como esta ajustará o modelo e retornará seus pesos — os primeiros são os pesos, que correspondem aos parâmetros do modelo; o último é o viés. Assim, no exemplo acima, a consulta retornará uma coluna com 3 valores. Sintaxe
stochasticLinearRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Argumentos
  • learning_rate — O coeficiente do tamanho do passo quando é executada uma etapa de descida do gradiente. Uma taxa de aprendizado muito alta pode fazer com que os pesos do modelo se tornem infinitos. O padrão é 0.00001. Float64
  • l2_regularization_coef — Coeficiente de regularização L2, que pode ajudar a evitar sobreajuste. O padrão é 0.1. Float64
  • mini_batch_size — Define o número de elementos cujos 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 para atualizar os pesos: Adam (padrão), SGD, Momentum, Nesterov. Momentum e Nesterov exigem um pouco mais de processamento e memória, mas acabam sendo úteis em termos de velocidade de convergência e estabilidade dos métodos de gradiente estocástico. const String
  • target — Valor-alvo (variável dependente) que se deseja prever. Deve ser numérico. Float*
  • x1, x2, ... — Valores das features (variáveis independentes). Todos devem ser numéricos. Float*
Valor retornado Retorna os pesos treinados do modelo de regressão linear. Os primeiros valores correspondem aos parâmetros do modelo; o último é o viés. Use evalMLMethod para fazer previsões. Array(Float64) Exemplos Treinamento de um 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
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 previstos para os dados de teste
Obtendo os pesos do modelo
Query
SELECT stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
Retorna os pesos do modelo sem salvar o estado
Veja também
Última modificação em 10 de junho de 2026