首页 > 解决方案 > 带有 R 的随机森林:varImp(model) 和 model$importance[,1] 之间的 %IncMSE 不匹配

问题描述

我对从 R 中与 RandomForest 包一起使用的函数获得的不同结果感到困惑,以评估变量的重要性。

我的模型定义为:

model <- randomForest(nee_m ~ ., data = nee, ntree = 200, mtry = 7, importance=TRUE)

nee_m为主变量,8个解释变量分别为sw_in、ta、vpd、rew、rh、pluie、vent、co2。

这是我的结果:(1) 使用 varImp(model),%IncMSE 的结果是:

      Overall 

ta 118.08770

RH 71.48408

vpd 62.24601

pluie 23.28636

通风口 151.23066

sw_in 886.14511

二氧化碳 208.20772

更新 305.57892

(2) 使用model$importance[order(model$importance[, 1], reduction = TRUE), ]: 结果是:

        %IncMSE IncNodePurity 

sw_in 43.12005718 1451599.722

vpd 4.70746641 201849.024

更新 4.16280001 189716.854

ta 4.02571339 121612.437

RH 2.73049849 102672.109

二氧化碳 1.37747947 81391.062

排气口 0.57235041 61368.274

0.02396995 2851.669

如果我将(1)按(2)中的降序排列并计算相对值:我得到(3):

      Overall 

sw_in 48.522222 %

返还 16.732438 %

二氧化碳 11.400730 %

发泄 8.2808645 %

ta 6.4660714 %

相对湿度 3.914219 %

vpd 3.408375 %

1.275080 %

(2) 和 (3) 之间的值和重要性顺序不同,我应该相信哪些结果,为什么它们不同?我可能会错过对结果的理解。

提前感谢您的帮助

编辑:非常奇怪的结果:如果我设置:varImp(model, scale=FALSE ),在值和顺序方面,我得到的结果与 (2) 完全相同!所以一个介于 0 和 100 之间的值,这与文档中解释的相反:即,如果您设置 scale=FALSE,则该值不应介于 0 和 100 之间,但前提是您设置了默认 varImp(model)(或varImp(model, scale=TRUE),那么它应该在 0 到 100 之间……这不是我在 (3) 中所拥有的……那么,哪些结果有意义呢?我真的很困惑……

标签: rrandom-forest

解决方案


推荐阅读