rpart中CP表给出的树大小

alo*_*pex 7 tree r decision-tree cross-validation rpart

在R包rpart中,是什么决定了CP表中为决策树提供的树的大小?在下面的示例中,CP表默认仅显示具有1,2和5个节点的树(分别为nsplit = 0,1和4).

library(rpart)   
fit <- rpart(Kyphosis ~ Age + Number + Start, method="class", data=kyphosis)
> printcp(fit) 

Classification tree:
rpart(formula = Kyphosis ~ Age + Number + Start, data = kyphosis, 
method = "class")

Variables actually used in tree construction:
[1] Age   Start

Root node error: 17/81 = 0.20988

n= 81 

        CP nsplit rel error  xerror    xstd
1 0.176471      0   1.00000 1.00000 0.21559
2 0.019608      1   0.82353 0.94118 0.21078
3 0.010000      4   0.76471 0.94118 0.21078
Run Code Online (Sandbox Code Playgroud)

是否有一个固有的规则rpart()来确定要呈现的树木大小?并且是否可以强制printcp()返回所有可能大小的树的交叉验证统计信息,即对于上面的示例,还包括具有3和4个节点的树的行(nsplit = 2,3)?

小智 3

rpart()使用函数来控制函数rpart.control()。它具有一些参数,例如minsplit告诉函数仅在观测值多于指定值时才进行分割,以及cp告知函数仅在总体不拟合减少了 因子时才进行分割cp。如果您查看summary(fit)上面的示例,它会显示 的所有值的统计信息nsplit。要在使用时打印这些值,您需要在调用原始函数时printcp(fit)选择适当的cp和值。minsplitrpart