cross-validation 交叉验证

来源:互联网 发布:网络音乐老师 编辑:程序博客网 时间:2024/05/04 09:25

交叉验证

在机器学习、数据挖掘和模式识别等领域,需要训练大量的数据来得到一个准确的模型,当数据的数量有限时,就会出现不同的问题。为了解决这些问题,交叉验证的方法就出现了。

名词解释:

l  Holdout    当数据有限时,需要将原始数据分为两份,一份用来training一份用来testing(比例一般是2/31/3),或者分为三份,还有一份用来validation。以上过程就叫做Holdout

l  Stratified holdout(or Stratification)    为了确保分割后用于trainingtesting的数据都具有代表性,需要通过随机取样的过程来确保这一点,这就是stratification。其达到的效果是让在每一个分割中,每个类所占的比例和总体数据中每个类所占的比例相同。

l  Repeated holdout      重复的进行随机取样,计算每一次的error rate,然后对其取平均

l  threefold cross-validation  将数据分为三份,每一次都去其中一份用于testing,其余部分用于training,直到遍历完每一个fold,即每一个instance都至少用于一次testing,后面还有stratified threefold cross-validation

l  Stratified tenfold cross-validation   在实际的应用中,这是标准的数据处理方法,具体含义和上一个类似,在实际的应用中,往往需要重复10遍十折交叉验证,也即往往需要做100次。

  上述内容,参考文献《Data Mining  Practical Machine Learning Tools and Techniques(Third Edition)》,一下内容摘抄自百度百科,讲十折交叉验证的概念。

        英文名叫做10-fold cross-validation,用来测试算法准确性。是常用的测试方法。将数据集分成十分,轮流将其中9份作为训练数据,1份作为测试数据,进行试验。每次试验都会得出相应的正确率(或差错率)。10次的结果的正确率(或差错率)的平均值作为对算法精度的估计,一般还需要进行多次10折交叉验证(例如1010折交叉验证),再求其均值,作为对算法准确性的估计。

  之所以选择将数据集分为10份,是因为通过利用大量数据集、使用不同学习技术进行的大量试验,表明10折是获得最好误差估计的恰当选择,而且也有一些理论根据可以证明这一点。但这并非最终诊断,争议仍然存在。而且似乎5折或者20折与10折所得出的结果也相差无几。