交叉验证

     交叉验证(Cross Validation,CV)是为了得到可靠稳定的模型在机器学习、数据挖掘中经常要用到的技巧。将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。但是这个划分数据集过程常常会导致过度专门化(over-specialization)的问题,即数据的性质分布不均匀,将会导致由训练集训练出来的学习模型,在测试集上表现的很差,类似于过拟合(over-fit)的现象。基于这个原因,我们希望能够重复多次的进行训练学习模型和测试模型步骤。通过随机化抽样的方法选定K个不同的训练集和测试集,分别用来训练出学习模型和测试模型。最后,通过取K个学习模型性能的均值,来解决过度专门化的问题。 而这个过程也称之为交叉验证(Cross-Validation)。

     交叉验证有如下三种方法:

 (1)Hold-Out Method

     随机从最初的样本中选出部分数据样本形成交叉验证数据,而剩余的就当做训练数据,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标.一般来说,少于原本样本三分之一的数据被选做验证数据。一般来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性。

  (2)K-fold cross-validation(K-CV)

     K次交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本都要做一次验证集,即第一次第一个子样本做验证,第二次第二个子样本做验证。最后,我们K次的结果做一个平均,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10次交叉验证是最常用的。

  (3)Leave-One-Out Cross Validation(留一验证,LOO-CV)

     留一验证指只使用原本样本中的一项(一个样本)来当做验证资料, 而剩余的则留下来当做训练资料。 这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于 K-fold 交叉验证是一样的,其中K为原本样本个数。

     这样做有如下优点:

     ① 每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。

     ② 实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。

但LOO-CV的缺点则是计算成本高,因为需要建立的模型数量与原始数据样本数量相同,当原始数据样本数量相当多时,LOO-CV在实作上便有困难几乎就是不显示,除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间。


参考文献:

                  维基百科-交叉验证

                 交叉验证思想简介

                 百度百科-交叉验证

                 wuzh670-交叉验证

你可能感兴趣的:(交叉验证)