插入符号 rpart 决策树绘图结果

Posted

技术标签:

【中文标题】插入符号 rpart 决策树绘图结果【英文标题】:caret rpart decision tree plotting result 【发布时间】:2020-04-26 16:10:49 【问题描述】:

我正在根据Kaggle 的心脏病数据训练一个决策树模型。

由于我也在使用 10 倍 CV 构建其他模型,因此我正在尝试使用 caret 包和 rpart 方法来构建树。然而,情节结果很奇怪,因为“铊”应该是一个因素。为什么它显示“thaliumnormal

非常感谢!

编辑:我很抱歉没有提供足够的背景信息,这似乎造成了一些混乱。 “铊”是一个变量,代表一种用于检测冠状动脉狭窄(又名狭窄)的技术。它是一个具有三个级别(正常、固定缺陷、可逆缺陷)的因子。

此外,我想让图表更具可读性,例如而不是“thaliumnormal

但是,您可能已经注意到树是不同的,尽管我使用了推荐的 cp 值和 caret rpart CV 10 folds(参见下面的代码)。

我了解这两个包可能会导致一些差异。理想情况下,我可以使用 caret 和方法 rpart 来构建树,以便它与 caret 中内置的其他模型对齐。有谁知道如何使使用插入符号 rpart 构建的树模型的绘图标签更易于理解?

【问题讨论】:

【参考方案1】:

您的因子thaliumnormal 是 0 或 1,代表是或否 - 对吗?

在这种情况下,rpart 采用中间值 0.5,因此 01 的所有决定都高于或低于 0.5

低于截止值的值,在本例中为 0.5,总是向左转。所以thaliumnormal==0 左转,是的。

您可以看到与sex 相同的示例

【讨论】:

感谢您的回复。铊是一个因素,“正常”是其中一个水平(总共 3 个)。我认为插入符号会自动进行一次热编码转换,因此将原始变量名称与每个级别粘合在一起。【参考方案2】:

如果有一些数据会有所帮助,例如dput(head(data)) 可以向我们展示您的数据的真实情况,或者str(data) 可以显示变量和数据类型的级别。

但很可能(没有看到)变量是thallium,一个级别是normal,并且表格选择了变量thallium的一个级别,并且正在评估,如果有什么是那个级别normal或不是。

树将分类变量按级别视为虚拟变量,并根据 >= .5 或

根据设计,大多数树算法会为每个变量(包括虚拟 0./1)选择最纯净(将最多观察值移到一侧或另一侧并更接近分类)的截止值,并选择一个指向两个值之间的中间,这两个值在组中产生最大的分离度。

对于二元变量,分割为 0.5,因为它介于两个不同值之间,一个级别可以取 0 和 1。

【讨论】:

谢谢!这就是我的想法:) 无论如何,你知道如何让情节结果更友好吗? (有关详细信息,请参阅编辑后的帖子) 我真的没有。我已经在我的个人报告中使用这些类型进行解释和调整,如果利益相关者需要某些东西,可以手动创建更人性化的树木部分,并使用人工优化的标签和更好的演示配色方案......

以上是关于插入符号 rpart 决策树绘图结果的主要内容,如果未能解决你的问题,请参考以下文章

如何处理“rpart”中的连续和离散变量 - 使用 R 的决策树?

使用 rpart 生成 sankey 图的决策树

Rpart R决策树分数[重复]

rpart 不在 R 中创建决策树,SVM 有效

rpart 决策树中的 rel 错误和 x 错误有啥区别? [关闭]

使用 rpart 为决策树修剪选择 CP 值