交叉验证

outthinker outthinker     2022-09-28     668

关键词:

参考链接:http://blog.csdn.net/linkin1005/article/details/42869331

假设我们需要从某些候选模型中选择最适合某个学习问题的模型,我们该如何选择?以多元回归模型为例:技术分享,应该如何确定k的大小,使得该模型对解决相应的分类问题最为有效?如何在偏倚(bias)和方差(variance)之间寻求最佳的平衡点?更进一步,我们同样需要知道如何在加权回归模型中选择适当的波长参数技术分享,或者在基于技术分享范式的SVM模型中选择适当的参数C?

我们假设模型集合为有限集技术分享,我们的目的就是从这d个模型中,选择最有效的模型。

 

假设样本集为S,根据经验风险最小化原则(ERM),可能会使用这样的算法:

1.在S上训练每个模型技术分享,得到相应的假设函数技术分享

2.选择训练误差最小的假设函数,即为我们需要的函数。

然而,这样的算法实际上并不有效。以多元回归模型为例,指数越高,对样本集S的拟合就越准确,这样虽然保证了较低的训练误差,但是这种方法会使泛化误差(又叫“真实误差”,在这儿和测试误差很像)变得很大,因此,这并不是一个好的方法。

简单交叉验证

下面介绍一种方法,称为简单交叉验证(simple cross validation)

随机将S分为技术分享(例如70%的样本)和技术分享(剩下30%的样本),这里技术分享称作简单交叉验证集;

1.在技术分享上训练每个模型技术分享,得到相应的假设函数技术分享
2.将每个假设函数通过交叉验证集技术分享进行验证,选择使得训练误差技术分享最小的技术分享

3.通过简单交叉验证,可以得到每个假设函数技术分享的真实的泛化误差,从而可以选择泛化误差最小的那个假设函数。

通常,预留1/4-1/3的样本作为交叉验证集,而剩下的作为训练集使用。

步骤3也可以替换成这样的操作:选择相应的模型技术分享,使得训练误差技术分享最小,然后在用技术分享对整个样本集S进行训练。使用这样的方法原因是有的学习算法对于初试的条件非常敏感,因此,他也许在技术分享上表现良好,但是在整个样本集中却存在很大的误差,因此需要再次带入整个样本集进行验证。

简单交叉验证的不足之处在于:此方法浪费了技术分享中的数据,即使我们将模型再次带入整个样本集,我们仍然只用了70%的样本建模。如果样本的采集非常的容易以致样本量非常之大,使用交叉验证方法没有什么问题;但如果样本非常稀缺,采集困难,那么我们就需要考虑一种能够充分利用样本的方法。

 

k-折交叉验证

k-折交叉验证将样本集随机划分为k份,k-1份作为训练集,1份作为验证集,依次轮换训练集和验证集k次,验证误差最小的模型为所求模型。具体方法如下:

1.随机将样本集S划分成k个不相交的子集,每个子集中样本数量为m/k个,这些子集分别记作技术分享

 

2.对于每个模型技术分享,进行如下操作:

for j=1 to k

技术分享作为训练集,训练模型技术分享,得到相应的假设函数技术分享

再将技术分享作为验证集,计算泛化误差技术分享

 

3.计算每个模型的平均泛化误差,选择泛化误差最小的模型技术分享

 

K-折交叉验证方法,每次留作验证的为总样本量的1/k(通常取k=10),因此每次用于训练的样本量相应增加了,然而K-折交叉验证对于每个模型都需要运行k次,他的计算成本还是较高的。
还有一种k-折交叉验证的极端形式,当k=m时,即把样本集S划分为m个子集,其中的m-1个样本作为训练集,剩下1个样本作为验证集,如此循环m次,选取验证误差最小的模型。
以上介绍的各种交叉验证的方法,可用于模型的选择,但也可以针对单个算法和模型进行评价。

小结:交叉验证是一种模型选择方法,其将样本的一部分用于训练,另一部分用于验证。因此不仅考虑了训练误差,同时也考虑了泛化误差。从这里可以看出机器学习、数据挖掘与传统统计学的一个重要差别:传统统计学更注重理论,追求理论的完整性和模型的精确性,在对样本建立某个特定模型后,用理论去对模型进行各种验证;而机器学习/数据挖掘则注重经验,如交叉验证,就是通过不同模型在同一样本上的误差表现好坏,来选择适合这一样本的模型,而不去纠结理论上是否严谨。

交叉验证

