插入符号 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,因此 0
或 1
的所有决定都高于或低于 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 的决策树?