什么时候不使用交叉验证?

机器算法验证 机器学习 自习 交叉验证
2022-03-28 19:59:43

当我阅读该网站时,大多数答案都表明应该在机器学习算法中进行交叉验证。然而,当我阅读“理解机器学习”一书时,我看到有一个练习,有时最好不要使用交叉验证。我真的很困惑。当整个数据的训练算法优于交叉验证?它发生在真实的数据集中吗?

为 k 个假设类。假设给定了个iid 训练示例,并且您想学习类。考虑两种替代方法:H1,...,HkmH=i=1kHi

  1. 使用 ERM 规则在个示例上学习Hm

  2. 的训练集和大小为 m的验证集,对于一些然后,应用使用验证的模型选择方法。也就是说,首先使用关于 H_i 的 ERM 规则在 (1−\alpha)m 个训练样本训练,并让作为结果假设. 验证示例 }的 ERM 规则。(1α)mαmα(0,1)Hi(1α)mHih^1,,h^kh^1,,h^kαm

描述第一种方法优于第二种方法的场景,反之亦然。

问题的图像

1个回答

带回家的消息:

  • 练习应该告诉您,有时(取决于您的领域:经常甚至几乎总是)最好不要进行数据驱动的模型优化/调整/选择。

  • 在某些情况下,交叉验证不是不同验证选项中的最佳选择,但这些考虑因素与您在此处的练习上下文无关。

  • 并且不验证(验证、测试)您的模型绝不是一个好的选择。

不幸的是,您引用的文本在方法 1 和 2 之间改变了两件事:

  • 方法 2 执行交叉验证数据驱动的模型选择/调整/优化
  • 方法 1 既不使用交叉验证,也不使用数据驱动的模型选择/调整/优化。
  • 在此处讨论的上下文中,没有数据驱动的模型选择/调整/优化的方法 3 交叉验证是完全可行的(恕我直言,恕我直言)
  • 方法 4,没有交叉验证,但数据驱动的模型选择/调整/优化也是可能的,但构建起来更复杂。

恕我直言,交叉验证和数据驱动优化是设置建模策略的两个完全不同(并且很大程度上独立)的决策。唯一联系是您可以使用交叉验证估计作为优化的目标函数。但是还有其他可以使用的目标函数,交叉验证估计还有其他用途(重要的是,您可以使用它们来验证您的模型,也就是验证或测试)

不幸的是,机器学习术语目前在恕我直言是一团糟,这表明这里存在错误的连接/原因/依赖关系。

  • 当您查看方法 3(交叉验证不是为了优化,而是为了测量模型性能)时,您会发现“决策”交叉验证与对整个数据集的训练在这种情况下是错误的二分法:当使用交叉验证时为了衡量分类器的性能,交叉验证品质因数被用作对在整个数据集上训练的模型的估计。即方法3包括方法1。

  • 现在,让我们看看第二个决定:数据驱动模型优化与否。这是恕我直言,这里的关键点。是的,在现实世界中,进行数据驱动模型优化会更好。数据驱动的模型优化是有代价的。你可以这样想:你的数据集中的信息不仅用于估计p模型的参数/系数,但优化所做的是估计更多参数,即所谓的超参数。如果您将模型拟合和优化/调整过程描述为对模型参数的搜索,那么这种超参数优化意味着要考虑更大的搜索空间。换句话说,在方法 1(和 3)中,您通过指定这些超参数来限制搜索空间。您的真实世界数据集可能足够大(包含足够的信息)以允许在该受限搜索空间内进行拟合,但不足以在方法 2(和 4)的更大搜索空间中足够好地修复所有参数。

事实上,在我的领域中,我经常不得不处理太小而无法考虑数据驱动优化的数据集。那么我该怎么做:我使用我关于数据和数据生成过程的领域知识来决定哪个模型与数据和应用程序的物理性质匹配得很好。在这些范围内,我仍然必须限制我的模型复杂性。