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