帮助了解交叉验证和决策树

chu*_*ubs 29 algorithm machine-learning decision-tree

我一直在阅读决策树和交叉验证,我理解这两个概念.但是,我无法理解交叉验证,因为它与决策树有关.基本上,交叉验证允许您在数据集相对较小时在培训和测试之间切换,以最大化您的错误估计.一个非常简单的算法是这样的:

  1. 决定你想要的折叠数量(k)
  2. 将数据集细分为k个折叠
  3. 使用k-1折叠训练集来构建树.
  4. 使用测试集来估计树中错误的统计信息.
  5. 保存结果以供日后使用
  6. 重复步骤3-6,持续k次,为测试装置留出不同的折叠.
  7. 平均迭代中的错误以预测整体错误

我无法弄清楚的问题是最终你会有k个决策树,它们可能会略有不同,因为它们可能不会以相同的方式分割,等等.你选择哪一棵树?我有一个想法是选择一个误差最小的一个(尽管这并不是最佳的,只是它在给出的折叠上表现最好 - 也许使用分层会有所帮助,但我读过的所有内容都说它只能帮助一点点).

据我所知,交叉验证的关键是计算节点统计数据,以后可以用于修剪.因此,树中的每个节点都会根据给定的测试集为其计算统计数据.重要的是节点统计中的这些,但是如果你的平均错误.当每棵树在他们选择分割的内容上有所不同时,如何在k树中的每个节点内合并这些统计数据等.

计算每次迭代的总误差有什么意义?这不是修剪过程中可以使用的东西.

任何帮助这个小皱纹将非常感激.

mjv*_*mjv 23

我无法弄清楚的问题是最终你会有k个决策树,它们可能会略有不同,因为它们可能不会以相同的方式分割,等等.你选择哪一棵树?

交叉验证的目的不是帮助选择分类器的特定实例(或决策树,或任何自动学习应用程序),而是要对模型进行限定,即提供诸如平均错误率,相对于此的偏差等指标.平均等等,可用于断言应用程序可以预期的精度水平.交叉验证之一可以帮助确定训练数据是否足够大.

关于选择特定树,您应该对100%的可用训练数据进行另一次训练,因为这通常会产生更好的树.(交叉验证方法的缺点是我们需要将[通常很少]的训练数据量划分为"折叠",并且当您在问题中暗示这可能导致对于特定数据实例而言过度拟合或不合适的树木) .

在决策树的情况下,我不确定您对节点中收集的统计信息的引用是什么,并且用于修剪与之相关的树.也许特别使用交叉验证相关技术?...


Amr*_*mro 5

对于第一部分,和其他人一样,我们通常使用整个数据集来构建最终模型,但我们使用交叉验证(CV)来更好地估计新的未见数据的泛化误差.

对于第二部分,我认为您将CV与验证集混淆,用于避免在验证集上计算的某些函数值在拆分之前/之后没有增加时通过修剪节点来过度拟合树.