Перейти к основному содержанию

stochasticLinearRegression

Добавленный в: v20.1.0 Эта функция реализует стохастическую линейную регрессию. Она поддерживает пользовательские параметры для:
  • скорости обучения
  • коэффициента L2-регуляризации
  • размера мини-батча
Также доступны несколько методов обновления весов:
  • Adam (используется по умолчанию)
  • простой SGD
  • Momentum
  • Nesterov
Использование Функция используется в два этапа: обучение модели и выполнение прогнозов на новых данных.
  1. Обучение
Для обучения можно использовать такой запрос:
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;
Здесь нам также нужно вставить данные в таблицу train_data. Количество параметров не фиксировано и зависит только от числа аргументов, переданных в linearRegressionState. Все они должны быть числовыми значениями. Обратите внимание, что столбец с целевым значением (которое мы хотим научить модель предсказывать) передаётся как первый аргумент.
  1. Прогнозирование
После сохранения состояния в таблице мы можем многократно использовать его для прогнозирования или даже объединять с другими состояниями, создавая новые, ещё более качественные модели.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
Запрос вернёт столбец предсказанных значений. Обратите внимание, что первый аргумент evalMLMethod — объект AggregateFunctionState, а следующие — столбцы признаков. test_data — это таблица, как train_data, но она может не содержать целевое значение. Примечания
  1. Чтобы объединить две модели, пользователь может создать такой запрос:
SELECT state1 + state2 FROM your_models
где таблица your_models содержит обе модели. Этот запрос вернет новый объект AggregateFunctionState.
  1. Вы можете получить веса созданной модели для собственных нужд, не сохраняя саму модель, если не используется комбинатор -State.
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
Такой запрос выполнит подгонку модели и вернёт её веса: первыми идут веса, соответствующие параметрам модели, а последний — свободный член. Таким образом, в приведённом выше примере запрос вернёт столбец с 3 значениями. Синтаксис
stochasticLinearRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Аргументы
  • learning_rate — Коэффициент длины шага при выполнении шага градиентного спуска. Слишком высокая скорость обучения может привести к бесконечным весам модели. Значение по умолчанию — 0.00001. Float64
  • l2_regularization_coef — Коэффициент L2-регуляризации, который может помочь предотвратить переобучение. Значение по умолчанию — 0.1. Float64
  • mini_batch_size — Задаёт количество элементов, для которых вычисляются и суммируются градиенты, чтобы выполнить один шаг градиентного спуска. Чистый стохастический спуск использует один элемент, однако небольшие батчи (около 10 элементов) делают шаги градиента более стабильными. Значение по умолчанию — 15. UInt64
  • method — Метод обновления весов: Adam (по умолчанию), SGD, Momentum, Nesterov. Momentum и Nesterov требуют немного больше вычислений и памяти, однако полезны с точки зрения скорости сходимости и стабильности методов стохастического градиента. const String
  • target — Целевое значение (зависимая переменная), которое нужно научиться предсказывать. Должно быть числовым. Float*
  • x1, x2, ... — Значения признаков (независимые переменные). Все должны быть числовыми. Float*
Возвращаемое значение Возвращает веса обученной модели линейной регрессии. Первые значения соответствуют параметрам модели, последнее — свободному члену. Используйте evalMLMethod для предсказания. Array(Float64) Примеры Обучение модели
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
Сохраняет состояние обученной модели в таблицу
Построение прогнозов
Query
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
Response
Возвращает предсказанные значения для тестовых данных
Получение весов модели
Query
SELECT stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
Возвращает веса модели без сохранения состояния
См. также
Последнее изменение 10 июня 2026 г.