交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方加和,称为PRESS(predictedError Sum of Squares)。

  用交叉验证的目的是为了得到可靠稳定的模型。在建立PCR 或PLS模型时,一个很重要的因素是取多少个主成分的问题?用cross validation校验每个主成分下的PRESS值,选择PRESS值小的主成分数。或PRESS值不在变小时的主成分数。
  常用的精度测试方法有交叉验证,例如10倍交叉验证(10-fold crossvalidation),将数据集分成十分,轮流将其中9份做训练1份做测试,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10倍交叉验证求均值,例如10次10倍交叉验证,更精确一点。
交叉验证有时也称为交叉比对,如:10倍交叉比对

交叉验证包括两个阶段,即定型阶段和生成结果阶段。这些阶段包括以下步骤:
  • 选择目标挖掘结构。

  • 指定要进行测试的模型。

  • 指定要对结构数据进行分区的折叠数。

  • Analysis Services 根据现有折叠数量创建相同数量的模型并对这些模型进行定型。

  • 若要生成结果,必须指定用于对已定型的模型进行测试的参数。

  • 指定测试数据的源。(这项功能只有在使用存储过程时才可用。)

  • 指定可预测属性、预测值以及准确性阈值。

  • Analysis Services随后会为每个模型中的每个折叠返回一组准确性度量。您还可以为整个数据集返回准确性度量。

交叉验证(Cross Validation)CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(trainset),另一部分做为验证集(validationset),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标.常见CV的方法如下:




1).Hold-Out Method




将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标.此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hold-Out Method并不能算是CV,因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性.






2).K-fold CrossValidation(记为K-CV)




将原始数据分成K(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2.K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.






3).Leave-One-Out CrossValidation(记为LOO-CV)




如果设原始数据有N个样本,那么LOO-CV就是N-CV,即每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标.相比于前面的K-CV,LOO-CV有两个明显的优点:




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




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



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