[问题] RandomForest的VarImportance

楼主: wheado (principal component QQ)   2018-02-08 18:28:13
[问题类型]:
Variable Importance
[软件熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
RandomForest的fit出来的model有一个importance
里面的MeanDecreasingGini是用来判断变量的重要性的指标
这个指标是一个平均值的结果
我想问的是
对于第i棵树
要怎么算出DecreasingGini值
在网络上参考了一篇文章 连结如下
https://goo.gl/6WSuoi
但这篇主要说明是Mean Decrease in Accuracy
不过概念上是很像
第一个step说: 随机挑一些data与variable => 产生一棵树
第二个step说: 将树的模型用来预测没有被挑到的data => 产生一个OOB-accuracy
第三个我就看不懂了
什么是permute variable i
有使用RandomForest的使用者能够指导一下吗?
不想似懂非懂认为这是重要指标
但不晓得如何而来
谢谢大家
[环境叙述]:
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
[关键字]:
Measures of variable importance in random forests
谢谢大家指导
作者: x88776544pc (龙飞五丈原)   2018-02-09 00:16:00
说成不看也可以,但在预测时你总是要给这个"不看"的变量一个值,通常就是透过上述方法把它变成一个没有价值的变量,也就是 noise variable而 MDI 只是将每个变量在所有树中有使用到它的节点造成的 gini 值下降量加起来,再以所有树的数目平均
楼主: wheado (principal component QQ)   2018-02-09 00:02:00
不懂加入噪声是什么意思我的感觉是不看i变量接着计算正确率下降多少然后每个被sample到的变量都不看一次就可以得到该棵树所有的decreasing accuracy
作者: x88776544pc (龙飞五丈原)   2018-02-08 22:22:00
它的概念简单来说就是对每个变量一一加入噪声如果某变量很重要,那加入噪声后的错误率就会大幅 UP第三步:将OOB样本中的第 i 个变量加入噪声以取得该变量噪声化后的预测结果去计算OOB error rate i常见的方式有将该变量 bootstrap, sample 或递移
作者: a78998042a (Benjimine)   2018-02-20 12:34:00
在不同tree套件中,相同指标的算法也不一定一样,可能会对于可能发生的结点,或现在模行发生的结点,产生不一样的加权。印象中他的算法是,对单一颗树,在拿掉一个变量之后,模型的评估值(这里是gini)效果是否下降(decrease),下降越多,表示该变量是噪声变量的可能性越高,重要性越低,而如果一变量在加入之后,模型的正确率反而出现混淆、干扰,评估值会趋近0然后Mean就是把所有树的平均,所以是Meandecrease gini,如果是MDA(accuracy),数值也可能小于0。希望以上回答有协助到您,对回答有疑义可以来信给我。
作者: x88776544pc (龙飞五丈原)   2018-02-21 23:33:00
楼上你讲的permutation-based的算法只适用于 MDA 吧?你讲 gini 的概念是对的但不能那样算 MDgini如果觉得我有理解错误的地方麻烦指正一下

Links booklink

Contact Us: admin [ a t ] ucptt.com