Как получить важность функции по классу с помощью рейнджера? - PullRequest
0 голосов
/ 21 апреля 2020

Я использовал функции ranger и randomForest в R. Я особенно заинтересован в том, чтобы получить важность функций (предикторов) для каждого класса, который я пытаюсь предсказать, а не общую важность для всех классов вместе взятых. Я знаю, как это сделать, используя функцию priority () из randomForest, в которой она выглядит как поведение по умолчанию:

library(randomForest)
set.seed(100)
rfmodel <- randomForest(Species ~ ., data = iris, ntree = 1000, importance = TRUE)
importance(rfmodel)

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

В качестве альтернативы для работающего рейнджера:

library(ranger)
rangermodel<-ranger(Species ~ ., data = iris, num.trees = 1000, write.forest=TRUE, importance="permutation", local.importance=TRUE)
importance(rangermodel)
rangermodel$variable.importance
rangermodel$variable.importance.local

rangermodel $ variable.importance обеспечивает важность функций для всей проблемы классификации, но не по классам. Хотя rangermodel $ variable.importance.local обеспечивает важность для каждого случая, но также не для каждого класса. Единственный вопрос, который я мог найти в топи c, это: Как я могу отделить общие значения важности переменных при использовании Случайного леса? Но они не пришли к выводу о том, как этого добиться с помощью рейнджера. , Изменение кода рейнджера, как показано ниже, также не обеспечивает вывод, который я ищу:

rangermodel<-ranger(Species ~ ., data = iris, num.trees = 1000, write.forest=TRUE, importance="impurity")
...