首页 > 代码库 > 交叉验证

交叉验证

   在建立分类模型时,交叉验证(Cross Validation)简称为CV,CV是用来验证分类器的性能。它的主体思想是将原始数据进行分组,一部分作为训练集,一部分作为验证集。利用训练集训练出模型,利用验证集来测试模型,以评估分类模型的性能。

训练数据上的误差叫做训练误差,它对算法模型的评价过于乐观。利用测试数据测量的是测试误差,我门报告的是测试误差。有的时候训练集上的正确率可能达到100%,但是在测试集上可能和随机猜测差不多。

交叉验证常用的几种方法:

1.去一法  Leave-One-Out Cross Validation(记为LOO-CV)

   它的做法是,从训练集中拿出一个样本,并在缺少这个样本的数据上训练出一个模型,然后看模型是否能对这个样本正确分类。假设样本个数有N个,则该方法一共要训练出N个模型,利用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标。然而随着数据量的增大,工作量会剧增,在时间是处于劣势。但是它具有显著德尔优点:

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

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

2 k折交叉验证  K-fold Cross Validation(记为K-CV)

    K折交叉验证是以部分代价去获得去一法的大部分收益,这里的k折是吧数据分为k组。它的做法是将k-1组作为训练集训练出一个模型,然后将剩下的一组用做测试集。利用这k个模型最终的平均正确率来衡量模型的正确率。常使用的一般是5折10折,5折交叉验证是将数据分为5组。实际做法是把20%的数据拿出去作为测试集,将剩下的80%数据训练模型。使用80%或者90%的数据与使用所有数据的效果比较接近。

使用交叉验证时,需要谨慎保持数数据的分布平衡,不能在某一折中全部是一类的数据。

 

交叉验证