几种交叉验证方法介绍及对比

交叉验证

交叉验证是一种用来评价一个训练出的模型是否可以推广到另一个数据结构相同的数据集上的方法。主要用于PCR 、PLS 回归建模等建模应用中。

交叉验证有时也称为交叉比对,如:10折交叉比对。主要用于估计一个预测模型在实际数据应用中的准确度。它是一种统计学上将数据样本切割成较小子集的实用方法。首先在一个子集上做训练, 而其它子集则用来做后续对此分析的确认及验证。

一个交叉验证将样本数据集分成两个互补的子集,一个子集用于训练分类器或模型,被称为训练集(training set);另一个子集用于验证训练出的分类器或模型是否有效,被称为测试集(testing set)。测试结果作为分类器或模型的性能指标。而我们的目的是得到高度预测精确度和低的预测误差。为了保证交叉验证结果的稳定性,对一个样本数据集需要多次不同的划分,得到不同的互补子集,进行多次交叉验证。取多次验证的平均值作为验证结果。

几种交叉验证方法

1、随机子抽样验证(Hold-Out Method)
介绍:常识来说,Hold-Out 验证并非一种交叉验证,因为数据并没有交叉使用。该方法将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为分类器的性能指标。相对K-CV又被称为2-CV。

优点:处理简单,只需随机把原始数据分为两组即可。

缺点:有些样本可能从未做过训练或测试数据,而有些样本不止一次选为训练或测试数据。另外训练集样本数太少,通常不足以代表母体样本的分布,导致 test 阶段辨识率容易出现明显落差。

2、K折交叉验证(K-fold Cross Validation)
介绍:作为2-CV的演进,将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2。而K-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的训练样本数够多,一般而言 k=10 (作为一个经验参数)算是相当足够了。

优点: K-CV使得每一个样本数据都既被用作训练数据,也被用作测试数据,可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性。

缺点: K值的选择

3、留一法交叉验证(Leave-One-Out Cross Validation)
介绍:如果设原始数据有N个样本,那么每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。

优点:
a.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠;
b. 实验没有随机因素,整个过程是可重复的。

缺点: 计算成本高,当N非常大时,计算耗时。除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间。

在模式识别与机器学习的相关研究中,经常会将数据集分为训练集与测试集这两个子集,前者用以建立模式,后者则用来评估该模式对未知样本进行预测时的精确度,即泛化能力(generalization ability)。

交叉验证核心原则

Cross-validation 是为了有效的估测 generalization error 所设计的实验方法,只有训练集才可以用在模式的训练过程中,测试集则必须在模式完成之后才被用来评估模式优劣的依据。

数据集分割原则

原始数据集分割为训练集与测试集,必须遵守两个要点:
1、训练集中样本数量必须够多,一般至少大于总样本数的 50%;
2、两组子集必须从完整集合中均匀取样。均匀取样的目的是希望尽量减少训练集/测试集与完整集合之间的偏差。一般的作法是随机取样,当样本数量足够时,便可达到均匀取样的效果。

你可能感兴趣的:(机器学习,数学之美)