Как понять выход RandomForestExplainer (пакет R)

У меня есть следующий код, который в основном пытается предсказать Species из данных iris с использованием randomForest. То, что я действительно пересекаю, - это найти лучшие функции (переменные), которые объясняют классификацию видов. Я нашел пакет randomForestExplainer, который лучше всего подходит для этой цели.

library(randomForest)
library(randomForestExplainer)
forest <- randomForest::randomForest(Species ~ ., data = iris, localImp = TRUE)
importance_frame <- randomForestExplainer::measure_importance(forest)
randomForestExplainer::plot_multi_way_importance(importance_frame, size_measure = "no_of_nodes")

Результат кода дает этот график:

enter image description here

Основываясь на сюжете, ключевым фактором, объясняющим, почему Petal.Length и Petal.Width является лучшим фактором, являются (объяснение основано на виньетке):

  1. mean_min_depth - средняя минимальная глубина, рассчитанная одним из трех способов, определяемых параметром mean_sample,
  2. times_a_root - общее количество деревьев, в которых Xj используется для расщепления корневого узла (т.е. весь выборка делится на два на основе значения Xj),
  3. no_of_nodes - общее количество узлов, которые используют Xj для расщепления (обычно это равно no_of_trees, если деревья мелкие),

Мне не совсем понятно, почему times_a_root и no_of_nodes лучше? А низкий mean_min_depth лучше?

Каково интуитивное объяснение этому?

Информация о виньте не помогает.

Ответ 1

Вы хотели бы, чтобы статистическая модель или показатель были балансом между "властью" и "скупостью". Randomforest разработан внутри страны, чтобы сделать наказание в качестве своей статистической стратегии для достижения скупости. Кроме того, количество переменных, выбранных в любом данном образце, будет меньше, чем общее число предикторов. Это позволяет построить модель, когда число предсказателей превышает количество случаев (строк) в наборе данных. Ранние правила расщепления или классификации могут применяться относительно легко, но последующие расколы становятся все труднее соответствовать критериям действительности. "Власть" - это способность правильно классифицировать элементы, которые не были в подвыборке, для которых используются прокси-сервер, так называемые OOB или "вне сумки". Стратегия randomForest заключается в том, чтобы делать это много раз, чтобы создать репрезентативный набор правил, которые классифицируют элементы в предположениях, что образцы вне сумки будут справедливым представлением "вселенной", из которой возник весь набор данных.

times_a_root попадает в категорию измерения "относительной мощности" переменной по сравнению с ее "конкурентами". Статистика times_a_root измеряет количество раз, когда переменная "находится в верхней части" дерева решений, т. times_a_root Насколько вероятна ее выбор в первую очередь при выборе критериев разделения. no_of_node измеряет количество раз, когда переменная выбрана вообще как критерий расщепления среди всех подвыборных. От:

?randomForest # to find the names of the object leaves
forest$ntree
[1] 500

... мы можем увидеть знаменатель для оценки значения примерно 200 значений по оси y графика. Около 2/5 выборок регрессии имели Petal.Length в верхнем расщеплении критерия, в то время как другие 2/5-ые имели Petal.Width как верхнюю переменную, выбранную как наиболее важную переменную. Около 75 из 500 имели Sepal.Length то время как только около 8 или 9 имели Sepal.Width (... это масштаб журнала). В случае набора данных диафрагмы подвыборки игнорировали бы по меньшей мере одну из переменных в каждой подвыборке, поэтому максимально возможное значение times_a_root было бы меньше 500. В этой ситуации довольно неплохое количество times_a_root и мы можем видеть, что обе эти переменные имеют сравнимую объяснительную способность.

Статистика no_of_nodes общее количество деревьев, которые имели эту переменную в любом из своих узлов, помня, что количество узлов было бы ограничено правилами наказания.