自举和交叉验证有什么区别?


21

我曾经使用K折交叉验证来对我的机器学习模型进行强大的评估。但是我也知道存在用于此目的的引导方法。但是,在性能评估方面,我看不到它们之间的主要区别。

据我所知,引导程序还会产生一定数量的随机训练+测试子集(尽管以不同的方式),那么使用这种方法相对于CV有什么意义呢?我唯一能弄清楚的是,在自举的情况下,可以人为地产生几乎任意数量的此类子集,而对于CV,实例数是对此的一种限制。但是,这方面似乎有点麻烦。

Answers:


17

交叉验证和引导都是重采样方法。

  • 引导程序重新采样并进行替换(通常会产生与原始数据集数量相同的新“替代”数据集)。由于图纸需要替换,因此自举数据集可能包含相同原始案例的多个实例,并且可能会完全省略其他原始案例。
  • knx=nkk=n

  • 顾名思义,交叉验证的主要目的是衡量模型的性能。相比之下,自举法主要用于建立广泛分布统计数据的经验分布函数(分布范围很广,例如从均值的变化到袋装集成模型中模型的变化)。

  • 引导过程的遗忘式模拟被称为jackknifing(实际上比引导更老)。

  • 与通用误差交叉验证估计交叉相关的引导程序类似物称为引导程序外估计值(因为测试用例是那些不包含在引导程序重采样训练集中的测试用例)。

[跨验证与引导外验证]但是,在性能估计方面,我看不到它们之间的主要区别。

k

有多种尝试来减少oob偏差(.632-bootstrap,.632 + -bootstrap),但是它们是否会真正改善情况取决于当前的情况。

文献:


我唯一能弄清楚的是,在自举的情况下,可以人为地产生几乎任意数量的此类子集,而对于CV,实例数是对此的一种限制。

nk

  • 无需替换的CV 组合(对于k <n远远大于通常评估的可能性)与。(nk)k
  • bootstrap / oob与替换的组合(再次远远超过通常评估的100或1000个替代模型)(2n1n)

3

自举是依赖于随机抽样和替换的任何测试或度量。它是一种在许多情况下都可以提供帮助的方法,例如验证预测模型的性能,集成方法,估计模型参数的偏差和方差等。从原始数据集中执行替换替换采样,同时假设尚未选择的数据点是测试数据集。我们可以重复此过程几次,然后计算平均得分作为模型性能的估算值。另外,Bootstrapping与整体训练方法有关,因为我们可以使用每个引导程序数据集建立模型,并使用多数投票(用于分类)或计算所有(所有)的平均值来将这些模型“打包”到整体中这些模型是我们最终的结果。

交叉验证是一种验证模型性能的过程,它是通过将训练数据分为k部分来完成的。我们假设k-1个部分是训练集,而其他部分是我们的测试集。我们可以重复k次,每次都不同地保留数据的不同部分。最后,我们将k分数的平均值作为我们的效果估算值。交叉验证可能会产生偏差或偏差。增加分割的数量,方差也将增加并且偏差将减小。另一方面,如果我们减少分割数,则偏差将增加,方差将减小。

总之,交叉验证将可用数据集拆分为多个数据集,并且Bootstrapping方法使用原始数据集在替换后重新采样后创建了多个数据集。引导模型用于模型验证时,其强度不如交叉验证。引导更多是关于构建集成模型或仅估计参数。


2

交叉验证是一种旨在查看模型对未经训练的数据进行概括的技术。它不会影响您的算法结果,而只是评估它们。

Bootstrapping是一种Ensemble方法,用于汇总几个模型(例如决策树)的输出,以产生平均输出。从技术上讲,它减少了基于单个模型的分类算法的方差,因为它可以对同一模型结构(具有不同参数)的多个变量的输出求平均值。因此,它会更改 分类算法的性能,但不会对其进行评估

换句话说:交叉验证评估算法的概括性,而引导程序实际上可以帮助算法更好地概括。

您实际上可以在自举模型上使用交叉验证,以查看其概括性。


3
多数民众赞成在袋装不启动对不对?
elemolotiv

0
  • 交叉验证:提供测试误差的估计值。
  • Bootstrap:提供估计的标准误差。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.