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

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

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

非常感谢!

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

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

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

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

【问题讨论】:

    标签: r decision-tree r-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。

    【讨论】:

    • 谢谢!这就是我的想法:) 无论如何,你知道如何让情节结果更友好吗? (有关详细信息,请参阅编辑后的帖子)
    • 我真的没有。我已经在我的个人报告中使用这些类型进行解释和调整,如果利益相关者需要某些东西,可以手动创建更人性化的树木部分,并使用人工优化的标签和更好的演示配色方案......
    猜你喜欢
    • 2017-01-30
    • 2013-02-09
    • 2020-08-17
    • 2020-12-11
    • 2023-04-04
    • 2019-02-15
    • 2012-10-22
    • 2019-02-11
    • 2019-05-27
    相关资源
    最近更新 更多