如何实现使用 ctree(party 包)构建的决策树的输出?

Posted

技术标签:

【中文标题】如何实现使用 ctree(party 包)构建的决策树的输出?【英文标题】:How to implement the output of decision tree built using the ctree (party package)? 【发布时间】:2013-08-26 07:25:09 【问题描述】:

我通过party 包使用ctree 函数构建了一个决策树。它有1700个节点。 首先,ctree 有没有办法给出maxdepth 参数?我尝试了control_ctree 选项,但是它抛出了一些错误消息,说找不到 ctree 函数。

另外,我如何使用这棵树的输出?如何为 SAS 或 SQL 等其他平台实现它。对于节点末尾的值"* weights = 4349 " 表示什么,我还有另一个疑问。我怎么知道,哪个终端节点投票给哪个预测值。

【问题讨论】:

请先简化您的问题,举例说明您在 R 控制台中实际编写的功能。 库(方)train.treeM1 这是我使用的代码,它创建了一个树。现在我希望这棵树的输出在 SAS/SQL 中实现,格式如下。 1) U_OG_CALL_CNT_M1M2 输出持续了大约 1700 行.... 谁能告诉我如何破译结束节点如何为可能的输出投票。 【参考方案1】:

ctree 中有一个maxdepth 选项。它位于ctree_control()

你可以如下使用它

airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxdepth = 3))

您还可以将拆分大小和存储桶大小限制为“不小于”

airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(minsplit= 50, minbucket = 20))

你也可以减少增加感性和降低P值

airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(mincriterion = 0.99))

您提到的weights = 4349 只是该特定节点中的观察数。 ctree 默认为每个观察值赋予 1 的权重,但如果您认为您的观察值值得更大的权重,您可以向 ctree() 添加一个权重向量,该向量必须与数据集的长度相同并且必须是非负整数。完成此操作后,weights = 4349 必须谨慎解读。

使用weights 的一种方法是查看哪些观察结果落在某个节点中。使用上面示例中的数据,我们可以执行以下操作

airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, controls = ctree_control(maxdepth = 3))
unique(where(airct)) #in order the get the terminal nodes
[1] 5 3 6 9 8

因此我们可以检查例如节点 5 中的内容

n <- nodes(airct , 5)[[1]]
x <- airq[which(as.logical(n$weights)), ]  
x
    Ozone Solar.R Wind Temp Month Day
1      41     190  7.4   67     5   1
2      36     118  8.0   72     5   2
3      12     149 12.6   74     5   3
4      18     313 11.5   62     5   4
...

使用此方法,您可以创建包含终端节点信息的数据集,然后将它们导入 SAS 或 SQL

您还可以使用下面我的答案中的函数获取拆分条件列表 ctree() - How to get the list of splitting conditions for each terminal node?

【讨论】:

以上是关于如何实现使用 ctree(party 包)构建的决策树的输出?的主要内容,如果未能解决你的问题,请参考以下文章

使用“party”包运行“ctree”,列作为因子而不是字符

R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集并启动Rattle图形用户界面调用party包中的ctree函数构建条件推理树模型并使用rattle可视化条件推理决策树

R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集并启动Rattle图形用户界面调用party包中的ctree函数构建条件推理树模型并使用rattle可视化条件推理决策树

ctree CART 条件树中的权重与权重 (party::ctree)

R语言加载UCI糖尿病数据集并启动Rattle GUI调用party包中的ctree函数构建条件推理树模型Rattle混淆矩阵使用R自定义编写函数通过混淆矩阵计算特异度敏感度PPVNPV

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)使用plot函数可视化训练好的条件推理决策树条件推理决策树的叶子节点的阴影区域表