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

CatBoost

Расширение catboost_regressor команды fit выполняет обучение алгоритма CatBoost для решения задачи регрессии. CatBoost - это вариация градиентного бустинга над решающими деревьями, разработанная компанией "Яндекс". CatBoost "из коробки" одинаково хорошо работает как с числовыми признаками, так и с категориальными, и (как правило) не требует применения One-Hot Encoding для категориальных признаков.

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

fit catboost_reg  
    [iterations=<int>]
    [learning_rate=<double>]
    [depth=<int>]
    [l2LeafReg=<double>]
    [seed=<int>]
    [border_count=<int>]
    [iterationSubsample=<int>]
<targetname> from <features> [into <modelname>]

Параметры

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

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

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

  • depth — максимальная глубина деревьев. Значение по умолчанию - 3
  • learningRate — скорость обучения. Значение по умолчанию - 0.1
  • iterationSubsample — доля признаков, которые будут использоваться для разбиения в каждом узле дерева.
  • l2LeafReg — коэффициент в L2-регуляризации в вычислении cost function
  • iterations — максимальное количество деревьев, которое будет построено в процессе работы алгоритма.
  • border_count — максимальное количество отрезков для дискретизации числовых признаков. Значение по умолчанию - 32
  • seed - число для фиксации случайных (random) параметров.
  • modelname — название модели, с которым она будет сохранена в кэше. Чтобы сохранить модель в постоянное хранилище моделей для дальнейшего использования, используйте команду save.

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

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

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

| 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 gbr maxDepth=2 learning_rate=0.05 iterationSubsample=0.5 minLeafSamples=2 numTrees=50 maxBins=16 subsetStrategy=sqrt lossType=absolute debit from p_plast, p_collector, density, dynamic_level, engine_freq, pump_depth, active_power, water_percent, pump_on_off into gbr_model
| head 100

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

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

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

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

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

CatBoost predict

Ссылки

К началу