交叉验证我的总结.docx

上传人:b****7 文档编号:9566210 上传时间:2023-02-05 格式:DOCX 页数:17 大小:33.27KB
下载 相关 举报
交叉验证我的总结.docx_第1页
第1页 / 共17页
交叉验证我的总结.docx_第2页
第2页 / 共17页
交叉验证我的总结.docx_第3页
第3页 / 共17页
交叉验证我的总结.docx_第4页
第4页 / 共17页
交叉验证我的总结.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

交叉验证我的总结.docx

《交叉验证我的总结.docx》由会员分享,可在线阅读,更多相关《交叉验证我的总结.docx(17页珍藏版)》请在冰豆网上搜索。

交叉验证我的总结.docx

交叉验证我的总结

先说下我和邵是云的聊天情况:

她的意思其实一开始所有样本也是先分为了两个部分,一个大的部分是训练集,一个小的部分是测试集,然后只是在训练集里面分为常规训练集和一个效验集,且是交叉验证的方式,都全部交叉验证搞完了,再最后单独测试那个小部分的测试集样本?

就是你说的trainingaccuracy(常规训练集),crossvalidationrate(效验集)andtestaccuracy(测试集),她说这是标准的方式,而如果全体数据用来训练和交叉验证其实就是把所有的样本全部分为了训练集和效验集,所以就没有testaccuracy一说。

 

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

当训练样本数目过少,采用“交叉验证法”(crossvalidation).

交叉验证法分两种

1:

K重交叉验证法:

该方法是最为普遍的计算推广误差的方法之一。

其过程为:

将训练样本集随机分为K个集合,通常分为K等份,对其中的K-1个集合进行训练,得到一个决策函数,并用决策函数对剩下的一个集合进行样本测试。

该过程重复K次,取K次过程中的测试错误的平均值作为推广误差。

2:

留一法:

该方法可以说是K重交叉验证法的极端情况,即K=L,L为整个训练样本集的大小。

该过程为:

对于第i个训练样本,将其取出,对剩下L-1个样本进行训练,得到决策函数,并用其测试第i个训练样本,该过程重复L次,用此方法求出的误差对于实际中的测试误差来说几乎是无偏的。

(注意当样本过少,即使交叉验证效果也不会理想,一般样本应在100以上.)

k-fold validation中文就是"k-折交叉验证(确认)"

其中的k是用户自己定的

但它必须比原始的训练集中的元素个数n要小,即k<=n.

著名的loo(leave one out,留一法)就是k-fold validation的一个特例

即loo中的k=n.

k-fold validation经常被用来训练NN,SVM等来确定一个最优的参数

它的基本思想就是

将原始的训练集分成两部分:

训练集2(为了与原始训练集相区别,本处称之为训练集2)与验证集

从原始训练集中选择n/k个元素组成验证集

剩下的(k-1)*n/k个元素用来做训练集2

然后用训练集2来训练NN,SVM等,用验证集来验证所得分类器(此处以分类为例,对回归应该也一样)的错误码率

然后再次选择另外n/k个元素组成验证集

剩下的做为训练集2

循环,直到所有元素n/k个元素全部被选择一遍为止

比较以上每次循环所得分类器的错误率

把所得错误率最低的那个参数认为是最优的参数

 

-fold cross-validation不是什么参数都可以调的

它可以调的只是离散的参数,比如网络hidden node的个数

对于连续的参数没法调

网络的权值是通过learning algorithm来调节的

只是用validation set来控制是否over train

跟k-fold cross-validation没有什么关系除此之外k-fold cross-validation主要是干什么:

 根据一个样本集k次validation之后的误差的平均值来估计一个已经训练好的网络的泛化误差

结构风险最小化

VC维在有限的训练样本情况下,当样本数n固定时,此时学习机器的VC维越高学习机器的复杂性越高。

VC维反映了函数集的学习能力,VC维越大则学习机器越复杂(容量越大)。

    

   所谓的结构风险最小化就是在保证分类精度(经验风险)的同时,降低学习机器的VC维,可以使学习机器在整个样本集上的期望风险得到控制。

   

   推广的界(经验风险和实际风险之间的关系,注意引入这个原因是什么?

因为训练误差再小也就是在这个训练集合上,实际的推广能力不行就会引起过拟合问题还。

所以说要引入置信范围也就是经验误差和实际期望误差之间的关系):

   期望误差R(ω)≤Remp(ω)+Φ(n/h)注意Remp(ω)是经验误差也就是训练误差(线性中使得所有的都训练正确),Φ(n/h)是置信范围,它是和样本数和VC维有关的。

上式中置信范围Φ随n/h增加,单调下降。