1. 在保留交叉验证(hand-outcrossvalidation)中,随机将训练样本集分成训练集(trainingset)和交叉验证集(crossvalidationset),比如分别占70%,30%。然后使用模型在训练集上学习得到假设。最后使用交叉验证集对假设进行验证,看... 查看详情

使用交叉验证提高准确性,不使用交叉验证降低准确性

】使用交叉验证提高准确性,不使用交叉验证降低准确性【英文标题】:Accuracyincreasesusingcross-validationanddecreaseswithout【发布时间】:2015-04-2114:25:01【问题描述】:我有一个关于交叉验证的问题:我正在使用朴素贝叶斯分类器按作... 查看详情

交叉验证

  交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好... 查看详情

交叉验证

交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。... 查看详情

交叉验证思想

交叉验证写一个函数,实现交叉验证功能,不能用sklearn库。交叉验证(Cross-Validation):有时亦称循环估计,是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析,而其它子集则用来做后续对此分... 查看详情

交叉验证和网格搜索有啥区别?

】交叉验证和网格搜索有啥区别?【英文标题】:Whatisthedifferencebetweencross-validationandgridsearch?交叉验证和网格搜索有什么区别?【发布时间】:2013-10-2012:55:49【问题描述】:简单来说,交叉验证和网格搜索有什么区别?网格搜索... 查看详情

交叉验证的实现

】交叉验证的实现【英文标题】:ImplementationofCross-validation【发布时间】:2020-05-3012:50:28【问题描述】:我很困惑,因为许多人都有自己的方法来应用交叉验证。例如,有些人将其应用于整个数据集,有些人将其应用于训练集。... 查看详情

交叉验证及其目的

首先,为什么要交叉验证:目的有两个:1.选择合适的模型2.选择合适的参数1.对于一个问题,可以用模型m1,m2,不知道哪个的准确率高,可以交叉验证一下,从而选择用哪个2.对于一个模型,参数的选择会影响结果,所以用交叉... 查看详情

机器学习交叉验证和网格搜索(代码片段)

交叉验证和网格搜索交叉验证和网格搜索交叉验证:网格搜索:交叉验证和网格搜索交叉验证:之前学习算法的时候,去验证一个模型泛化能力(好坏),都只验证一次,这肯定是不行的。因此我... 查看详情

交叉验证cross-validation

PRML中首章绪论的模型选择,提到两个方法:1、交叉验证(Cross-Validation)2、赤池信息准则(AkaikeInformationCriterion),简称:AIC。 交叉验证是模型选择的一种方法,若有模型选择问题,就可以用交叉验证。例如做线性回归,你... 查看详情

k-近邻算法交叉验证,网格搜索(代码片段)

交叉验证,网格搜索1.什么是交叉验证(crossvalidation)1.1分析1.2为什么需要交叉验证2.什么是网格搜索(GridSearch)3.交叉验证,网格搜索(模型选择与调优)API4.鸢尾花案例增加K值调优5.总结1.什么是交叉验证(crossvalidation... 查看详情

交叉验证(crossvalidation)原理小结

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测... 查看详情

5倍交叉验证如何理解

15倍交叉验证是一种常用的模型评估方法。2在进行机器学习模型的训练和测试时,我们需要对模型的性能进行评估。其中,交叉验证是一种常用的评估方法。5倍交叉验证是将数据集分成5份,其中4份用于训练模型,1份用于测试... 查看详情

交叉验证(crossvalidation)原理小结

交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。... 查看详情

交叉验证概述

交叉验证  交叉验证(Cross-validation)主要用于建模应用中,例如PCR、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平... 查看详情

Weka 中的交叉验证

】Weka中的交叉验证【英文标题】:CrossValidationinWeka【发布时间】:2012-05-1308:09:21【问题描述】:从我读到的内容中,我一直认为交叉验证是这样执行的:在k-fold交叉验证中,原始样本是随机的划分为k个子样本。在k个子样本中,... 查看详情

线性回归中的交叉验证

】线性回归中的交叉验证【英文标题】:CrossValidationinlinearregression【发布时间】:2018-09-0610:55:41【问题描述】:我正在尝试在线性回归中执行交叉验证,为此我正在使用pythonsklearn库。我有一个关于对给定数据集执行交叉验证的... 查看详情

神经网络中啥是交叉验证,为啥要进行交叉验证?

参考技术A交叉验证(Cross-validation)的好处是可以从有限的学习数据中获取尽可能多的有效信息,从而获得更合适的两层权值;并且此方法是从多个方向开始学习样本,可以有效的避免陷入局部极小值。采用交叉验证方法的前提是将神... 查看详情