stochasticLinearRegression
Эта функция реализует стохастическую линейную регрессию. В ней предусмотрены настраиваемые параметры скорости обучения, коэффициента L2‑регуляризации, размера мини‑батча, а также несколько методов обновления весов (Adam (используется по умолчанию), simple SGD, Momentum и Nesterov).
Параметры
Существует четыре настраиваемых параметра. Они передаются в функцию последовательно, но нет необходимости указывать все четыре — будут использованы значения по умолчанию. Однако для получения качественной модели требуется некоторая настройка параметров.
learning rate— это коэффициент, определяющий длину шага при выполнении шага градиентного спуска. Слишком большое значение learning rate может привести к бесконечно большим значениям весов модели. Значение по умолчанию —0.00001.l2 regularization coefficient— коэффициент L2-регуляризации, который может помочь предотвратить переобучение. Значение по умолчанию —0.1.mini-batch sizeзадаёт количество элементов, для которых градиенты будут вычислены и суммированы для выполнения одного шага градиентного спуска. Чистый стохастический спуск использует один элемент, однако использование небольших мини-батчей (около 10 элементов) делает шаги градиентного спуска более стабильными. Значение по умолчанию —15.method for updating weights— метод обновления весов; доступны следующие варианты:Adam(по умолчанию),SGD,MomentumиNesterov.MomentumиNesterovтребуют несколько больше вычислений и памяти, однако на практике оказываются полезными с точки зрения скорости сходимости и устойчивости стохастических градиентных методов.
Использование
stochasticLinearRegression используется в два этапа: сначала выполняется обучение модели, затем — предсказание на новых данных. Чтобы обучить модель и сохранить её состояние для последующего использования, мы используем комбинатор -State, который сохраняет состояние (например, веса модели).
Для предсказания мы используем функцию evalMLMethod, которая принимает состояние в качестве аргумента, а также признаки, по которым нужно выполнить предсказание.
1. Обучение
Можно использовать следующий запрос.
Здесь нам также необходимо записать данные в таблицу train_data. Количество параметров не является фиксированным, оно зависит только от числа аргументов, переданных в linearRegressionState. Все они должны быть числовыми значениями.
Обратите внимание, что столбец с целевым значением (которое мы хотим научиться предсказывать) передаётся в качестве первого аргумента.
2. Предсказание
После сохранения состояния в таблицу мы можем повторно использовать его для предсказаний или даже объединять с другими состояниями и создавать новые, ещё более качественные модели.
Запрос вернёт столбец предсказанных значений. Обратите внимание, что первый аргумент evalMLMethod — объект AggregateFunctionState, далее идут столбцы признаков.
test_data — это таблица, аналогичная train_data, но может не содержать целевое значение.
Примечания
-
Для объединения двух моделей пользователь может создать такой запрос:
sql SELECT state1 + state2 FROM your_modelsгде таблицаyour_modelsсодержит обе модели. Этот запрос вернет новый объектAggregateFunctionState. -
Пользователь может извлечь веса созданной модели для собственных целей, не сохраняя саму модель, если не используется комбинатор
-State.sql SELECT stochasticLinearRegression(0.01)(target, param1, param2) FROM train_dataТакой запрос обучит модель и вернет ее веса: сначала идут веса, соответствующие параметрам модели, последний — это смещение (bias). Таким образом, в приведенном выше примере запрос вернет столбец с тремя значениями.
См. также