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
在两者之间任意选择。它选择第一个,因此依赖于属性顺序。
我是 运行 相同数据集的 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
在两者之间任意选择。它选择第一个,因此依赖于属性顺序。