如何确定哪种交叉验证方法适合我的问题和数据类型?例如,在留一法或 K-fold 之间进行选择(哪个 K 合适?)。我的大部分搜索最终都是选择模型而不是选择交叉验证方法。
如何评估/选择交叉验证方法?
有很多类似的问题,请浏览 [cross-validation] 上的主题,例如Cross-validation 或 bootstrapping 以评估分类性能?
这是要点:
只有在样本量较小的情况下,您才需要担心。对于估计比例(如准确性),我会说任何导致比例分母 < 100 - 300 个独立案例(取决于您需要的精度)的东西都很小。对于模型本身,它还取决于问题的难度,但是能够对性能进行良好估计的样本量通常也可以训练出体面的模型。
根据我的个人经验,在迭代/重复折交叉验证、自举和迭代/重复集验证之间进行选择在很大程度上是实践中的品味问题。
重要的是要计算出足够多的代理模型,这样你就可以对模型的不稳定性有一个很好的估计。您需要多少取决于您的数据和模型(复杂性)。
但是,我不推荐留一,因为它既不能衡量模型的稳定性,也不能减少模型不稳定导致的验证结果的方差不确定性。此外,在某些情况下,它会受到很大的悲观偏见(与预期的最小悲观偏见相反)。
Ron Kohavi的博士论文“Wrappers for Performance Enhancement and Oblivious Decision Graphs”包含了精彩的讨论。
还可以查看Dougherty 和 Braga-Neto 的工作,例如
Dougherty、ER等。: 分类当前生物信息学的误差估计器的性能, 2010, 5, 53-67统计学家喜欢 bootstrap(带替换的重采样),因为从理论的角度来看,它比交叉验证(不带替换的重采样)具有更好的属性。这可能意味着您需要使用交叉验证进行更多的迭代(更准确地说:计算更多的代理模型)而不是使用引导程序。
然而,有一些有用的信息更容易从迭代交叉验证中获得,例如模型稳定性表示为预测的稳定性。
Beleites, C. & Salzer, R.:评估和改进小样本情况下化学计量模型的稳定性,Anal Bioanal Chem, 390, 1261-1271 (2008)。DOI: 10.1007/s00216-007-1818-6对于我的数据类型(光谱数据、宽矩阵),我们发现在具有相同数量的代理模型的情况下,自举和迭代折交叉验证的总体性能相似。.632-bootstrap 过于乐观,因为模型很容易过拟合。贝莱特斯,C.;鲍姆加特纳,R.;鲍曼,C。索莫尔杰,R.;施泰纳,G。Salzer, R. & Sowa, MG Variance reduction in estimating classification error using sparse datasets, Chemom Intell Lab Syst, 79, 91 - 100 (2005)。
金,J.-H。估计分类错误率:重复交叉验证,重复保持和引导,计算统计和数据分析,53, 3735 - 3745 (2009)。DOI:10.1016/j.csda.2009.04.009报告了类似的发现。
更新:论文涉及分类器验证。回归模型的验证往往更容易,因为根据我的经验,更容易获得稳定的模型(= 由于模型不稳定性导致的方差更小),而且由于有限测试样本量导致的方差往往问题更小。
我忘记链接
Esbensen, KH 和 Geladi, P.:正确验证的原则:使用和滥用重新采样进行验证,J Chemom,24, 168-187 (2010)。DOI: 10.1002/cem.1310
讨论了重采样验证的重要限制,即它不能用于测量由(仪器)漂移引起的误差。
更新:@alfa 询问
- 时间复杂度:时间复杂度与代理模型的数量成线性关系。由于 bootstrap 据说效率更高(即比交叉验证需要更少的迭代),所以它在这里可能有一点优势。我认为这在实践中并不重要(至少对我的数据而言,因为只有很少的测试用例导致的方差不确定性是我的应用程序的限制因素)。
对于线性模型,可以使用“帽子矩阵”计算留一估计量。这意味着可以在不从所有数据点的拟合中对于更多模型,对此的近似值是已知的。但是a)只有当数据集中的每一行都是独立的情况下才有可能,并且b)您无法迭代/重复并因此无法检查模型稳定性并减少相关方差的影响的问题无法通过该方法解决.
- 的选择:K 折交叉验证中 K 的选择
如果您的样本很少,您可以采取的一种方法是留一法。当然,您需要将它与某种重采样技术(如 bootstrap 或 jackknife)结合起来,以便了解结果的稳定性。
如果你有足够的数据,那么你可以去 K-fold。K 取决于结果的稳定性。如果结果在 K-folds 上是稳定的,那就没问题了。当你没有足够的数据来训练每个 K 折叠,或者有太多的噪音等时,问题就开始了。
如果您有很多样本,您可以简单地按一定比例(例如 70/30%)在训练集上进行拆分。然后是明智地选择拆分方式的问题(例如,如果是这种情况,则随机选择时间戳等)。在实践中,可能很难训练例如 5 次,因为每次训练可能需要几天时间。
也就是说,在所有情况下,如果您想进行适当的评估,您应该进行三个拆分,即培训/验证/测试。