首页 文章

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

提问于
浏览
25

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

  • 决定你想要的折叠次数(k)

  • 将数据集细分为k个折叠

  • 使用k-1折叠训练集来构建树 .

  • 使用测试集估计树中错误的统计信息 .

  • 保存结果以供日后使用

  • 重复步骤3-6,持续k次,为测试装置留下不同的折叠 .

  • 平均迭代中的错误以预测整体错误

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

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

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

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

5 回答

  • 1

    我可以't figure out is at the end you' ll的问题k决策树可能会略有不同,因为它们可能不会以相同的方式分割,等等 . 您选择哪一棵树?

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

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

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

  • 19

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

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

  • 2

    使用交叉验证的要点是,它可以让您在使用不同数据时更好地估计训练模型的性能 .

    你选哪棵树?一种选择是使用训练集的所有数据来构建新树 .

  • 2

    已经提到交叉验证的目的是使模型合格 . 换句话说,交叉验证为我们提供了使用所选“参数”生成的模型的误差/准确度估计,而不管使用的数据如何 . 可以使用不同的参数重复corss验证过程,直到我们对性能满意为止 . 然后我们可以在整个数据上训练具有最佳参数的模型 .

  • 5

    交叉验证不是用来估计树( Build 在所有数据上)将通过模拟到达的有效性来实现的 . 新数据(通过构建没有一些元素的树,就像你写的那样) . 我选择由它生成的树之一是没有意义的,因为模型受到你拥有的数据的限制(当你将树用于新数据时,不使用它可能实际上更糟糕) .
    树是根据您选择的数据构建的(通常是所有数据) . 修剪通常使用一些启发式(即节点中90%的元素属于A类,因此我们不再进一步或信息增益太小) .

相关问题