如何使用rpart或party包过滤R中决策树中的自变量

Posted

技术标签:

【中文标题】如何使用rpart或party包过滤R中决策树中的自变量【英文标题】:How to filter independent variables in decision-tree in R with rpart or party package 【发布时间】:2018-07-04 14:17:55 【问题描述】:

我是一名 SAS 用户,目前正在研究如何使用 R-package 制作决策树。

我确实有一个与每个节点相关的很好的发现,但现在我面临 3 个问题:

    我可以从一个特定的变量(从上到下)开始,比如性别之类的分类变量吗? (我是在 FICO-Model builder 中完成的,但现在我没有了)

    我有一个二进制 var(gender:1-Male/0-Female),但节点分裂为 0.5?(我尝试将其更改为因子,但没有工作?我还有一个 var" AGE”,我应该将类型更改为“xxx”而不是“numeric”吗?)

    基于 cp 值(下表),我设置 0.0128 来修剪树,但只剩下两个 var,我可以选择保留特定的 var 吗?(我确实玩了 cp 的数字,但结果不变)

#tree
library(rpart)
library(party)
library(rpart.plot)

#1
minsplit<-60
ct <- rpart.control(xval=10, minsplit=minsplit,minbucket = 
         minsplit/3,cp=0.01)  



 iris_tree <- rpart(Overday_E60dlq ~  .   
                ,

               data= x, method="class",   
               parms = list(prior = c(0.65,0.35), split = "information")
               ,control=ct) 



#plot split.

plot_tris<-rpart.plot(iris_tree, branch=1 , branch.type= 1, type= 2, extra= 
103,  
                  shadow.col="gray", box.col="green",  
                  border.col="blue", split.col="red",  
                  cex=0.65, main="Kyphosis-tree") 

plot_tris
#summary
summary(iris_tree)



#===========prune process=========
printcp(iris_tree)

##  min-xerror cp:  
fitcp<-prune(iris_tree, cp= 
iris_tree$cptable[which.min(iris_tree$cptable[,"xerror"]),"CP"])  


#cp table   
fit2<-prune(fitcp,cp= 0.0128 )

#plot fit2
rpart.plot(fit2, branch=1 , branch.type= 1, type= 2, extra= 103,  
       shadow.col="gray", box.col="green",  
       border.col="blue", split.col="red",  
       cex=0.65, main="Kyphosis fit2") 

【问题讨论】:

【参考方案1】:
    我认为 R 中最流行的树包之一没有用于指定固定初始拆分的内置选项。但是,使用partykit 包(party 包的继承者)具有可以利用一些基础设施将这些树组合在一起,请参阅:How to specify split in a decision tree in R programming? 您应该将factor 变量用于无序分类协变量(如性别),ordered 因子用于有序协变量,numericinteger 用于数字协变量。请注意,这不仅对视觉显示很重要,而且对递归分区本身也很重要。当使用像 rpart/CART 这样的穷举搜索算法时,它是不相关的,但对于像 ctreemob 这样的基于推理的无偏算法,这可能是一个重要的区别。 成本复杂性修剪不允许保留特定的协变量。它是对整个树的度量,而不是对单个变量的度量。

【讨论】:

以上是关于如何使用rpart或party包过滤R中决策树中的自变量的主要内容,如果未能解决你的问题,请参考以下文章

如何处理“rpart”中的连续和离散变量 - 使用 R 的决策树?

R语言专题,如何使用party包构建决策树?

从 rpart 包中的决策规则中提取信息

rpart 决策树中的 rel 错误和 x 错误有啥区别? [关闭]

CART 决策树中的冲突拆分

使用 rpart 在回归树中搜索相应的节点