6

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

由于我还在使用 10 倍 CV 构建其他模型,因此我尝试使用 caret 包和 rpart 方法来构建树。然而,情节结果很奇怪,因为“铊”应该是一个因素。为什么它显示“thaliumnormal <0.5”?这是否意味着如果“铊”== 正常“然后走左边的路线“是”,否则走右边的路线“否”?

非常感谢!

插入符号 rpart 决策树图使用 fancyRpartPlot

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

数据结构

此外,我想让图表更具可读性,例如,而不是“thaliumnormal < 0.5”,它应该是“thalium = normal”。我可以通过直接使用 rpart 来实现这个目标(见下文)。

rpart 决策树图

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

代码 推荐的 cp,用于使用 fancyRpartplot 的 rpart 树

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

4

2 回答 2

4

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

但是很可能(没有看到)变量是thallium并且一个级别是normal,并且表格已经选择了变量的一个级别thallium并且正在评估,如果某事是那个级别normal与否。

该树将分类变量按级别视为虚拟变量,并根据 >= .5 或 < .5 和 0 总是更少而 1 总是更多来做出决定。

根据设计,大多数树算法为每个变量(包括虚拟 0./1)选择截断值,以创建最纯净(将最多观察值移到一侧或另一侧并更接近分类)并在中间选择一个点在群体中创造最大分离的两个价值观。

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

于 2020-01-09T06:27:51.103 回答
0

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

在这种情况下,rpart取中间值 0.5 以便所有决定0or1高于或低于0.5

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

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

于 2020-01-09T06:16:20.857 回答