我已经阅读了很多关于情感分类和相关主题的研究论文。
他们中的大多数使用 10 倍交叉验证来训练和测试分类器。这意味着没有进行单独的测试/验证。这是为什么?
这种方法的优点/缺点是什么,尤其是对于那些从事研究的人?
我已经阅读了很多关于情感分类和相关主题的研究论文。
他们中的大多数使用 10 倍交叉验证来训练和测试分类器。这意味着没有进行单独的测试/验证。这是为什么?
这种方法的优点/缺点是什么,尤其是对于那些从事研究的人?
如果 CV 是嵌套的,这不是问题,即所有优化、特征选择和模型选择,无论它们本身是否使用 CV,都包含在一个大 CV 中。
这与拥有额外的验证集相比如何?虽然验证集通常只是整个数据中或多或少随机选择的一部分,但它仅相当于 CV 的一次迭代。为此,它实际上是一种更糟糕的方法,因为它很容易受到(希望)幸运/不幸选择或精心挑选的验证集的影响。
唯一的例外是对象顺序很重要的时间序列和其他数据;但无论哪种方式,它们都需要特殊处理。
主要原因是 k 折交叉验证估计器的方差比单个保留集估计器的方差低,如果可用数据量有限,这可能非常重要。如果你有一个单独的保留集,其中 90% 的数据用于训练,10% 用于测试,那么测试集非常小,因此对于不同的数据样本,性能估计会有很大的差异,或者针对数据的不同分区形成训练和测试集。k-fold 验证通过对 k 个不同的分区进行平均来减少这种差异,因此性能估计对数据的分区不太敏感。您可以通过重复的 k 折交叉验证走得更远,其中使用数据的不同分区执行交叉验证以形成 k 个子集,
但是请注意,模型拟合过程的所有步骤(模型选择、特征选择等)必须在交叉验证过程的每个折叠中独立执行,否则结果的性能估计将出现乐观偏差。
[根据评论编辑]
我认为如果您使用 CV 结果在多个模型中进行选择,则会出现问题。
CV 允许您使用整个数据集来训练和测试一个模型/方法,同时能够合理地了解它的泛化程度。但是,如果您要比较多个模型,我的直觉是模型比较会使用 CV 为您提供的额外级别的训练测试隔离,因此最终结果不会是对所选模型准确性的合理估计。
所以我猜如果你创建了几个模型并根据它的 CV 选择一个,你对你发现的东西过于乐观了。需要另一个验证集来查看获胜者的概括能力。
根据我的经验,主要原因通常是您没有足够的样本。
在我的领域(生物/医学样本的分类)中,有时测试集是分开的,但通常它只包含几个案例。在这种情况下,置信区间通常太宽而无用。
重复/迭代交叉验证或自举验证的另一个优点是您构建了一堆“代理”模型。假设这些是相等的。如果不是,则模式不稳定。您实际上可以通过比较代理模型本身或不同代理模型对同一案例的预测来衡量这种不稳定性(关于交换一些训练案例)。
Esbensen & Geladi的这篇论文很好地讨论了交叉验证的一些限制。
你可以处理其中的大部分,但是重采样验证无法解决的一个重要问题是漂移,这与 mbq 的观点有关:
唯一的例外是对象顺序很重要的时间序列和其他数据
漂移意味着例如仪器的响应/真实校准随时间缓慢变化。因此,未知案例的泛化误差可能与未来未知案例的泛化误差不同。如果您在验证期间发现漂移,您会收到诸如“每天/每周/...”之类的指令,但这需要在训练数据之后系统地获取测试集。
(如果您的实验是按照相应计划进行的,您可以进行考虑采集时间的“特殊”拆分,但通常这不会涵盖您想要测试漂移检测的时间)