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

stochasticLinearRegression

Эта функция реализует стохастическую линейную регрессию. Она поддерживает пользовательские параметры для коэффициента обучения, коэффициента L2 регуляризации, размера мини-пакета и имеет несколько методов для обновления весов (Adam (по умолчанию), простой SGD, Momentum и Nesterov).

Параметры

Существуют 4 настраиваемых параметра. Они передаются в функцию последовательно, но нет необходимости передавать все четыре — будут использоваться значения по умолчанию, однако для хорошей модели потребуется настроить некоторые параметры.

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

Смотрите также