[FML]学习笔记一Cross-validation交叉验证
在实际的工程中,有时labeled data的数量不足以留出validation sample(验证样本)否则会导致training sample(训练样本)的数量太少。为了解决这个问题,我们引入一种叫做 n-fold cross-validation(n重交叉验证)的方法。
图片1.1
如图1.1所示,n-fold cross-validation的步骤如下:
1.首先随机的将大小为m的总标记样本分为n个fold(子样本),通常每个子样本的大小相同为mi=m/n。
2.对于每一个子样本mi,算法在除了该子样本的所有子样本上训练,得到一个hypothesis,将得到的hypothesis在该子样本mi上进行test得到error。
3.最终在所有的hypothesis中选择error最小的hypothesis。
这里的error为cross-validation error,不是只在mi上test,而要在所有的fold中进行test并得到平均值:
那么,如何选择n的值也就是子样本fold的数量呢?这里涉及到了一个bias和variance权衡的问题:
bias和variance的定义:
bias:a learner's tendency to consistently learn the same wrong thing.即度量了某种学习算法的平均估计结果所能逼近学习目标的程度。
variance:the tendency to learn random things irrespective of the real signal.即度量了在面对同样规模的不同训练集时,学习算法的估计结果发生变动的程度。
用stanford机器学习讲义上的一张图就能很好的解释二者的区别:
图片1.2
当n取的很大时,validation fold的大小很小,相应的training sample的大小就很大,那么算法就有可能会出现small bias high variance的情况,也就是对于training sample出现了过拟合,而对于不在training sample中的点并不能做很好的预测。
当n取的很小时,相应的validation fold的大小很大,training sample的大小很小,也就会出现small variance high bias的情况。
通常在实际的工程中,n取5或者10。
在实际的工程中,首先要将sample分为training sample和test sample,再在training sample中跑n-fold cross validation,得到的cross-validation error最小的Θ并不是直接得到hypothesis,而是作为θ0再在所有的training sample中再次train,并将最终的结果在test sample上测试。
[FML]学习笔记一Cross-validation交叉验证的更多相关文章
- cross validation交叉验证
交叉验证是一种检测model是否overfit的方法.最常用的cross validation是k-fold cross validation. 具体的方法是: 1.将数据平均分成k份,0,1,2,, ...
- Spring学习笔记2——表单数据验证、文件上传
在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...
- SpringMVC学习笔记七:SpringMVC的数据验证
SpringMVC支持JSR(Java Specification Requests, Java规范提案)303-Bean Validation数据验证规范,该规范的实现者很多,其中较常用的是 Hib ...
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...
- 前端MVC学习笔记(二)——AngularJS验证、过滤器、指令
一.验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="text" ng-m ...
- Yii学习笔记之四(表单验证 api 翻译)
1.表单验证 对于用户输入的全部数据,你不能信任,必须加以验证. 全部框架如此.对于yii 能够使用函数 yii\base\Model::validate() 进行验证 他会返回boolean值的 ...
- [FML]学习笔记三 Rademacher Complexity
该章节证明用到的不等式:Hoeffding不等式,McDiarmid不等式以及jensen不等式 Hoeffding's: McDiarmid不等式是Hoeffding不等式的一个推广,用f(S)代替 ...
- easyui学习笔记14-拓展的基本验证规则
/** * 扩展的基本校验规则, */ $.extend($.fn.validatebox.defaults.rules, { minLength : { // 判断最小长度 validator : ...
- angular学习笔记(二十)-表单验证
本篇主要介绍angular中的表单验证: 表单验证主要有以下一些内容: 1. required指令: 相当于html5的required属性,验证不能为空 2. ng-maxlength属性: 验证内 ...
随机推荐
- C程序设计语言练习题1-10
练习1-10 编写一个将输入复制到输出的程序,并将起重的制表符替换为\t,把回退符替换成\b,把反斜杠替换为\\.这样可以将制表符和回退符以可见的方式显示出来. 代码如下: #include < ...
- Linux基础知识入门
[Linux基础]Linux基础知识入门及常见命令. 前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1: ...
- tbschedule
tbschedule 此文档内部包括:1.设计目标说明2.主要概念解释3.涉及的数据对象说明4.涉及的业务接口说明5.Sleep模式和NotSleep模式的区别6.使用过程中的注意事项 1.调度器的设 ...
- iOS工程结构
好的架构不是设计出来的,而是进化而来的! 写在前面 从2011年底开始学习iOS开发,到现在也已经快3年了,虽然中途没有一直进行iOS的开发(总是在Android和iOS间切换),但始终没 ...
- activiti 5.17 流程图中文乱码问题
1. 流程图中任务中的中文乱码显示问题. 解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...
- cf B. Vasya and Public Transport
http://codeforces.com/contest/355/problem/B #include <cstdio> #include <cstring> #includ ...
- hdu 畅通工程
http://acm.hdu.edu.cn/showproblem.php?pid=1863 #include <cstdio> #include <cstring> #inc ...
- BZOJ1089: [SCOI2003]严格n元树
1089: [SCOI2003]严格n元树 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 762 Solved: 387[Submit][Status ...
- 浅谈单片机、ARM和DSP的异同
犹记得当年读书的时候,老师说单片机.ARM.DSP有互通之处,都是CPU,但听老师讲都听不懂. 我该如何理解他们,并找出他们的异同呢?我们来看看行内人的看法: ICer,从事ARM CPU的SOC设计 ...
- debug openStack
ERROR neutron.agent.l3.agent [-] An interface driver must be specified No valid host was found. Ther ...