偏置-方差分解(Bias-Variance Decomposition)
本文地址为:http://www.cnblogs.com/kemaswill/,作者联系方式为kemaswill@163.com,转载请注明出处。
机器学习的目标是学得一个泛化能力比较好的模型。所谓泛化能力,是指根据训练数据训练出来的模型在新的数据上的性能。这就牵扯到机器学习中两个非常重要的概念:欠拟合和过拟合。如果一个模型在训练数据上表现非常好,但是在新数据集上性能很差,就是过拟合,反之,如果在训练数据集和新数据集上表现都很差,就是欠拟合,如下图所示

其中蓝叉点表示训练数据,蓝色的线表示学到的模型。左边学到的模型不能很好的描述训练数据,模型过于简单,是欠拟合(Under-fitting)。中间的模型可以比较好的描述训练数据。右边的模型过度的拟合了训练数据(所谓过度,是指训练数据集其实是包含一定的噪声的,如果完全拟合训练数据,会把这些随机噪声也拟合进去),导致模型过于复杂,很可能在新数据集上表现极差,称为过拟合(Over-fitting)。
偏置-方差分解(Bias-Variance Decomposition)是统计学派看待模型复杂度的观点。具体如下:
假设我们有K个数据集,每个数据集都是从一个分布p(t,x)中独立的抽取出来的(t代表要预测的变量,x代表特征变量)。对于每个数据集D,我们都可以在其基础上根据学习算法来训练出一个模型y(x;D)来。在不同的数据集上进行训练可以得到不同的模型。学习算法的性能是根据在这K个数据集上训练得到的K个模型的平均性能来衡量的,亦即:

其中的h(x)代表生成数据的真实函数,亦即t=h(x).
我们可以看到,给定学习算法在多个数据集上学到的模型的和真实函数h(x)之间的误差,是由偏置(Bias)和方差(Variance)两部分构成的。其中偏置描述的是学到的多个模型和真实的函数之间的平均误差,而方差描述的是学到的某个模型和多个模型的平均之间的平均误差(有点绕,PRML上的原话是variance measures the extent to which the solutions for individual data sets vary around their average)。
所以在进行学习时,就会存在偏置和方差之间的平衡。灵活的模型(次数比较高的多项式)会有比较低的偏置和比较高的方差,而比较严格的模型(比如一次线性回归)就会得到比较高的偏置和比较低的方差。下图形象的说明了以上两种情况:

