R:手动计算类方法(iris数据集)的rpart相对误差

时间:2019-06-18 16:27:58

标签: r rpart

我安装了以下树

library(rpart)    
treeResult = rpart(Species~., data=iris[1:120,], method="class")

并尝试手动计算下面的黄色数字(0.285714)。

enter image description here

我认为如果树从0变到1,这应该是吉尼杂质的相对减少:

pNode1 = c(50,50,20)/120
pNode2 = c(50,0,0)/50
pNode3 = c(0,50,20)/70
# The counts used to calculate these pNodes are taken from summary(treeResult).

impurityNode1 = sum(pNode1*(1-pNode1))
impurityNode2 = sum(pNode2*(1-pNode2))
impurityNode3 = sum(pNode3*(1-pNode3))

relativeError = (50/120*impurityNode2+70/120*impurityNode3) / impurityNode1

但是,这将产生0.3809524而不是0.285714。

1 个答案:

答案 0 :(得分:1)

不。它不是相对的基尼杂质。这显示出相对的总杂质。

在顶级节点处,杂质为70/120 = 0.58333。第一次拆分后,一个节点完美地分类了50个点,另一个节点进行了50/20拆分。因此,在120个点中有20个错误,该级别的杂质为20/120 = 0.16666。所计算的相对杂质为

(20/120) / (70/120) = 0.16666/0.58333 = 0.285714

为完整起见,在第二次拆分之后,存在3个错误。相对于原始的70个错误,我们有3/70 = 0.042857(nsplit = 2旁边的数字)。