即当n/h较小时,置信范围Φ较大,用经验风险近似实际风险就存在较大的误差,因此,用采用经验风险最小化准则,取得的最优解可能具有较差的推广性;如果样本数较多,n/h较大,则置信范围就会很小,采用经验风险最小化准则,求得的最优解就接近实际的最优解。

可知:

影响期望风险上界的因子有两个方面:

首先是训练集的规模n,其次是VC维h。

可见,在保证分类精度(经验风险)的同时,降低学习机器的VC维,可以使学习机器在整个样本集上的期望风险得到控制,这就是结构风险最小化(StructureRiskMinimization,简称SRM)的由来。

    在有限的训练样本情况下,当样本数n固定时,此时学习机器的VC维越高(学习机器的复杂性越高),则置信范围就越大,此时,真实风险与经验风险之间的差别就越大,这就是为什么会出现过学习现象的原因。

机器学习过程不但要使经验风险最小,还要使其VC维尽量小,以缩小置信范围,才能取得较小的实际风险,即对未来样本有较好的推广性,它与学习机器的VC维及训练样本数有关。

   

   线性可分的问题就是满足最优分类面的面要求分类面不但能将两类样本正确分开(训练错误率为0),而且要使两类的分类间隔最大(这个是怎么回事呢?

原来是有根据的,这个让俺郁闷了好久呢。

在@间隔下,超平面集合的VC维h满足下面关系:

    h=f(1/@*@)其中,f().是单调增函数,即h与@的平方成反比关系。

因此,当训练样本给定时,分类间隔越大,则对应的分类超平面集合的VC维就越小。

)。

根据结构风险最小化原则,前者是保证经验风险(经验风险和期望风险依赖于学习机器函数族的选择)最小,而后者使分类间隔最大,导致VC维最小,实际上就是使推广性的界中的置信范围最小,从而达到使真实风险最小。

注意:

置信范围大说明真实风险和经验风险的差别较大。

    

   解释到这里了,终于有点眉目了,哦原来就是这么回事啊,真是的。

总结一下就是训练样本在线性可分的情况下,全部样本能被正确地分类(咦这个不就是传说中的yi*(w*xi+b))>=1的条件吗),即经验风险Remp为0的前提下,通过对分类间隔最大化(咦,这个就是Φ(w)=(1/2)*w*w嘛),使分类器获得最好的推广性能。

    

   那么解释完线性可分了,我们知道其实很多时候是线性不可分的啊,那么有什么区别没有啊?

废话区别当然会有啦,嘿嘿那么什么是本质的区别啊?

本质的区别就是不知道是否线性可分但是允许有错分的样本存在(这个咋回事还是没明白hoho)但是正是由于允许存在错分样本,此时的软间隔分类超平面表示在剔除那些错分样本后最大分类间隔的超平面。

这里就出现了新词松驰因子,干吗用滴?

就是用来控制错分样本的啊。

这样的话经验风险就要跟松驰因子联系在一起了。

而C就是松驰因子前面的系数,C>0是一个自定义的惩罚因子,它控制对错分样本惩罚的程度,用来控制样本偏差与机器推广能力之间的折衷。

c越小,惩罚越小,那么训练误差就越大,使得结构风险也变大,而C越大呢,惩罚就越大,对错分样本的约束程度就越大,但是这样会使得第二项置信范围的权重变大那么分类间隔的权重就相对变小了,系统的泛化能力就变差了。

所以选择合适的C还是很有必要的。

选择核函数。

核函数有很多种,如线性核、多项式核、Sigmoid核和RBF(RadialBasisfunction)核。

本文选定RBF核为SVM的核函数(RBF核K(x,y)=exp(-γ||x-y||的平方),γ>0)。

因为RBF核可以将样本映射到一个更高维的空间,可以处理当类标签(ClassLabels)和特征之间的关系是非线性时的样例。

Keerthi等[25]证明了一个有惩罚参数C的线性核同有参数(C,γ)(其中C为惩罚因子,γ为核参数)的RBF核具有相同的性能。

对某些参数,Sigmoid核同RBF核具有相似的性能[26]。

另外,RBF核与多项式核相比具有参数少的优点。

因为参数的个数直接影响到模型选择的复杂性。

非常重要的一点是01)或者0<γxixj+r<1,跨度非常大。

而且,必须注意的是Sigmoid核在某些参数下是不正确的(例如,没有两个向量的内积)。

(4)用交叉验证找到最好的参数C和γ。

使用RBF核时,要考虑两个参数C和γ。

因为参数的选择并没有一定的先验知识,必须做某种类型的模型选择(参数搜索)。

目的是确定好的(C,γ)使得分类器能正确的预测未知数据(即测试集数据),有较高的分类精确率。

