r - 带有 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) 中所拥有的……那么,哪些结果有意义呢?我真的很困惑……
解决方案
推荐阅读
- opengl - glClearBufferData 函数的内部实现
- mongodb - 在 mongodb 中过滤数组
- python - Subprocess.popen.communicate() 没有将命令传递给文件
- python - 用于从列表中提取单词的 lambda 表达式和过滤函数
- r - 在 PDF 中将 kable 扩展到整个页面宽度
- flutter - 如何在 dart 中使用具有 CBC 模式和 PCS5Padding 状态的 AES 加密数据?
- reactjs - 添加时出现“TypeError:children.props is undefined”错误到 NextJS 组件返回语句
- python - python中是否有一个函数可以轻松绘制这样的子图?
- environment-variables - 当环境变量更改时,如何更新我的 zsh 提示?
- javascript - Hashtag 未通过 Angular HttpClient