若动画不能正常显示,请点击阅读原文查看。
交叉验证(Cross validation,简称CV)是一种分类技术,别称旋转估计(Rotation estimation)或样本外测试(Out-of-sample testing)。假设我们已经建立了一个分类器,我们希望评估这个分类器的准确率,那么如何科学地评估分类器的准确率呢?在实验中,我们通常会采用k-折交叉验证技术来评估分类器的正确率。
k-折交叉检验
一般地,对于分类问题,我们需要两个数据集:训练集(已知数据)和测试集(未知数据),只有训练集可以在模型训练中使用,而测试集只能在模型训练之后使用。 在模型训练中,我们需要将训练集分为训练数据和验证数据。
k-折交叉验证步骤如下:
- Step 1:将训练集(已知数据)随机划分为k个相同大小的子集;
- Step 2:保留k个子集中的一个用于验证,其余k-1个用于训练;
- Step 3:重复k次Step 2使k个样本子集都能够作为验证数据一次。
- Step 4:重复Step 1-Step 3若干次,取平均值作为验证结果。
一般地,在实验中一般取k=10为宜。当k=3,样本总数n=12时,例图如下:
留一法
当k=1时,k-折交叉验证就退化成了留一法交叉验证。如下所示,当数据样本n=8时的留一法交叉验证。
综上所述,交叉验证的目的是测试模型预测未用于估计数据的新数据的能力,能够用利用有限的数据获得尽可能多的有效信息, 以避免诸如过度拟合或选择偏倚之类的问题。留一法主要用于样本比较小的简单问题,而常常采用k-折交叉验证。
参考文献
[1] Jiawei Han, Micheline Kamber & Jian Pei. Data Miining Concepts and Techniques (Third Edition).
[2] 范明,孟小峰译. 数据挖掘:概念和技术(第三版).
[3] https://en.wikipedia.org/wiki/Cross-validation_(statistics)