值得注意的是得到高的训练正确率即是分类器预测类标签已知的训练数据的正确率)不能保证在测试集上具有高的预测精度。

因此,通常采用交叉验证方法提高预测精度。

k折交叉验证(k-foldcrossvalidation)是将训练集合分成k个大小相同的子集。

其中一个子集用于测试,其它k-1个子集用于对分类器进行训练。

这样,整个训练集中的每一个子集被预测一次,交叉验证的正确率是k次正确分类数据百分比的平均值。

它可以防止过拟合的问题。

可以归纳为以下几个过程(顺序的):

1.收集数据,相关性分析(p卡方检验),特征选择(主成份分析)。

2.归一化数据。

就是根据实际要求,将数据的取值范围转化为统一的区间如[a,b],a,b为整数。

方法参考:

http:

//slt-

3.利用抽样技术将数据集分为训练集和测试集。

抽样技术有分层抽样,简单抽样(等概率抽样)

4.将数据转化为软件(接口)所支持的格式。

就libsvm(c++,java)来说,我们可以使用FormatDataLibsvm.xls将数据转化为libsvmm所要求的格式。

参考:

http:

//slt-

5.选择核函数,可以优先考虑rbf。

6.对训练集利用交叉验证法选择最好的参数C和r(rbf核函数中的参数gama)。

可以通过网格法寻找出最优的参数,注意一次交叉验证得到一个参数对所对应的模型精度,网格法目的就是找到使得模型精度达到对高的参数对(这里的参数对可能不止两个,有可能也有其他的),可以使用一些启发式的搜索来降低复杂度,虽然这个方法笨了点,但是它能得到很稳定的搜索结果。

需要提到的这里在对训练集进行分割的时候涉及到抽样,一个较好的方法就是分层抽样。

从这步可以看出其实Cross-Validation是一种评估算法的方法。

7.用6中得到的参数对在整个训练集合上进行训练,从而得出模型。

8.利用测试集测试模型,得到精度。

这个精度可以认为是模型最终的精度。

当然有人会担心3步中抽样会有一定的误差,导致8得到的精度不一定是最好的,因此可以重复3-8得到多个模型的精度,然后选择最好的一个精度最为模型的精度(或者求所有精度的均值做为模型精度)。

如何使用交叉验证(cross-validatation)

∙写于7月28日

∙1条评论

如何使用Cross-Validation写这份文件,最主要的目的是介绍如何正确的使用cross-validation,并举例一些常犯的错误。

假设您对patternrecognition已经有基础的认识,希望这份文件对您论文中的实验内容能有所帮助。

在patternrecognition与machinelearning的相关研究中,经常会将dataset分为training跟test这两个subsets,前者用以建立model,后者则用来评估该model对未知样本进行预测时的精确度,正规的说法是generalizationability。

在往下叙述之前,这边就必须点出一个极为重要的观念:

只有trainingdata才可以用在model的训练过程中,testdata则必须在model完成之后才被用来评估model优劣的依据。

怎么将完整的dataset分为trainingset与testset也是学问,必须遵守两个要点:

1.trainingset中样本数量必须够多,一般至少大于总样本数的50%。

2.两组子集必须从完整集合中均匀取样。

其中第2点特别重要,均匀取样的目的是希望减少training/testset与完整集合之间的偏差(bias),但却也不易做到。

一般的作法是随机取样,当样本数量足够时,便可达到均匀取样的效果。

然而随机也正是此作法的盲点,也是经常是可以在数据上做手脚的地方。

举例来说,当辨识率不理想时,便重新取样一组trainingset与testset,直到testset的辨识率满意为止,但严格来说这样便算是作弊了。

Cross-validation正是为了有效的估测generalizationerror所设计的实验方法,可以细分为doublecross-validation、k-foldcross-validation与leave-one-outcross-validation。

Doublecross-validation也称2-foldcross-validation(2-CV),作法是将dataset分成两个相等大小的subsets,进行两回合的分类器训练。

在第一回合中,一个subset作为trainingset,另一个便作为testset;在第二回合中,则将trainingset与testset对换后,再次训练分类器,而其中我们比较关心的是两次testsets的辨识率。

不过在实务上2-CV并不常用,主要原因是trainingset样本数太少,通常不足以代表母体样本的分布,导致test阶段辨识率容易出现明显落差。

此外,2-CV中分subset的变异度大,往往无法达到「实验过程必须可以被复制」的要求。

K-foldcross-validation(k-CV)则是doublecross-validation的延伸,作法是将dataset切成k个大小相等的subsets,每个subset皆分别作为一次testset,其余样本则作为trainingset,因此一次k-CV的实验共需要建立k个models,并计算k次testsets的平均辨识率。

