[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属性: 验证内 ...
随机推荐
- Android学习笔记--存储方案(SharedPreference、文件IO)
1. SharedPreference SharedPreference可以很容易的保存key-value对,通常用于保存配置信息.保存的步骤 1. 获得SharedPreferences对象 (最后 ...
- 阅读记录:Learning multiple layers of representation(杂乱笔记)
典型的浅层学习结构: 传统隐马尔可夫模型(HMM).条件随机场 (CRFs).最大熵模型(Maxent).支持向量机(SVM).核回归及仅含单隐层的多层感知器(MLP)等. 局部表示,分布式表示和稀疏 ...
- android 应用在启动后进行全局的的初始化操作
例如对于Volley的使用: 1:定义一个类使其继承Application package com.wzh.app; import com.wzh.volley.WzhVolley; import a ...
- simulate windows postmessage or keydown
2 ways: 1. under TForm: if assigned(focused) then Focused.keydown(key,keychar,[]); 2. using s ...
- Powershell创建对象
.Net类型中的方法功能很强大.可以通过类型的构造函数创建新的对象,也可以将已存在的对象转换成指定的类型. 通过New-Object创建新对象 如果使用构造函数创建一个指定类型的实例对象,该类型必须至 ...
- EXTJS4:在grid中加入合计行
extjs4很方便的实现简单的合计(针对在不分页的情况下): 它效果实现在:Ext.grid.feature.Summary这个类中 Ext.define('TestResult', { extend ...
- 【转】win7+ubuntu双系统安装方法--不错
原文网址:http://blog.csdn.net/lvanneo/article/details/16885121 前段时间又安装一下win7+ubuntu双系统,过段时间就会忘记,这次自己写下来, ...
- Android Studio:Error:Execution failed for task ':app:mergeDebugResources'. > Some file crunching failed, see logs for details
Gradle 编译错误: 14:39:58 Executing tasks: [clean, :app:generateDebugSources, :app:mockableAndroidJar, : ...
- python:学习defaultdict,namedtuple
# -*- coding: utf-8 -*-__author__ = 'Administrator'import bisect#排序说明:http://en.wikipedia.org/wiki/i ...
- Android UI开发详解之ActionBar .
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果. 一.添加A ...