R-part 包的结果不一致

Inconsistent results from R-part package

我是 运行 相同数据集的 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)

结果:

#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)

唯一改变的是列的顺序。

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

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