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

Случайный лес

Расширение random_forest_regression команды-контейнера fit выполняет обучение алгоритма случайного леса для решения задачи регрессии. Случайный лес — алгоритм, в основе которого лежит построение множества решающих деревьев и усреднение их ответов. Прогнозное значение помещается в новое поле таблицы.

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

fit [random_forest_regression | rfregression | rfr]  
    [maxDepth=<maxDepth>] 
    [iterationSubsample=<iterationSubsample>] 
    [minInfoGain=<minInfoGain>] 
    [minLeafSamples=<minLeafSamples>] 
    [numTrees=<numTrees>] 
    [maxBins=<maxBins>] 
<targetname> from <features> [into <modelname>]

Параметры

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

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

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

  • maxDepth — максимальная глубина деревьев. Значение по умолчанию - 3.
  • iterationSubsample — доля данных, которые будут использованы при каждой итерации. Значение по умолчанию - 1.
  • minInfoGain — минимальное количество полезной информации, получаемое при разбиении классов в ветке дерева Значение по умолчанию 0.0.
  • minLeafSamples — минимальное количество объектов в листе дерева. Значение по умолчанию - 1
  • numTrees — количество деревьев Значение по умолчанию - 100
  • maxBins — максимальное количество отрезков для дискретизации числовых признаков. Значение по умолчанию -32
  • subsetStrategy — стратегия, определяющая какая часть признаков будет использована на каждой итерации. Возможные значения:
    • auto — автоматический выбор числа признаков. Значение по умолчанию
    • all — все признаки
    • onethird — треть признаков
    • sqrt — квадратный корень из общего числа признаков
    • log2 — логарифм от общего числа признаков.
  • 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 rfr maxDepth=2 iterationSubsample=0.5 minLeafSamples=2 numTrees=50 maxBins=16 subsetStrategy=sqrt debit from p_plast, p_collector, density, dynamic_level, engine_freq, pump_depth, active_power, water_percent, pump_on_off into rfr_model
| head 100

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

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

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

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

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

RF predict

К началу