Я не получаю разницу между rfobject$importance
и importance(rfobject)
в столбце MeanDecreaseAccuracy.
Пример:
> data("iris")
> fit <- randomForest(Species~., data=iris, importance=TRUE)
> fit$importance
setosa versicolor virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.027078501 0.019418330 0.040497602 0.02898837 9.173648
Sepal.Width 0.008553449 0.001962036 0.006951771 0.00575489 2.472105
Petal.Length 0.313303381 0.291818815 0.280981959 0.29216790 41.284869
Petal.Width 0.349686983 0.318527008 0.270975757 0.31054451 46.323415
> importance(fit)
setosa versicolor virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 1.277324 1.632586 1.758101 1.2233029 9.173648
Sepal.Width 1.007943 0.252736 1.014141 0.6293145 2.472105
Petal.Length 3.685513 4.434083 4.133621 2.5139980 41.284869
Petal.Width 3.896375 4.421567 4.385642 2.5371353 46.323415
>
Я получаю разные значения MeanDecreaseAccuracy, но в том же порядке для переменных важности ( fit$importance
как и для importance(fit)
):
Petal.Width
Petal.Length
Sepal.Length
Sepal.Width
Но в других наборах данных я иногда получаю разные заказы. Может кто-нибудь объяснить, что здесь происходит? Это возможно ошибка?
Изменить (в ответ на Мартина О'Лири )
Хорошо спасибо! Я заметил кое-что еще.
Взглянув на rfcv()
функцию, я заметил строку:
impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]
с помощью этой строки мы выбираем первый столбец, all.rf$importance
который дает нам порядок специфичных для класса (для первого фактора ) мер, рассчитанных только как среднее снижение точности. Это не всегда тот же порядок, что и среднее снижение точности по всем классам ( MeanDecreaseAccuracy
). Не было бы лучше выбрать либо MeanDecreaseAccuracy
или MeanDecreaseGini
столбец, или лучше , используя importance()
-функции для масштабируемых значений? Таким образом, у нас будет последовательно уменьшенное количество предикторов, ранжированных по важности переменных (по всем классам), а не только ранжированных по важности переменных для первого класса.