ฉันไม่ได้รับความแตกต่างระหว่าง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
แต่ในชุดข้อมูลอื่น ๆ บางครั้งฉันก็ได้รับคำสั่งซื้อที่แตกต่างกัน บางคนสามารถอธิบายสิ่งที่เกิดขึ้นที่นี่ได้ไหม นี่อาจเป็นข้อผิดพลาดหรือไม่?
แก้ไข (เพื่อตอบสนองต่อMartin O'Leary )
โอเคขอบคุณ! ฉันสังเกตเห็นอย่างอื่น
การดูrfcv()
ฟังก์ชั่นฉันสังเกตเห็นเส้น:
impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]
ด้วยบรรทัดนี้เราเลือกคอลัมน์แรกall.rf$importance
ที่ให้ลำดับของคลาสที่เฉพาะเจาะจง (สำหรับปัจจัยแรก ) ที่คำนวณโดยใช้วิธีลดความซ้ำซ้อนโดยเฉลี่ยเท่านั้น คำสั่งนี้ไม่ได้เป็นคำสั่งเดียวกับค่าเฉลี่ยลดลงอย่างแม่นยำในทุกคลาส ( MeanDecreaseAccuracy
) มันจะเป็นการดีกว่าหากเลือกคอลัมน์MeanDecreaseAccuracy
หรือMeanDecreaseGini
คอลัมน์หรือใช้importance()
ฟังก์ชัน -function สำหรับค่าที่ปรับขนาดได้ดีขึ้น ดังนั้นเราจะมีการลดจำนวนผู้ทำนายตามลำดับความสำคัญของตัวแปร (เหนือคลาสทั้งหมด) และไม่เพียง แต่จัดลำดับตามความสำคัญของตัวแปรสำหรับคลาสแรก