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

基本思想

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(trainset),另一部分做为验证集(validationsetortestset),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

目的

用交叉验证的目的是为了得到可靠稳定的模型。在建立PCR或PLS模型时,一个很重要的因素是取多少个主成分的问题。用crossvalidation校验每个主成分下的PRESS值,选择PRESS值小的主成分数。或PRESS值不再变小时的主成分数。

常用的精度测试方法主要是交叉验证,例如10折交叉验证(10-foldcrossvalidation),将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点。

交叉验证有时也称为交叉比对,如:10折交叉比对。

常见的交叉验证形式

简单交叉验证(Hold-OutCross-Validation)

常识来说,Holdout验证并非一种交叉验证,因为数据并没有交叉使用。随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。一般来说,少于原本样本三分之一的数据被选做验证数据。

K-折交叉验证(K-FoldCross-Validation)

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

留一交叉验证(Leave-One-OutCross-Validation,LOOCV)

正如名称所建议,留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料,而剩余的则留下来当做训练资料。这个步骤一直持续到每个样本都被当做一次验证资料。事实上,这等同于K-fold交叉验证是一样的,其中K为原本样本个数。在某些情况下是存在有效率的演算法,如使用kernelregression和Tikhonovregularization。

交叉验证在建模应用中的重要性

模型选择

在面对多种模型(如不同的机器学习算法或不同的参数设置)时,交叉验证可以帮助我们选择性能最好的模型。例如,在比较决策树模型和支持向量机模型在一个分类任务中的表现时,通过交叉验证可以公平地评估它们在未见过的数据上的准确率,从而确定更适合该任务的模型。

防止过拟合

通过在多个不同的训练-验证集划分上评估模型,交叉验证可以检测模型是否过拟合。如果一个模型在训练集上的性能不断提高,但交叉验证性能(在验证集上的性能)没有明显提高甚至下降,那么很可能这个模型出现了过拟合。这样就可以及时调整模型的复杂度(如减少决策树的深度、增加正则化参数等),以提高模型的泛化能力。

评估模型稳定性

好的模型应该在不同的数据子集上都能有相对稳定的性能。交叉验证可以帮助我们评估模型在不同数据划分下的性能波动情况。例如,一个模型在不同轮次的交叉验证中,准确率都在80%左右波动,而另一个模型的准确率在60%-90%之间大幅波动,那么第一个模型相对更稳定,更值得信赖。

参考资料

交叉验证(Cross-validation)概述及常见交叉验证方法.PLOB.2024-12-16

极限学习机的快速留一交叉验证算法.中国知网.2024-12-16

交叉验证(Cross-validation)概述及常见交叉验证方法.爱科学.2024-12-16

深度盘点:详细介绍机器学习中的7种交叉验证方法.今日头条.2024-12-16