Перейти к основному содержимому
Перейти к основному содержимому

stochasticlinearregression

description: 'Эта функция реализует стохастическую линейную регрессию. Она поддерживает настройки для темпа обучения, коэффициента L2 регуляризации, размера мини-пакета и имеет несколько методов для обновления весов (Adam, простой SGD, Momentum, Nesterov).' sidebar_position: 192 slug: /sql-reference/aggregate-functions/reference/stochasticlinearregression title: 'stochasticLinearRegression'

  1. learning rate - коэффициент шага длины, когда выполняется шаг градиентного спуска. Слишком большой темп обучения может привести к бесконечным весам модели. Значение по умолчанию - 0.00001.
  2. l2 regularization coefficient, который может помочь предотвратить переобучение. Значение по умолчанию - 0.1.
  3. mini-batch size устанавливает количество элементов, для которых будут вычислены и суммированы градиенты для выполнения одного шага градиентного спуска. Чистый стохастический спуск использует один элемент, однако наличие маленьких пакетов (около 10 элементов) делает градиентные шаги более стабильными. Значение по умолчанию - 15.
  4. method for updating weights, это: Adam (по умолчанию), SGD, Momentum и Nesterov. Momentum и Nesterov требуют немного больше вычислений и памяти, однако они оказываются полезными с точки зрения скорости сходимости и стабильности стохастических методов градиента.

Использование

stochasticLinearRegression используется в два этапа: подгонка модели и предсказание на новых данных. Чтобы подогнать модель и сохранить её состояние для дальнейшего использования, мы используем комбинатор -State, который сохраняет состояние (например, веса модели). Для предсказания мы используем функцию evalMLMethod, которая принимает состояние в качестве аргумента, а также признаки для предсказания.

1. Подгонка

Такой запрос может быть использован.

Здесь нам также нужно вставить данные в таблицу train_data. Количество параметров не фиксировано, оно зависит только от количества аргументов, переданных в linearRegressionState. Все они должны быть числовыми значениями. Обратите внимание, что колонка с целевым значением (которое мы хотели бы научиться предсказывать) вставляется в качестве первого аргумента.

2. Предсказание

После сохранения состояния в таблицу, мы можем использовать его несколько раз для предсказания или даже объединить с другими состояниями и создать новые, еще лучшие модели.

Запрос вернет колонку предсказанных значений. Обратите внимание, что первым аргументом evalMLMethod является объект AggregateFunctionState, затем идут колонки признаков.

test_data - это таблица, аналогичная train_data, но она может не содержать целевое значение.

Примечания

  1. Чтобы объединить две модели, пользователь может создать такой запрос: sql SELECT state1 + state2 FROM your_models где таблица your_models содержит обе модели. Этот запрос вернет новый объект AggregateFunctionState.

  2. Пользователь может получить веса созданной модели для своих нужд без сохранения модели, если не используется комбинатор -State. sql SELECT stochasticLinearRegression(0.01)(target, param1, param2) FROM train_data Такой запрос подгонит модель и вернет её веса - первыми будут веса, соответствующие параметрам модели, последним будет смещение. Таким образом, в приведенном выше примере запрос вернет колонку с 3 значениями.

См. также