如何使用交叉验证方法制作决策树?

Posted

技术标签:

【中文标题】如何使用交叉验证方法制作决策树?【英文标题】:How a decision tree is made using cross-validation approach? 【发布时间】:2019-09-12 15:20:35 【问题描述】:

我很想知道当我们使用交叉验证时如何制作决策树,在教程中我读过交叉验证尝试找到最佳准确度或最低错误率,但决策树的制作方式是不清楚。

例如在 K=10 中,是从其他 10 棵树中选择最好的树吗?

或者它试图选择树中的所有冗余边?

我的意思是我不明白最终的树是如何由另外 10 棵树组成的。

问候。

【问题讨论】:

【参考方案1】:

我相信这是一个类似的问题:Help Understanding Cross Validation and Decision Trees。

交叉验证用于更好地估计您想要查看的任何性能指标,以评估 ML 算法的性能。使用 K=10,您将在不同的数据拆分上重做 10 次树构建算法(例如 ID3),每次您在 9 个部分上训练模型并评估其余部分(验证集)的性能。然后可以表明,现在 10 组的平均值作为性能估计的偏差将更小。

假设我们在训练和验证集中拆分数据集。训练集上的错误将过于乐观,因为部分可能是由于过度拟合。验证错误会更好,但是很糟糕,我们不能使用验证集中的信息来训练我们的模型,尤其是当我们的数据可用性有限时。您可以将交叉验证视为仍然利用所有可用数据的巧妙方法。

【讨论】:

【参考方案2】:

Cross Validation 不是寻找最优模型的方法,而是“推导出对模型预测性能的更准确估计”。

因此,它并不是要输出可能的最佳决策树,但您可以例如评估不同的超参数设置(导致不同的决策树),以具有更高的统计显着性。

【讨论】:

以上是关于如何使用交叉验证方法制作决策树?的主要内容,如果未能解决你的问题,请参考以下文章

决策树交叉验证问题

决策树回归器中的网格交叉验证问题

python-sklearn数据拆分与决策树的实现

交叉验证、留一交叉验证、自助法

R语言使用rpart包构建决策树模型选择合适的树大小(复杂度)检查决策树对象的cptable内容(树的大小由分裂次数定义预测误差)使用plotcp函数可视化决策树复杂度参数与交叉验证错误的关系

详解决策树-交叉验证菜菜的sklearn课堂笔记