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

stochasticLogisticRegression

Добавленный в: v20.1.0 Эта функция реализует стохастическую логистическую регрессию. Её можно использовать для задачи бинарной классификации; она поддерживает те же пользовательские параметры, что и stochasticLinearRegression, и работает так же. Использование Функция используется в два этапа:
  1. Обучение
Для обучения можно использовать такой запрос:
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;
Здесь нам также нужно вставить данные в таблицу train_data. Количество параметров не фиксировано: оно зависит только от числа аргументов, переданных в logisticRegressionState. Все они должны быть числовыми значениями. Обратите внимание, что столбец с целевым значением (которое мы хотим научиться предсказывать) передаётся как первый аргумент. Предсказанные метки должны находиться в диапазоне [-1, 1].
  1. Предсказание
Используя сохранённое состояние, можно предсказать вероятность того, что объект имеет метку 1.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
Запрос вернет столбец вероятностей. Обратите внимание, что первый аргумент evalMLMethod — это объект AggregateFunctionState, а далее идут столбцы признаков. Мы также можем задать порог вероятности, который относит элементы к разным меткам.
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)
В результате будут получены метки. test_data — это таблица, как и train_data, но она может не содержать целевое значение. Синтаксис
stochasticLogisticRegression([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 требуют немного больше вычислений и памяти, однако могут быть полезны с точки зрения скорости сходимости и стабильности методов стохастического градиента. String
  • target — Целевые метки бинарной классификации. Должны находиться в диапазоне [-1, 1]. Float
  • x1, x2, ... — Значения признаков (независимые переменные). Все должны быть числовыми. Float
Возвращаемое значение Возвращает веса обученной модели логистической регрессии. Для прогнозирования используйте evalMLMethod, который возвращает вероятности того, что объект имеет метку 1. Array(Float64) Примеры Обучение модели
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
Сохраняет состояние обученной модели в таблицу
Получение прогнозов
Query
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Response
Возвращает значения вероятностей для тестовых данных
Классификация с пороговым значением
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
Возвращает метки бинарной классификации с использованием порогового значения вероятности
См. также
Последнее изменение 10 июня 2026 г.