stochasticLinearRegression
Эта функция реализует стохастическую линейную регрессию. Она поддерживает пользовательские параметры для скорости обучения, коэффициента L2 регуляризации, размера мини-партии и имеет несколько методов для обновления весов (Адам (используется по умолчанию), простой SGD, Моментум и Нестерова).
Параметры
Существует 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 значениями.
См. также