在实际的工程中,有时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交叉验证的更多相关文章

  1. cross validation交叉验证

    交叉验证是一种检测model是否overfit的方法.最常用的cross validation是k-fold cross validation. 具体的方法是: 1.将数据平均分成k份,0,1,2,, ...

  2. Spring学习笔记2——表单数据验证、文件上传

    在上一章节Spring学习笔记1——IOC: 尽量使用注解以及java代码中,已经搭建了项目的整体框架,介绍了IOC以及mybatis.第二节主要介绍SpringMVC中的表单数据验证以及文件上传. ...

  3. SpringMVC学习笔记七:SpringMVC的数据验证

    SpringMVC支持JSR(Java Specification Requests, Java规范提案)303-Bean Validation数据验证规范,该规范的实现者很多,其中较常用的是 Hib ...

  4. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

  5. 前端MVC学习笔记(二)——AngularJS验证、过滤器、指令

    一.验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="text" ng-m ...

  6. Yii学习笔记之四(表单验证 api 翻译)

    1.表单验证 对于用户输入的全部数据,你不能信任,必须加以验证. 全部框架如此.对于yii 能够使用函数  yii\base\Model::validate()  进行验证 他会返回boolean值的 ...

  7. [FML]学习笔记三 Rademacher Complexity

    该章节证明用到的不等式:Hoeffding不等式,McDiarmid不等式以及jensen不等式 Hoeffding's: McDiarmid不等式是Hoeffding不等式的一个推广,用f(S)代替 ...

  8. easyui学习笔记14-拓展的基本验证规则

    /** * 扩展的基本校验规则, */ $.extend($.fn.validatebox.defaults.rules, { minLength : { // 判断最小长度 validator : ...

  9. angular学习笔记(二十)-表单验证

    本篇主要介绍angular中的表单验证: 表单验证主要有以下一些内容: 1. required指令: 相当于html5的required属性,验证不能为空 2. ng-maxlength属性: 验证内 ...

随机推荐

  1. Hdu1097(计算a的b次幂最后一位数值)

    #include <stdio.h> #include <math.h> int main() { int Num1,Num2; while(scanf("%d %d ...

  2. Kafka笔记--参数说明及Demo

    参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...

  3. Idea使用记录--添加Problems&&解决Autowired报错could not autowire

    今天在使用Idea的时候,发现Idea在整个每次找到错误代码非常不方便(Idea如果类中有错误,没有打开过类并不会提示,比如构建工程后缺少jar包问题).我想快速看到工程哪里出问题类似于eclipse ...

  4. 另一种root方法,Android boot.img破解

    一.破解原理 Android手机获得Root权限,其实就是让/system和/data分区获得读写的权限.这两个分区的权限配置,一般在根分区的init.rc文件中,修改这个文件可永久获得root权限. ...

  5. 从汇编来看c语言

    一. 学习过程 从C语言的角度提出一些问题,这些问题再从汇编的角度考虑,还真的很有意思. (1) 我们用高级语言编程时,一般不可能不用到变量,但是一定要用到变量吗?还有这些变量从汇编的角度是怎么实现的 ...

  6. 在WPF中使用AForge.net控制摄像头拍照

    原文:在WPF中使用AForge.net控制摄像头拍照 利用AForge.net控制摄像头拍照最方便的方法就是利用PictureBox显示摄像头画面,但在WPF中不能直接使用PictureBox.必须 ...

  7. move 表索引失效

    SQL> select INDEX_NAME,status from user_indexes; INDEX_NAME       STATUS ------------------------ ...

  8. oracle数据库 ORA-12560: 协议适配器错误

    ORA-12560:  协议适配器错误 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具-- ...

  9. HttpServletRequest对象方法的用法(转)

    原文地址:http://blog.csdn.net/xh16319/article/details/8450715 原文作者:ITSTAR 文章太赞,忍不住就想转..... 1. 获得客户机信息    ...

  10. 用户控件(.ascx)与<ul><li>以及<a>布局之小结

    用户控件(.ascx)与<ul><li>以及<a>布局 小结 一.用户控件(.ascx) 1.aspx是浏览器直接访问的页面,而ascx是用户控件,一般是用来重用. ...