stochasticLinearRegression
Эта функция реализует стохастическую линейную регрессию. Она поддерживает настройку скорости обучения, коэффициента L2-регуляризации, размера мини-батча, а также несколько методов обновления весов (Adam (используется по умолчанию), simple SGD, Momentum и Nesterov).
Параметры
Доступно 4 настраиваемых параметра. Они передаются функции последовательно, но нет необходимости передавать все четыре — будут использованы значения по умолчанию; однако для построения качественной модели обычно требуется дополнительная настройка параметров.
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). Поэтому в приведённом выше примере запрос вернёт столбец из трёх значений.
См. также