使用所有变量的 R 决策树

Don*_*beo 1 r decision-tree

我想进行决策树分析。我希望决策树使用模型中的所有变量。

我还需要绘制决策树。我怎么能在 R 中做到这一点?

这是我的数据集示例

> head(d)
  TargetGroup2000 TargetGroup2012 SmokingGroup_Kai PA_Score wheeze3 asthma3 tres3
1               2               2                4        2       0       0     0
2               2               2                4        3       1       0     0
3               2               2                5        1       0       0     0
4               2               2                4        2       1       0     0
5               2               3                3        1       0       0     0
6               2               3                3        2       0       0     0
> 
Run Code Online (Sandbox Code Playgroud)

我想用公式

myFormula <- wheeze3 ~ TargetGroup2000 + TargetGroup2012 + SmokingGroup_Kai + PA_Score
Run Code Online (Sandbox Code Playgroud)

请注意,所有变量都是分类的。

编辑:我的问题是某些变量没有出现在最终决策树中。树的深度应该由惩罚参数 alpha 定义。我不知道如何设置这个惩罚,以便所有变量都出现在我的模型中。
换句话说,我想要一个可以最小化训练误差的模型。

Dav*_*urg 5

如上所述,如果你想在所有变量上运行树,你应该把它写成

ctree(wheeze3 ~ ., d)
Run Code Online (Sandbox Code Playgroud)

你提到的惩罚位于ctree_control(). 您可以在那里设置 P 值以及最小拆分和存储桶大小。因此,为了最大限度地增加包含所有变量的机会,您应该执行以下操作:

ctree(wheeze3 ~ ., d, controls = ctree_control(mincriterion = 0.85, minsplit = 0, minbucket = 0))
Run Code Online (Sandbox Code Playgroud)

问题是你会遇到过度拟合的风险。

您需要了解的最后一件事是,您可能看不到树输出中的所有变量的原因是它们对依赖变量没有显着影响。与线性或逻辑回归不同,它将显示所有变量并为您提供 P 值以确定它们是否显着,决策树不返回不显着的变量,即它不会被它们拆分。

为了更好地了解 ctree 的工作原理,请查看这里:https ://stats.stackexchange.com/questions/12140/conditional-inference-trees-vs-traditional-decision-trees