MeanDecreaseAccuracy sütununda rfobject$importance
ve importance(rfobject)
arasındaki farkı alamıyorum.
Misal:
> 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
>
Farklı MeanDecreaseAccuracy değerleri alıyorum ama önem değişkenleri için aynı sıraya sahibim ( fit$importance
hem de için importance(fit)
):
Petal.Width
Petal.Length
Sepal.Length
Sepal.Width
Ancak diğer veri kümelerinde bazen farklı siparişler alırım. Birisi burada neler olduğunu açıklayabilir mi? Bu muhtemelen bir hata mı?
Düzenleme ( Martin O'Leary'ye yanıt olarak )
Tamam teşekkürler! Başka bir şey fark ettim.
İşleve göz atarak rfcv()
çizgiyi fark ettim:
impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]
bu satırla, ilk sütununu all.rf$importance
bize sadece doğrulukta ortalama azalma olarak hesaplanan sınıfa özgü ( ilk faktör için ) ölçümlerin sırasını veren seçeriz. Bu her zaman tüm sınıflar ( MeanDecreaseAccuracy
) üzerindeki doğruluktaki ortalama düşüşle aynı sıraya sahip değildir . Ya MeanDecreaseAccuracy
da MeanDecreaseGini
sütunu seçmek ya da importance()
ölçeklenmiş değerler için- işlevini kullanmak daha iyi olmaz mıydı? Bu nedenle, birinci sınıf için değişken öneme sahip (tüm sınıflar üzerinde) sıralı olarak azaltılmış sayıda göstergeye sahip olacağız.