验证集与测试集的区别_验证集和测试集可以一样吗-程序员宅基地

技术标签: Machine Learning  Deep Learning  

在对机器学习算法进行学习和实践的时候,我们经常会遇到“验证集”和“测试集”,通常的机器学习书籍都会告诉我们,验证集和测试集不相交,验证集和训练集不相交,测试集和训练集不相交。也就是验证集与测试集似乎是同一级的东西,那么我们自然而然会有一个困惑为什么还要分测试集和验证集呢?
其实问题的答案是:训练集用于训练模型参数,测试集用于估计模型对样本的泛化误差,验证集用于“训练”模型的超参数。

什么是模型的参数
我们知道一个机器学习模型通常包括两个部分的参数:模型参数和超参数。其中超参数是用于控制模型行为的参数,这些参数不是通过模型本身学习而来的。例如多项式回归模型里面,多项式的次数,学习速率是超参数。这些超参数不能由模型本身训练得到是因为模型会倾向于把超参数训练的过大或者过小,从而极易导致过拟合。例如多项式回归模型里面,如果让模型本身去训练多项式的次数,那么模型会选择高次多项式,因为这样做误差可以取到特别小,极端情况下,N个点的多项式回归会选择次数N。

然而这些超参数,也会有不同的选择,例如学习速率可以选择0.1,0.01,1,10···那么我们怎么知道超参数的某个值会比另外一个好呢?一个很自然的想法是我们可以选择不同的超参数的值,然后跑在同一个训练集上再看最后的结果。但是这样会有一个类似的问题:如果使用训练集来选择超参数,那么超参数总是会往增加模型容量的方向发展。举个多项式的例子:如果训练集里面有100个点,然后我们让多项式的次数依次为1,10,20,100。然后让模型跑这个训练集,等训练集误差收敛后,我们再看在这个相同训练集,选择那个参数会取得最小的训练误差。。。显然选择次数100会是取得最小的训练误差···然而这显然会过拟合。那又怎么办呢?方法很简单,只要从这100个训练样本中取出一部分样本,让模型训练的过程看不到这些样本。然后再计算模型在这一部分样本中的表现,即可选择出合适的超参数。这种方式下得到的超参数最起码会比前一种方法更合理,更不会过拟合。而这一小部分样本,就是验证集啦

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41894030/article/details/114821864

智能推荐

go声明局部变量没使用报错# command-line-arguments .\main.go:4:6: a declared but not used_go 局部变量说没有使用过-程序员宅基地

# command-line-arguments.\main.go:4:6: a declared but not usedpackagemainimport"fmt"funcmain(){varastring="hhh";varb,cint=1,2fmt.Println(b,c);}正确写法:packagemainimport"fmt"funcmain(){//varastring="hhh";..._go 局部变量说没有使用过

机器学习方法:回归(一):线性回归Linear regression-程序员宅基地

欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。开一个机器学习方法科普系列:做基础回顾之用,学而时习之;也拿出来与大家分享。数学水平有限,只求易懂,学习与工作够用。周期会比较长,因为我还想写一些其他的,呵呵。content: linear regression, Ridge, Lasso Logistic Regression..._找不到linearregression

BZOJ1767/Gym207383I CEOI2009 Harbingers 斜率优化、可持久化单调栈、二分-程序员宅基地

