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

stochasticLinearRegression

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

Параметры

Существует 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 значениями.

См. также