R-part包装的结果不一致

时间:2017-12-08 13:47:43

标签: r rpart

我在相同的数据集上运行R部分,但列的顺序不同,我得到的结果不同。

这是我的数据集

   Home.Owner Marital.Status Annual.Income Default
1         Yes         Single           125      No
2          No        Married           100      No
3          No         Single            70      No
4         Yes        Married           120      No
5          No       Divorced            95     Yes
6          No        Married            60      No
7         Yes       Divorced           220      No
8          No         Single            85     Yes
9          No        Married            75      No
10         No         Single            90     Yes

这是代码

a<-read.csv("ab.csv")
library(rpart)
library(rpart.plot)
model1<-rpart(Default ~.,data =a,method = "class",minsplit = 1,minbucket = 1 
              ,parms=list(split=c("information") ))

rpart.plot(model1)

结果:

enter image description here

#changing column order 
b<-a[,c(4,3,2,1)]

# running same process
model2<-rpart(Default ~.,data =b,method = "class",minsplit = 1,minbucket = 1 
              ,parms=list(split=c("information") ))

rpart.plot(model2)

enter image description here

唯一改变的是列的顺序。

1 个答案:

答案 0 :(得分:1)

这里没有错。这发生了,我可以解释原因。

请注意,这两棵树与第一次拆分不同。这是我们必须理解的。 rpart使用Gini Impurity来决定用于拆分数据的变量。一次使用Marital Status,另一次使用Annual Income。仔细看看每次拆分发生的事情。当它在Marital Status上拆分时,它创建了两个节点,其中一个节点有40%的数据且没有错误。另一个节点有60%的数据和50%的错误。当它在annual income上拆分时,它产生完全相同的分布:一个节点有40%的数据且没有错误;另一个节点有60%的数据和50%的错误。这两个分裂都产生相同的基尼杂质。这是两个属性之间的联系。所以rpart在两者之间作出任意选择。它选择第一个,因此依赖于属性顺序。