rpart 决策树中的 rel 错误和 x 错误有啥区别? [关闭]
Posted
技术标签:
【中文标题】rpart 决策树中的 rel 错误和 x 错误有啥区别? [关闭]【英文标题】:What is the difference between rel error and x error in a rpart decision tree? [closed]rpart 决策树中的 rel 错误和 x 错误有什么区别? [关闭] 【发布时间】:2015-05-25 16:09:54 【问题描述】:我有一个来自 UCI 机器学习数据库的纯分类数据框 https://archive.ics.uci.edu/ml/datasets/Diabetes+130-US+hospitals+for+years+1999-2008
我正在使用 rpart 来形成一个决策树,该决策树基于一个关于患者是否在 30 天之前返回的新类别(一个新的失败类别)。
我正在为我的决策树使用以下参数
tree_model <- rpart(Failed ~ race + gender + age+ time_in_hospital+ medical_specialty + num_lab_procedures+ num_procedures+num_medications+number_outpatient+number_emergency+number_inpatient+number_diagnoses+max_glu_serum+ A1Cresult+metformin+glimepiride+glipizide+glyburide+pioglitazone+rosiglitazone+insulin+change,method="class", data=training_data, control=rpart.control(minsplit=2, cp=0.0001, maxdepth=20, xval = 10), parms = list(split = "gini"))
打印结果:
CP nsplit rel error xerror xstd
1 0.00065883 0 1.00000 1.0000 0.018518
2 0.00057648 8 0.99424 1.0038 0.018549
3 0.00025621 10 0.99308 1.0031 0.018543
4 0.00020000 13 0.99231 1.0031 0.018543
我看到随着决策树的分支,相对误差正在下降,但 xerror 上升 - 我不明白,因为我认为错误会减少分支越多,越复杂树是。
我认为 xerror 是最重要的,因为大多数修剪树的方法都会从根部切割树。
为什么修剪树时关注的 xerror 是什么? 而当我们总结决策树分类器的误差是多少时,误差是0.99231还是1.0031?
【问题讨论】:
这是一个概念问题,不是编码问题。你应该找到一个论坛,这是关于主题的。也许是 CrossValidated.com。 我投票结束这个问题,因为它与 help center 中定义的编程无关,而是关于 ML 理论和/或方法 - 请参阅 ***.com/tags/machine-learning/info 中的介绍和注释跨度> 【参考方案1】:x-error 是交叉验证错误(rpart 具有内置交叉验证)。您将 rel_error、xerror 和 xstd 这 3 列一起使用来帮助您选择修剪树的位置。
每一行代表树的不同高度。一般来说,树中的更多级别意味着它在训练中具有更低的分类错误。但是,您冒着过度拟合的风险。通常,交叉验证错误实际上会随着树获得更多级别(至少在“最佳”级别之后)而增长。
经验法则是选择rel_error + xstd < xerror
所在的最低级别。
如果您在输出上运行plotcp
,它还会显示修剪树的最佳位置。
另外,请参阅 SO 线程 How to compute error rate from a decision tree?
【讨论】:
你有明确的公式来计算 rel_error 吗?或者如果你有相关的链接,请告诉我【参考方案2】:我想在@Harold Ship 的回答中添加一些信息。实际上,有三种方法可以选择剪枝的最佳cp值:
使用具有最小 xerror 的第一级(即最小 nsplit)。只有当多个级别具有相同的最小 xerror 时,第一级才会启动。这是最常用的方法。
使用 xerror 落入 min(xerror) 的 ±1 xstd 范围内的第一个级别,即 xerror
注意:rel_error 不应该用于修剪。
(一种很少使用的方法)使用第一个级别,其中 xerror ± xstd 与 min(xerror) ± xstd 重叠。即下限等于或低于水平线的水平。
【讨论】:
以上是关于rpart 决策树中的 rel 错误和 x 错误有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
scikit学习决策树导出graphviz - 决策树中的错误类名
如何处理“rpart”中的连续和离散变量 - 使用 R 的决策树?
R语言使用rpart包构建决策树模型选择合适的树大小(复杂度)检查决策树对象的cptable内容(树的大小由分裂次数定义预测误差)使用plotcp函数可视化决策树复杂度参数与交叉验证错误的关系