传送门——BZOJCH传送门——VJ注:本题在BZOJ上是权限题,在Gym里面也不能直接看,所以只能在VJ上交了……不难考虑到这是一个\(dp\)。设\(dep_x\)表示\(x\)在树上的带权深度,\(parent_x\)表示\(x\)的祖先节点集合,\(f_x\)表示点\(x\)的答案那么\(f_x = \min\limits_{i \in parent_x}\{f_i + V_..._ceoi2009 tri

Python报错:(编码问题)SyntaxError: Non-ASCII character '\xe2' in file-程序员宅基地

报错信息:报错原因:SyntaxError: Non-ASCII character '\xe2' in file意思是说,在文件中存在非ASCII字符;ASCII是8位即一个字符,一共256个字符,随着计算机的发展,现在已经用到2个或者4个字符;最重要的原因就是文件中有中文解决方法:在相应文件头加#!/usr/bin/python# -*- coding: UTF-8 -...

react+antd 动态编辑表格数据-程序员宅基地

react+antd 动态编辑表格数据react+antd 动态编辑表格数据小需求例子图片示例代码总结react+antd 动态编辑表格数据在项目中,我们会遇到一种需求,为用户提供一份表格去编辑,而且表格中各个单元格是相关影响的,因此在一个单元格中编辑过会影响另外一个单元格。小需求在一个表格中:1.有两行数据,一行是数据1,一行是数据2;2.而且只能数据1的单元格可以进行编辑;3.只能输入数字,要是输入其他的,则显示编辑之前的数值4. 当数据1的那行数据发生改变的时候,数据2对应的单元格的数

网页排版的10种致命的语义错误-程序员宅基地

1、使用连字符而不要用一个em的虚线使用em的虚线是现在的WEB编辑非常流行的做法。2、使用句点,而不是省略号这是一个专门的印刷方面的省略号标记(特别是在西欧字符中),由三个点组成,区别于中文里面的省略符号。3、使用正确的引号在引用的部分,你应该保留引号在需要的地方,这将表示该部分是授权使用还是部分免费的发布的。4、严格控制句子之间的双倍间距这是一个来源于ASCII时期

随便推点

dp基础之网格问题-程序员宅基地

问题1:在一个m*n的网格里,从左上到右下一共有多少种路径,要求,只能向右或向下走?(m,n>0)代码及注释如下:#!/usr/bin/pythondef get_case(m,n): #m,n分别为网格的行列数 #创建一个列表 #f[i][j]表示从左上开始到第i行第j列的点的路径数 f = [[0 for x in range(n)] for y in range(m...

五组数据告诉你倒闭企业的“死亡画像”-程序员宅基地

数据猿发布最新招聘公告:①阿里数据中台品牌团队四大职位虚位以待②蚂蚁金服大数据部2020实习生招募全面启动③TalkingData北京招资深银行行业BD..._talkingdata倒闭

L1 - Learn 8 Phrasal Verbs for opening: pop open, peel off, flip up…_flip over和flip up_@变色龙@的博客-程序员宅基地

How to Open Thingstwist off the capflip up the lidpeel off the topbust into a pack of sugarcrack open a beer / a poptake off the lid / cappop open the containerpump out some soap_flip over和flip up

解决TensorFlow GPU缺少cudaxxxx.dll库通用解决办法_tensorflow2.12找不到cuda-程序员宅基地

前言时隔一年,又重新安装TensorFlow。每次安装tensorflow都会有奇奇怪怪的问题,具体的安装步骤这里就不详细介绍了,有兴趣可以看看我这篇文章https://blog.csdn.net/weixin_44065323/article/details/103582157(TensorFlow的版本已经过时了,大家可以安装最新的,但是cuda和cudnn基本操作是一样的)但是参考了网上很多最新的教程,可是还是会 出现如题这样的问题,特别是我这次安装TensorFlow2.4的时候(tm Te_tensorflow2.12找不到cuda

Android studio Android集成百度身份证识别 详细步骤_fileutil.getsavefile(getapplicationcontext()).geta-程序员宅基地

最近因为项目需要,进行了集成百度身份证识别的验证damo;很多地方都是按照官方的来的,能力强的小伙伴可以直接看官方damo;一,创建项目,并下载SDK1>去百度大脑处注册账号并创建项目,地址:https://ai.baidu.com/ 1.1点击控制台,进入管理中心1.2 进入管理中心后,点击左侧产品服务,选择文字识别1_fileutil.getsavefile(getapplicationcontext()).getabsolutepath()

Linux Shell 删除一个字符串中的部分字符_shell过滤掉指定字符中的某个字符-程序员宅基地

转载网址:http://blog.chinaunix.net/uid-71729-id-114582.html_shell过滤掉指定字符中的某个字符