Значение массива значений в Случайном лесу регрессии Sklearn

#python #scikit-learn #binary-tree #random-forest

Вопрос:

Для моделей классификации случайных лесов sklearn значения узлов в деревьях представляют собой список общего количества элементов в этом узле, попадающих в каждую классификацию (если я правильно понимаю, см. https://scikit-learn.org/stable/auto_examples/tree/plot_unveil_tree_structure.html, особенно на картинке внизу страницы).

Я запускаю регрессионную модель (то есть предсказываю реальное число). Чтобы быть точным, текущие параметры и модель таковы:

 rf_params = {'n_estimators': 500,
             'max_depth': 4,
             'min_samples_split': 5}
rf = RandomForestRegressor(**rf_params)
 

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

В этом случае поле значений деревьев (найдено как rf.estimators_[idx].tree_.value ) выглядит следующим образом:

 array([[[193.55945946]],
      [[225.31742306]],
      [[240.        ]],
      [[219.5       ]],
      [[173.78037687]],
      [[157.21202275]],
      [[154.17839445]],
      [[152.35      ]],
      [[166.65116279]],
      [[171.        ]],
      [[240.        ]]])
 

Для справки, в этом примере узлы 0, 1, 4, 5 и 6 разделены и узлы 2, 3, 7, 8, 9, и 10 — это листья. Я бы рискнул предположить, что способ работы модели заключается в том, что предсказание любого дерева-это значение листа, на котором вы окажетесь, предсказание модели-это среднее значение предсказаний каждого дерева, и (это мое самое неопределенное предположение) значение в разделенном узле-это среднее значение всех выборочных данных, которые попали в этот узел.

Верно ли вышесказанное? Есть ли у хакеров sklearn какие-либо идеи о том, почему значения заключены в три уровня списка? Может ли какой-либо уровень индекса для этой структуры списка (кроме первого / самого верхнего) содержать более одного элемента?