您的问题可能不是您的情节,而是您的决策树模型。你能解释一下为什么你期望有 7 个节点吗?当您只有两个(叶)节点时,这可能意味着您的模型仅使用一个预测变量并使用二元分类作为响应变量。这可能是由于预测变量与响应变量具有 1:1 的关系所致。例如,如果您要预测性别(男、女),而您的响应变量之一是性别 (M,F)。在这种情况下,不需要决策树模型,因为您可以只使用预测变量。也许在复制响应变量的数据的预处理中发生了一些事情。以下是一些需要注意的事项:
1) 计算正确分类率 (CCR)。如果它是 0,那么你有一个完美的模型。
yhat<-predict(tr1, type="class") # Model Predictions
sum(yhat != btree$leaveyrx)/nrow(btree) # CCR
2) 查看您的模型使用的预测器。仔细检查此变量是否已正确处理。尝试将其从模型中排除。
tr1$variable.importance
3) 如果您绝对确定变量计算正确并且应该在模型中使用,请尝试增加您的 cp 值。默认值为 0.01。但是即使 cp 值很高,决策树也会快速运行。在修改 cp 值时,还要考虑其他调整参数。 ?rpart.control
control <- rpart.control(minbucket = 20, cp = 0.0002, maxsurrogate = 0, usesurrogate = 0, xval = 10)
tr1 <- rpart(leaveyrx~marstx.f+age+jobtitlex.f+organizationunitx.f+fteworkschedule+nationalityx.f+eesubgroupx.f+lvlx.f+sttpmx.f+ staff2ndtpmx.f+staff3rdtpmx.f+staff4thtpmx.f,
data=btree,
method = "class",
control = control)
4) 一旦你有一棵有很多节点的树,你就需要修剪它。可能您的最佳模型实际上仅由一个变量驱动,因此只有两个节点
# Plot the cp
plotcp(tr1)
printcp(tr1) # Printing cp table (choose the cp with the smallest xerror)
# Prune back to optimal size, according to plot of CV r^2
tr1.pruned <- prune(tr1, cp=0.001) #approximately the cp corresponding to the best size
5) rpart 库是绘制决策树的好资源。那里有很多很棒的文章,但这是 rpart 上的一篇很好的文章:http://www.milbo.org/rpart-plot/prp.pdf
发布一些模型摘要也可能会有所帮助。