Перейти к содержанию

Линейная регрессия

Линейная регрессия - это линейная модель с коэффициентами w = (w1, …, wp) такими, что сумма квадратов разницы между реальными значениями и предсказанными минимальна.

Синтаксис команды

fit [linear_regression | linreg | lr] 
    [reg=<reg>] 
    [reg_param=<reg_param>] 
    [elasticnet_param=<elasticnet_param>] 
<target> from <features> [into <modelname>]

Параметры

Обязательные параметры:

  • features — список полей, на которых будет обучаться линейная регрессия. Список задается перечислением, например: ... from field1 field2 ...

Опциональные параметры:

  • reg - метод регуляризации весов регрессии. Допустимые значения: lasso (l1-регуляризация), ridge (l2-регуляризация), elasticnet (комбинированная l1+l2 регуляризация). По умолчанию используется
    регуляризация elastic net.
  • reg_param - регуляризационный параметр, задаётся дробным неотрицательным числом. Чем выше reg_param, тем строже регуляризация весов. Значение по умолчанию reg_param=0.0.
  • elasticnet_param - параметр регуляризации для ElasticNet, задаётся в диапазоне [0, 1].
    • elasticnet_param=0.0 задаёт l2-регуляризацию
    • elasticnet_param=1.0 задаёт l1-регуляризацию.
    • Значение по умолчанию elasticnet_param=0.0.
    • В общем случае рассчитывается как elasticnet_param*l1 + (1-elasticnet_param)*l2.

Пример использования

На демонстрационных данных с параметрами работы добывающих нефтяных скважин спрогнозируем суточную добычу в зависимости от параметров работы скважины.

Текст запроса

| fsget path=demo_train
| sample 0.1
| fields day, well, p_plast, p_collector, density, dynamic_level, engine_freq, pump_depth, active_power, water_percent, pump_on_off, debit
| where engine_freq>40 AND engine_freq<60
| fit lr reg=ridge reg_param=0.1 debit from p_plast, p_collector, density, dynamic_level, engine_freq, pump_depth, active_power, water_percent, pump_on_off into lr_model
| head 100

Описание запроса

  • Команда fsget загружает данные из хранилища признаков.
  • Команда sample 0.1 оставляет 10% от всех загруженных строк. Это сделано для ускорения обучения (всего в обучающей выборке более 40 000 строк).
  • Команда fields оставляет только поля с меткой времени, номером скважины, величиной добычи и поля, по которым будет проводиться обучение.
  • Команда where оставляет только те строки, где значение поля engine_freq находится в диапазоне от 40 до 60 (в этом поле указана частота работы погружного насоса, качающего нефть; она может быть только в этом диапазоне, остальные значения - ошибочные).
  • Команда fit выполняет обучение модели линейной регрессии и временно сохраняет модель под названием lr_model.
  • Команда head 100 выводит первые 100 строк таблицы после обучения.

Результат запроса

После выполнения запроса будет создана дополнительная колонка lr_model_prediction, в которой будет записан результат прогноза модели на обучающей выборке.

В результате выполнения запроса могут быть созданы дополнительные служебные поля с информацией об обученной модели или другими показателями.

LR predict

К началу