Линейная регрессия
Линейная регрессия - это линейная модель с коэффициентами 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
, в которой будет записан результат прогноза модели на
обучающей выборке.
В результате выполнения запроса могут быть созданы дополнительные служебные поля с информацией об обученной модели или другими показателями.