为什么变量重要性没有反映在树构造中实际使用的变量中?

时间:2018-03-11 07:49:18

标签: r multiclass-classification

我在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)显示:

  

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

     

年龄
  COUNTRYCODE
  SupportCode
  订单类型
  prev_AnLP
  prev_EVProfLP
  prev_ProfLP
  prev_TXLP
  prev_SplLP

我可以在分类树中的每个节点看到相同的变量,因此它们是正确的。 我不明白的是摘要(拟合)的结果:

  

变量重要性:

     

29 prev_EVProfLP
  19 prev_AnLP
  16 prev_TXLP
  15 prev_SplLP
  9 prev_ProfLP
  7 CountryCode
  2 OrderType
  1上一页   1 Mol

从摘要(拟合)结果看,变量Pre和Mol比SupportCode和Age更重要,但是在树中Pre和Mol不用于分割数据,而使用SupportCode和Age(在两个叶子之前) ,实际上......但仍然使用!)。 为什么呢?

1 个答案:

答案 0 :(得分: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