[英]How do I plot the Variable Importance of my trained rpart decision tree model?
[英]rpart variable importance shows more variables than decision tree plots
与rpart()
类似, Caret
有一个很酷的属性:它处理代理变量,即未选择用于拆分但接近赢得竞争的变量。
让我更清楚。 假设在给定的拆分中,算法决定在 x1 上拆分。 假设还有另一个变量,比如 x2,它在那个阶段几乎和 x1 一样好。 我们称 x2 surrogate ,并像为 x1 所做的那样为其分配变量重要性。
通过这种方式,您可以获得实际上不用于拆分的重要性排名变量。 您还可以发现,这些变量比实际使用的其他变量更重要!
rpart()
的文档中解释了这样做的基本原理:假设我们有两个相同的协变量,比如 x3 和 x4。 然后rpart()
可能只在其中一个上拆分,例如 x3。 我们怎么能说 x4 不重要呢?
总而言之,变量重要性考虑了主要变量(即实际选择用于拆分的变量)和代理变量的拟合度增加。 因此,x1 的重要性考虑了选择 x1 作为拆分变量的拆分,以及选择了另一个变量但 x1 是紧密竞争者的拆分。
希望这能澄清你的疑惑。 有关更多详细信息,请参见此处。 只是一个快速的报价:
以下方法可用于估计每个变量对 model 的贡献[谈到如何计算变量重要性]:
[...]
- 递归分区:每次拆分时归因于每个变量的损失 function(例如均方误差)的减少被制成表格并返回总和。 此外,由于可能存在重要但未在拆分中使用的候选变量,因此在每次拆分时也会列出最重要的竞争变量。 这可以使用 rpart.control 中的 maxcompete 参数关闭。
我不习惯caret
,但从这个引用看来,这样的 package 实际上使用rpart()
来种植树木,从而继承了关于代理变量的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.