用于训练的是100个数据集,每个数据集包含25个由h(x)=sin(2πx)[右图中的绿线]随机生成的点的。 参数λ控制模型的灵活性(复杂度),λ越大,模型越简单(严格),反之越复杂(灵活)。我们生成多个模型(左图中的红线),并区多个模型的平均值(右图中的红线)。我们可以看到,当λ较大时(最上面的两个图),平均模型比较简单(最上面的右图),不能很好的拟合真实函数h(x),亦即偏差较大,但是多个模型之间比较相似,差距不大,方差较小(最上面的左图)。当λ较小时(最下面的两个图),平均模型能够非常好的拟合真实函数h(x),亦即偏差较小(最下面的右图),但是多个模型之间差距很大,方差比较大(最下面的左图)。
使用Bagging方法可以有效地降低方差。Bagging是一种再抽样方法(resampling),对训练数据进行有放回的抽样K次,生成K份新的训练数据,在这K个新的训练数据上训练得到K个模型,然后使用K个模型的平均来作为新的模型。随机森林(Random Forest)是一种基于Bagging的强大的算法。
造成偏置和方差的原因除了学习方法的不同和参数的不同(比如λ)之外,数据集本身也会对其造成影响。如果训练数据集和新数据集的分布是不同的,会增大偏置。如果训练数据集过少,会增大方差。
偏置-方差分解是统计学派解释模型复杂度的观点,但是其实用价值不大(Bagging也许是一个例外吧~),因为偏置-方差分解是基于多个数据集的,而实际中只会有一个训练数据集,将这个数据集作为一个整体进行训练会比将其划分成多个固定大小的数据集进行训练再取平均的效果要好。
参考文献
[1]. Bishop. PRML(Pattern Recognization and Machine Learning). p11-16
[2]. Understanding the Bias-Variance Decomposition.
[3]. Andrew NG. CS229 Lecture Note1: Supervised Learning, Discrimitive Algorithms
偏置-方差分解(Bias-Variance Decomposition)的更多相关文章
- 偏置方差分解Bias-variance Decomposition
http://blog.csdn.net/pipisorry/article/details/50638749 偏置-方差分解(Bias-Variance Decomposition) 偏置-方差分解 ...
- 【笔记】偏差方差权衡 Bias Variance Trade off
偏差方差权衡 Bias Variance Trade off 什么叫偏差,什么叫方差 根据下图来说 偏差可以看作为左下角的图片,意思就是目标为红点,但是没有一个命中,所有的点都偏离了 方差可以看作为右 ...
- 训练/验证/测试集设置;偏差/方差;high bias/variance;正则化;为什么正则化可以减小过拟合
1. 训练.验证.测试集 对于一个需要解决的问题的样本数据,在建立模型的过程中,我们会将问题的data划分为以下几个部分: 训练集(train set):用训练集对算法或模型进行训练过程: 验证集(d ...
- 偏差和方差以及偏差方差权衡(Bias Variance Trade off)
当我们在机器学习领域进行模型训练时,出现的误差是如何分类的? 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是 ...
- Error=Bias+Variance
首先 Error = Bias + Variance Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输 ...
- 机器学习总结-bias–variance tradeoff
bias–variance tradeoff 通过机器学习,我们可以从历史数据学到一个\(f\),使得对新的数据\(x\),可以利用学到的\(f\)得到输出值\(f(x)\).设我们不知道的真实的\( ...
- 矩阵分解(rank decomposition)文章代码汇总
矩阵分解(rank decomposition)文章代码汇总 矩阵分解(rank decomposition) 本文收集了现有矩阵分解的几乎所有算法和应用,原文链接:https://sites.goo ...
- 2.9 Model Selection and the Bias–Variance Tradeoff
结论 模型复杂度↑Bias↓Variance↓ 例子 $y_i=f(x_i)+\epsilon_i,E(\epsilon_i)=0,Var(\epsilon_i)=\sigma^2$ 使用knn做预测 ...
- 机器学习:偏差方差权衡(Bias Variance Trade off)
一.什么是偏差和方差 偏差(Bias):结果偏离目标位置: 方差(Variance):数据的分布状态,数据分布越集中方差越低,越分散方差越高: 在机器学习中,实际要训练模型用来解决一个问题,问题本身可 ...
随机推荐
- Python Celery队列
Celery队列简介: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery. 使用 ...
- flex弹性布局学习
一.介绍 flex( flexible box:弹性布局盒模型),是2009年w3c提出的一种可以简洁.快速弹性布局的属性.主要思想是给予容器控制内部元素高度和宽度的能力.目前已得到以下浏览器支持: ...
- h5新增html标签语义
H5新增常用标签<body> <header>...</header> <nav>...</nav> <article> < ...
- 数据结构学习:KMP模式匹配算法
有关KMP的算法具体的实现网上有很多,不具体阐述.这里附上c的实现. 谈谈我自己的理解.KMP相较于朴素算法,其主要目的是为了使主串中的遍历参数i不回溯,而直接改变目标串中的遍历参数j. 比如说要是目 ...
- Mac Intellij Debug 模式
前言:本文的核心是记录debug的使用,与具体的操作系统无关. 1.什么是Debug Debug是程序的一种运行模式.用来发掘程序的走向,以及程序在运行过程中参数的变化. 2.Debug的作用 deb ...
- 转: 【Java并发编程】之十八:第五篇中volatile意外问题的正确分析解答(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17382679 在<Java并发编程学习笔记之五:volatile变量修饰符-意料之外 ...
- 团队作业7——Alpha冲刺之事后诸葛亮(宣告项目失败团队解散)
一.项目进度 1.4月5日,团队组建.满怀希望的能做好这个项目 2.4月12日,需求分析. 3.4月21日,需求改进,出现协作问题,没有做好. 4.做项目,学习新的知识,继续做项目,但是能力有限,团队 ...
- 201521123060 《Java程序设计》第5周学习总结
1.本周学习总结 2.书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 答:不能 ...
- 201521123006 《java程序设计》 第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自 ...
- 201521123093 java 第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...