stochasticLinearRegression
Эта функция реализует стохастическую линейную регрессию. Она поддерживает пользовательские параметры для скорости обучения, коэффициента L2 регуляризации, размера мини-партии и имеет несколько методов обновления весов (Adam (используется по умолчанию), простой SGD, Импульс и Нестерова).
Параметры
Существует 4 настраиваемых параметра. Они передаются функции последовательно, но нет необходимости передавать все четыре - будут использованы значения по умолчанию, однако для хорошей модели требуется настройка некоторых параметров.
learning rate
- коэффициент длины шага, когда выполняется шаг градиентного спуска. Слишком большое значение скорости обучения может привести к бесконечным весам модели. Значение по умолчанию -0.00001
.l2 regularization coefficient
, который может помочь предотвратить переобучение. Значение по умолчанию -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
Такой запрос подгонит модель и вернет ее веса - первыми будут веса, соответствующие параметрам модели, последний - смещение. Таким образом, в приведенном примере запрос вернет колонку с 3 значениями.
Смотрите также