Я не отримую різниці між 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)
):
Пелюстка.Ширина
Пелюстка.Довга
Sepal.Length
Sepal.Ширина
Але в інших наборах даних я інколи отримую різні замовлення. Може хтось пояснить, що тут відбувається? Це можливо помилка?
Редагувати (у відповідь на Мартіна О'Лірі )
Добре, дякую! Я помітив щось інше.
Переглянувши rfcv()
функцію, я помітив рядок:
impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]
за допомогою цього рядка ми вибираємо перший стовпець, all.rf$importance
який наводить нам порядок специфічних для класу (для першого фактору ) заходів, обчислених як середнє зменшення лише в точності. Це не завжди є таким же порядком, як середнє зменшення точності у всіх класах ( MeanDecreaseAccuracy
). Не було б краще вибрати MeanDecreaseAccuracy
або MeanDecreaseGini
колонку, або краще використовувати функцію- importance()
для масштабованих значень? Таким чином, у нас буде послідовно зменшена кількість предикторів, класифікованих за змінною важливістю (для всіх класів), а не лише ранжированих за змінною важливістю для першого класу.