在实作上,k要够大才能使各回合中的trainingset样本数够多,一般而言k=10算是相当足够了。

最后是leave-one-outcross-validation(LOOCV),假设dataset中有n个样本,那LOOCV也就是n-CV,意思是每个样本单独作为一次testset,剩余n-1个样本则做为trainingset,故一次LOOCV共要建立n个models。

相较于前面介绍的k-CV,LOOCV有两个明显的优点:

∙每一回合中几乎所有的样本皆用于训练model,因此最接近母体样本的分布,估测所得的generalizationerror比较可靠。

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

但LOOCV的缺点则是计算成本高,因为需要建立的models数量与总样本数量相同,当总样本数量相当多时,LOOCV在实作上便有困难,除非每次训练model的速度很快,或是可以用平行化计算减少计算所需的时间。

使用Cross-Validation时常犯的错误

由于实验室许多研究都有用到evolutionaryalgorithms(EA)与classifiers,所使用的fitnessfunction中通常都有用到classifier的辨识率,然而把cross-validation用错的案例还不少。

前面说过,只有trainingdata才可以用于model的建构,所以只有trainingdata的辨识率才可以用在fitnessfunction中。

而EA是训练过程用来调整model最佳参数的方法,所以只有在EA结束演化后,model参数已经固定了,这时候才可以使用testdata。

那EA跟cross-validation要如何搭配呢?

Cross-validation的本质是用来估测(estimate)某个classificationmethod对一组dataset的generalizationerror,不是用来设计classifier的方法,所以cross-validation不能用在EA的fitnessfunction中,因为与fitnessfunction有关的样本都属于trainingset,那试问哪些样本才是testset呢?

如果某个fitnessfunction中用了cross-validation的training或test辨识率,那么这样的实验方法已经不能称为cross-validation了。

EA与k-CV正确的搭配方法,是将dataset分成k等份的subsets后,每次取1份subset作为testset,其余k-1份作为trainingset,并且将该组trainingset套用到EA的fitnessfunction计算中(至于该trainingset如何进一步利用则没有限制)。

因此,正确的k-CV会进行共k次的EA演化,建立k个classifiers。

而k-CV的test辨识率,则是k组testsets对应到EA训练所得的k个classifiers辨识率之平均值。

CrossValidation,中文意思是交叉验证,下面是几种不同类型的Crossvalidation的解释,有一个Ideainp27intheideasnotebook。

Crossvalidationisamodelevaluationmethodthatisbetterthanresiduals.Theproblemwithresidualevaluationsisthattheydonotgiveanindicationofhowwellthelearnerwilldowhenitisaskedtomakenewpredictionsfordataithasnotalreadyseen.Onewaytoovercomethisproblemistonotusetheentiredatasetwhentrainingalearner.Someofthedataisremovedbeforetrainingbegins.Thenwhentrainingisdone,thedatathatwasremovedcanbeusedtotesttheperformanceofthelearnedmodelon``new''data.Thisisthebasicideaforawholeclassofmodelevaluationmethodscalledcrossvalidation.

1.Theholdoutmethodisthesimplestkindofcrossvalidation.Thedatasetisseparatedintotwosets,calledthetrainingsetandthetestingset.Thefunctionapproximatorfitsafunctionusingthetrainingsetonly.Thenthefunctionapproximatorisaskedtopredicttheoutputvaluesforthedatainthetestingset(ithasneverseentheseoutputvaluesbefore).Theerrorsitmakesareaccumulatedasbeforetogivethemeanabsolutetestseterror,whichisusedtoevaluatethemodel.Theadvantageofthismethodisthatitisusuallypreferabletotheresidualmethodandtakesnolongertocompute.However,itsevaluationcanhaveahighvariance.Theevaluationmaydependheavilyonwhichdatapointsendupinthetrainingsetandwhichendupinthetestset,andthustheevaluationmaybesignificantlydifferentdependingonhowthedivisionismade.

2.TheK-foldcrossvalidationisonewaytoimproveovertheholdoutmethod.Thedatasetisdividedintoksubsets,andtheholdoutmethodisrepeatedktimes.Eachtime,oneoftheksubsetsisusedasthetestsetandtheotherk-1subsetsareputtogethertoformatrainingset.Thentheaverageerroracrossallktrialsiscomputed.Theadvantageofthismethodisthatitmatterslesshowthedatagetsdivided.Everydatapointgetstobeinatestsetexactlyonce,andgetstobeinatrainingsetk-1times.Thevarianceoftheresultingestimateisreducedaskisincreased.Thedisadvantageofthismethodisthatthetrainingalgorithmhastobererunfromscratchktimes,whichmeansittakesktimesasmuchcomputationtomakeanevaluation.Avariantofthismethodisto

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1