ข้อผิดพลาดแบบสุ่มที่สำคัญและผันแปรหรือไม่


10

ฉันไม่ได้รับความแตกต่างระหว่าง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)):

  1. Petal.Width

  2. Petal.Length

  3. Sepal.Length

  4. Sepal.Width

แต่ในชุดข้อมูลอื่น ๆ บางครั้งฉันก็ได้รับคำสั่งซื้อที่แตกต่างกัน บางคนสามารถอธิบายสิ่งที่เกิดขึ้นที่นี่ได้ไหม นี่อาจเป็นข้อผิดพลาดหรือไม่?


แก้ไข (เพื่อตอบสนองต่อMartin O'Leary )

โอเคขอบคุณ! ฉันสังเกตเห็นอย่างอื่น

การดูrfcv()ฟังก์ชั่นฉันสังเกตเห็นเส้น:

impvar <- (1:p)[order(all.rf$importance[, 1], decreasing = TRUE)]

ด้วยบรรทัดนี้เราเลือกคอลัมน์แรกall.rf$importanceที่ให้ลำดับของคลาสที่เฉพาะเจาะจง (สำหรับปัจจัยแรก ) ที่คำนวณโดยใช้วิธีลดความซ้ำซ้อนโดยเฉลี่ยเท่านั้น คำสั่งนี้ไม่ได้เป็นคำสั่งเดียวกับค่าเฉลี่ยลดลงอย่างแม่นยำในทุกคลาส ( MeanDecreaseAccuracy) มันจะเป็นการดีกว่าหากเลือกคอลัมน์MeanDecreaseAccuracyหรือMeanDecreaseGiniคอลัมน์หรือใช้importance()ฟังก์ชัน -function สำหรับค่าที่ปรับขนาดได้ดีขึ้น ดังนั้นเราจะมีการลดจำนวนผู้ทำนายตามลำดับความสำคัญของตัวแปร (เหนือคลาสทั้งหมด) และไม่เพียง แต่จัดลำดับตามความสำคัญของตัวแปรสำหรับคลาสแรก

คำตอบ:


13

ไม่นี่ไม่ใช่ข้อผิดพลาด ค่าที่กำหนดในfit$importanceจะไม่ถูกปรับสัดส่วนในขณะที่ค่าที่กำหนดโดยimportance(fit)จะแสดงในรูปของส่วนเบี่ยงเบนมาตรฐาน (ตามที่กำหนดโดยfit$importanceSD) นี่เป็นมาตรการที่มีความหมายมากกว่า ถ้าคุณต้องการให้ค่า "ดิบ" importance(fit, scale=FALSE)คุณสามารถใช้

โดยทั่วไปแล้วมันเป็นความคิดที่แย่มากที่ต้องพึ่งพารายละเอียดภายในของวัตถุที่พอดีเมื่อมีฟังก์ชั่นการแยกไฟล์ ไม่มีการรับประกันเนื้อหาของfit$importance- พวกเขาสามารถเปลี่ยนอย่างมากจากรุ่นเป็นรุ่นโดยไม่ต้องแจ้งให้ทราบล่วงหน้า คุณควรใช้ฟังก์ชั่นแยกข้อมูลเมื่อมีให้


แก้ไข:ใช่บรรทัดrfcv()นั้นมีลักษณะเหมือนข้อบกพร่องหรือพฤติกรรมที่ไม่ตั้งใจอย่างน้อยที่สุด fit$importanceมันเป็นจริงค่อนข้างเป็นตัวอย่างที่ดีของเหตุผลที่คุณไม่ควรพึ่งพาเนื้อหาของสิ่งที่ต้องการ ถ้าพอดีสำหรับป่าถดถอยคอลัมน์แรกของการfit$importanceเป็นเทียบเท่ากับ%IncMSE importance(fit, type=1)อย่างไรก็ตามสิ่งนี้ไม่ได้อยู่ในกรณีการจัดประเภทที่คุณมีคอลัมน์เพิ่มเติมสำหรับแต่ละระดับปัจจัย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.