交叉验证的定义
交叉验证(Cross Validation),有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisser提出的。
在模式识别(Pattern Recognition)和机器学习(Machine Learning)的相关研究中,经常会将整个数据集合分成两个部分,分别是训练集合和测试集合。假设X是集合全体,
A⊊X
是全集X的非空真子集,那么非空集合
X∖A≠∅
则是集合A在全集
X
中的补集。于是可以先在A上面做训练和分析,而集合
X∖A
则用来做测试和验证。一开始的集合A被称作训练集,而它的补集
X∖A
被称作验证集或者测试集。这里有一个重要的观点就是:只有训练集才可以使用在模型的训练之中,而测试集必须在模型训练完成之后才被用来评估模型的误差。
HoldOut检验(Hold-Out Method)
这个方法是将原始的数据集合X随机分成两个集合
A
和X∖A,其中A作为训练集,
X∖A
作为测试集。先使用训练集训练模型,然后利用测试集验证模型的效果,记录最后的分类准确率作为Hold-Out下该模型的性能指标。比方说,处理时间序列模型是否准确的时候,把整个数据集合分成前后两部分,前部分占比70%,后部分占比30%。前部分来进行时间序列模型的训练,后部分用来测试改时间序列的准确性。其准确性可以用MAE,MAPE之类的统计指标来衡量。综上所述,该方法的好处就是处理起来简单,只需要把原始数据分成两个部分即可。但是从严格意义上来说,Hold-Out检验并不算是交叉检验(Cross Validation),因为该方法没有达到交叉检验的思想,而且最后验证准确性的高低和原始数组的分类有很大的关系,所以该方法得到的结果在某些场景中并不具备特别大的说服力。
在Hold-Out检验不够有说服力的情形下,有人提出了交叉验证这一个重要思想。
交叉检验的常见形式
假设有一个未知模型有一个或者多个未知的参数,并且有一个训练集。操作的过程就是对该模型的参数进行调整,使得该模型能够最大的反映训练集的特征。如果模型因为训练集过小或者参数不合适而产生过度拟合的情况,测试集的测试效果就可以得到验证。交叉验证是一种能够预测模型拟合性能的有效方法。
彻底的交叉验证(Exhaustive Cross Validation)
彻底的交叉验证方法指的是遍历全集X的所有非空真子集
A
。换句话说也就是把A当作训练集,
X∖A
是测试集。如果X中有
n
个元素,那么非空真子集