【问题标题】:Why variable importance is not reflected in variable actually used in tree construction?为什么变量的重要性没有反映在树构造中实际使用的变量中?
【发布时间】:2018-08-19 10:41:30
【问题描述】:

我使用以下代码在 R 上生成了一个(未修剪的)分类树:

fit <- rpart(train.set$line ~ CountryCode + OrderType + Bon + SupportCode + prev_AnLP + prev_TXLP + prev_ProfLP + prev_EVProfLP + prev_SplLP + Age + Sex + Unknown.Position + Inc + Can + Pre + Mol, data=train.set, control=rpart.control(minsplit=5, cp=0.001), method="class")

printcp(fit) 显示:

树构造中实际使用的变量:

年龄
国家代码
支持代码
订单类型
上一页_AnLP
上一页_EVProfLP
上一页_ProfLP
上一页_TXLP
prev_SplLP

这些是我可以在分类树的每个节点上看到的相同变量,因此它们是正确的。 我不明白的是summary(fit)的结果:

变量重要性:

29 上一页_EVProfLP
19 上一页_AnLP
16 上一页_TXLP
15 上一页_SplLP
9 上一页_ProfLP
7 国家代码
2 订单类型
1 前
1 摩尔

从summary(fit)结果来看,变量Pre和Mol似乎比SupportCode和Age更重要,但是在树中Pre和Mol不用于分割数据,而使用了SupportCode和Age(就在两片叶子之前,实际上......但仍然使用!)。 为什么?

【问题讨论】:

  • 我试图查看 R 文档,但没有找到答案。

标签: r multiclass-classification


【解决方案1】:

属性的重要性基于属性作为拆分器出现的所有节点的改进总和(由每个节点拆分中训练数据的分数加权)。代理也包括在重要性计算中,这意味着即使是从不分裂节点的变量也可能被分配一个很大的重要性分数。这允许变量重要性排名揭示属性之间的变量掩蔽和非线性相关性。重要性分数可以选择性地限制在拆分器中;比较仅拆分器和完整(拆分器和代理)重要性排名是一种有用的诊断方法。

有关详细信息,另请参阅“数据挖掘中的十大算法”一书的第 10 章 https://www.researchgate.net/profile/Dan_Steinberg2/publication/265031802_Chapter_10_CART_Classification_and_Regression_Trees/links/567dcf8408ae051f9ae493fe/Chapter-10-CART-Classification-and-Regression-Trees.pdf

【讨论】:

  • 我的数据没有任何缺失值,但仍有一些变量没有出现在决策树中,但出现在重要变量列表中(非常重要)。我在 R 中使用 repart。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2020-02-07
  • 2011-04-01
  • 2019-10-13
  • 2019-11-27
  • 2017-05-30
  • 2014-05-07
相关资源
最近更新 更多