交叉验证
将原数据进行分组,一部分作为训练集,另一部分作为验证集,首先用训练集对不同参数的模型进行训练,再利用验证集来测试训练得到的模型,进而验证集的测试误差来衡量模型中的参数。
常用的交叉验证方法:
Hold-out 方法
Hold-out方法即将原数据随机的分成两组,一组用作训练数据集,另一组用作验证数据集。
训练集训练模型,验证集则用于验证训练得到的模型,验证集的测试误差则为衡量标准。
Hold-out方法依赖于单一的数据分割,并没有出现数据的交叉。实验结果高度依赖数据集的分割,验证结果容易出现不稳定的情况。为此,取多次Hold-out验证结果的均值则成为广义的交叉验证方法的评价标准。但在多次采用Hold-out验证时,由于随机分割数据,可能造成部分数据的信息无法充分利用,进而造成实验效果的偏差。留一验证法(Leave-one-out,LOO CV)
LOO CV是经典交叉验证方法的一种。
即若原数据为N个样本,则每个数据单独作为验证集,剩下的N-1个样本作为训练集。实验数据在训练时的充分利用是LOOCV方法的优点,但是在数据比较大时,高成本的计算复杂度车呢各位LOO CV方法的局限性,然而小样本数据在采用LOO CV方法时可以得到很好的效果。
LOO CV方法可以进一步得到改进,行程LMO(Leave-m-out) CV,即数据中的每M个数据均有机会成为验证集,剩余的-MN个数据作为训练集。M>1时,LMO CV 在一定程度上改善了LOO CV 计算复杂度过高的不足。
- K折交叉验证法(K-fold Cross Validation)
在上述方法的基础上,提出了K折交叉验证法,即将原数据平均分成K组,每一组均可作为验证集,剩余的K-1组作为训练集。K个验证集的测试误差的均值为此方法的性能评价指标。K折交叉验证法不仅充分利用了数据的信息,有效的避免了过拟合和欠拟合状态的发生,得到的结果具有说服性,而且降低了计算复杂度。这一优势使得K折交叉验证法成为最常用的交叉验证方法,然而K值的选取问题,困扰着K折交叉验证法的使用,一般而言,K的选取范围为5到10。