如何计算导致rpart对象中每个叶子的要素数量?

时间:2017-01-26 09:51:56

标签: r rpart

给定一个rpart对象,我希望能够在到达每个叶子之前提取使用了多少个特征。换句话说,我想知道在为每个叶子做出分类决策时使用了多少条信息。

例如,以下是应用于rpart数据集的titanic对象:

library(titanic)
library(rpart)

titanic.rpart <- rpart::rpart(survived ~., data = titanic)

titanic.rpart$frame[,1:2]

以下是frame

的重要信息

var n

1性别2201

2 1731年

4 LEAF 1667

5 class 64

10 LEAF 48

11 LEAF 16

3类470

6 LEAF 196

7 LEAF 274

frame属性,我可以访问决策树的结构,包括到达每个节点/叶子的案例数。但是,我真正想知道的是,对于每个叶子,在该叶子之前发生了多少个节点?这将告诉我在每个案例被分类时会查找多少条信息。

例如,查看泰坦尼克号树(见下图),它看起来像第一片叶子,深度为4,发生在sexage节点之后。因此,这片叶子需要2条信息。由于1667个病例被分类在这片叶子上,这片叶子使用了1667 * 2 = 3334条信息。

sexageclass点头之后,发生了深度为10的下一片叶子。因此,这片叶子需要3条信息。由于48个病例被分类在这片叶子上,这片叶子使用了48 * 3 = 144条信息。

按照每个叶子的这个程序,我可以按如下方式计算所用信息的总量:

树中使用的总信息数= 1667 * 2 + 48 * 3 + 16 * 3 + 196 * 2 + 274 * 2 = 4466

然后,我可以将其除以案例总数,以获得每个案例使用的平均信息量为4466/2201 = 2.03。事实上,这真的是我最终想要的。

以下是问题:我可以使用哪些代码从rpart对象执行这些计算?或者更具体一点,我如何确定每个叶子在叶子之前发生了多少个节点?

enter image description here

0 个答案:

没有答案