文章插图
交叉验证【交叉验证】交叉验证(Cross-validation)主要用于建模套用中,例如PCR 、PLS 回归建模中 。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和 。
基本介绍中文名:交叉验证
外文名:Cross validation
实质:建模套用中
特点:PCR 、PLS 回归建模中
思想介绍在使用训练集对参数进行训练的时候,经常会发现人们通常会将一整个训练集分为三个部分(比如mnist手写训练集) 。一般分为:训练集(train_set),评估集(valid_set),测试集(test_set)这三个部分 。这其实是为了保证训练效果而特意设定的 。其中测试集很好理解,其实就是完全不参与训练的数据,仅仅用来观测测试效果的数据 。而训练集和评估集则牵涉到下面的知识了 。因为在实际的训练中,训练的结果对于训练集的拟合程度通常还是挺好的(初始条件敏感),但是对于训练集之外的数据的拟合程度通常就不那幺令人满意了 。因此我们通常并不会把所有的数据集都拿来训练,而是分出一部分来(这一部分不参加训练)对训练集生成的参数进行测试,相对客观的判断这些参数对训练集之外的数据的符合程度 。这种思想就称为交叉验证(Cross Validation) 。定义交叉验证(Cross Validation),有的时候也称作循环估计(Rotation Estimation),是一种统计学上将数据样本切割成较小子集的实用方法,该理论是由Seymour Geisser提出的 。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和 。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次 。把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares) 。基本思想交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标 。目的用交叉验证的目的是为了得到可靠稳定的模型 。在建立PCR 或PLS 模型时,一个很重要的因素是取多少个主成分的问题 。用cross validation 校验每个主成分下的PRESS值,选择PRESS值小的主成分数 。或PRESS值不再变小时的主成分数 。常用的精度测试方法主要是交叉验证,例如10折交叉验证(10-fold cross validation),将数据集分成十份,轮流将其中9份做训练1份做验证,10次的结果的均值作为对算法精度的估计,一般还需要进行多次10折交叉验证求均值,例如:10次10折交叉验证,以求更精确一点 。交叉验证有时也称为交叉比对,如:10折交叉比对 。常见形式Holdout 验证常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用 。随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据 。一般来说,少于原本样本三分之一的数据被选做验证数据 。K-fold cross-validationK折交叉验证,初始採样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练 。交叉验证重複K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测 。这个方法的优势在于,同时重複运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的 。留一验证正如名称所建议,留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料,而剩余的则留下来当做训练资料 。这个步骤一直持续到每个样本都被当做一次验证资料 。事实上,这等同于和