文章目录

  • 【机器学习】偏差-方差分解

【机器学习】偏差-方差分解

这差不多是对课堂阅读材料的翻译,方便自己加深理解,也是督促自己好好学习。因为是自己翻译的,所以存在学术名词翻译不准确的情况,希望大家看见之后能够指出。下面是正文部分:

在本章节之前对线性回归模型的讨论中,我们一直假设基函数的形式和数量是固定的。但正如第一章中提到的那样,当训练数据集规模有限而模型又比较复杂的时候,极大似然法或最小二乘法会导致严重的过拟合。然而我们又不能简单地通过限制基函数的数量来避免过拟合,因为这样的话就会削弱模型的灵活性,从而错过数据中本可以获得的一些有用信息。尽管引入正则化可以对多参数模型的过拟合问题进行管控。但这又带来了一个新的问题,即如何确定正则化参数λ\lambdaλ。寻求使正则化误差方程最小的权重ω\omegaω和λ\lambdaλ显然是不可行的,这样只能得到一个非正则化的解,此时λ=0\lambda=0λ=0

正如我们在前面章节看见的那样,过拟合是极大似然法的一个不好的特性,但当我们在贝叶斯设定中对参数进行精化后,过拟合现象并未出现。在本章中,我们将在一定程度上考虑模型复杂度的贝叶斯观点。在此之前,我们先了解一下模型复杂度的频率主义观点,即bias-variance权衡。

在前面我们针对回归问题对决策理论进行了讨论。我们讨论了各种不同的损失函数,并且知道一旦给定条件分布p(t∣x)p(t|x)p(t∣x),所有损失函数都能得到一个与之相关的最优预测。其中平方损失函数(square loss function) 是最受欢迎的,因为它的最优预测是由条件期望给出的,用h(x)h(x)h(x)l来表示:

在这里,非常有必要比较一下决策理论中的平方损失函数和模型参数的最大似然法中产生的平方和误差函数(sum-of squares error function)。我们将采用比最小二乘更复杂一些的技术,例如正则化或完全贝叶斯方法来确定条件分布p(t∣x)p(t|x)p(t∣x)。这些方法都能和平方损失函数结合起来进行预测。

在前面章节已经介绍过,期望平方损失可以写成如下形式:

式子的第二部分由数据的固有噪声引起,表示期望损失的最小值。第一部分取决于我们对函数y(x)y(x)y(x)的选择。我们要找到一个使这部分值最小的一个解,因为这部分是非负的,最小只能为0。如果我们有无限的数据和算力,原则上说,我们可以找到任何精确度的回归方程h(x)h(x)h(x)。实际上我们只有一个数据集DDD, 里面只有有限的NNN个数据点,因此我们无法准确得到回归方程h(x)h(x)h(x)。

如果我们用一个参数方程y(x,w)y(x,w)y(x,w)对h(x)h(x)h(x)进行建模,在贝叶斯观点中,可以用www上的后验分布来表述模型的不确定性。然而,频率主义的方法为基于数据集DDD对www进行点估计。并通过一个思维实验来解释其中的不确定性:假设我们有大量规模为NNN的数据集,都独立于p(t,x)p(t,x)p(t,x)。对于任意一个数据集DDD,我们可以运行我们的学习算法,并且得到一个预测函数h(x)h(x)h(x)。不同的数据集将会给出不同的预测函数的平方损失值。最终我们根据平均值来评判这个学习算法的性能。

考虑上式第一部分的被积函数:

因为受到DDD的影响,所以我们取总体上各数据集的均值。如果我们加上和减去ED[y(x,D)]\mathbb{E}_{D}[y(x,D)]ED​[y(x,D)],然后展开,就会得到:

现在我们来求这个表达式关于DDD的期望,并注意,最后一项消失了:

上式的第一部分就是偏差,表示所有数据集的平均预测值与期待的回归函数之间的差异度。第二部分是方差,用来描述独立数据集在均值周围的波动程度,因此也能反映y(x,D)y(x,D)y(x,D)对某个特定数据集的敏感程度。

下面来讲一个简单的例子。考虑一个单输入xxx,然后把上面的展开式带入到最开始E[L]\mathbb{E}[L]E[L]的表达式,得到下列期望平方损失的表达式:

其中:

我们的目标是使期望损失E[L]\mathbb{E}[L]E[L]最小。我们会发现,这里存在偏差和方差的权衡:柔性模型低偏差高方差,而相对刚性的模型高地方差高偏差。能在二者之间达到一个平衡的模型是最好的预测模型。这里我们产生L=100L=100L=100 个数据集,每个数据集的N=25N=25N=25,均独立于正弦曲线h(x)=sin(2πx)h(x)=sin(2\pi x)h(x)=sin(2πx)。对每个数据集D(l)D^{(l)}D(l),我们通过最小化E[L]\mathbb{E}[L]E[L]来拟合一个带有24个高斯基函数的模型,并得到相应的预测函数y(l)(x)y^{(l)}(x)y(l)(x),如下图所示:

左列显示不同lnλln\lambdalnλ下的拟合结果(为了更清晰,只显示了20个集合的拟合结果)。右栏显示了100个拟合值的平均值(红色),以及生成数据集的正弦函数(绿色)。很明显,第一排的拟合结果的方差小而偏差大,最后一排的拟合结果的偏差小而方差大。注意,对于参数数量M = 25的复杂模型,多个解取平均的结果对回归函数的拟合非常好,这表明取平均值可能是一个不错的过程。 实际上,多重解的加权平均是贝叶斯方法的核心。虽然平均是关于参数的后验分布的,而不是关于多个数据集的。

下面对这个例子给出定量分析。平均预测函数如下:

偏差平方和方差如下:

根据上面的式子,给出各个变量受lnλln\lambdalnλ影响的曲线画出下图:

从图上也可得到和前面肉眼判断一样的结果。

尽管偏差方差分解从一个频率的角度,对模型复杂度问题给出了有意思的解读,其实践意义比较有限。因为偏差方差分解是基于对许多数据集总体求平均的结果上的,然而实际中,我们一般只有一个可观数据集。假如我们有大量具有给定大小的独立训练集,我们最好将它们组合成单个大型训练集,这当然会降低对给定模型复杂性的过拟合程度。

鉴于这些局限性,我们将在下一节讨论线性基函数模型的贝叶斯处理,它不仅为过度拟合问题提供了强有力的见解,而且还提供了解决模型复杂性问题的实用技术。

【机器学习】偏差-方差分解相关推荐

  1. 机器学习之过拟合与欠拟合以及偏差-方差分解

    1.过拟合 所谓过拟合就是:把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致训练出的模型其泛化能力降低,这就是过拟合. 如何解决? 1)Early stopping Earl ...

  2. 【机器学习-西瓜书】二、偏差-方差分解;泛化误差

    2.5偏差与方差 关键词:偏差-方差分解:泛化误差 . 偏差-方差分解是解释算法泛化性能的一种重要工具.偏差-方差分解试图对学习算法的期望泛化错误率进行拆解. 泛化误差可分解为:偏差,方差与噪声之和. ...

  3. 机器学习偏差方差_机器学习101 —偏差方差难题

    机器学习偏差方差 Determining the performance of our model is one of the most crucial steps in the machine le ...

  4. 偏差-方差分解,学习和验证曲线评估模型

    偏差-方差分解 参考链接:https://www.zhihu.com/question/20448464 https://blog.csdn.net/simple_the_best/article/d ...

  5. 偏差-方差分解 Bias-Variance Decomposition(转载)

    转载自http://www.cnblogs.com/jmp0xf/archive/2013/05/14/Bias-Variance_Decomposition.html 完全退化了,不会分解,看到别人 ...

  6. 机器学习之方差与偏差(bias-variance)

    目录 问题背景 原理 偏差.方差与噪声的含义 偏差与方差的冲突 What to do with large bias? What to do with large variance? 问题背景 我们评 ...

  7. 深入理解机器学习——偏差(Bias)与方差(Variance)

    分类目录:<深入理解机器学习>总目录 偏差(Bias)与方差(Variance)是解释学习算法泛化性能的一种重要工具.偏差方差分解试图对学习算法的期望泛化错误率进行拆解,我们知道,算法在不 ...

  8. python 方差分解_干货 :教你用Python来计算偏差-方差权衡

    原标题:干货 :教你用Python来计算偏差-方差权衡 作者:Jason Brownlee 翻译:吴振东 本文约3800字,建议阅读8分钟. 本文为你讲解模型偏差.方差和偏差-方差权衡的定义及联系,并 ...

  9. 独家 | 教你用Python来计算偏差-方差权衡

    作者:Jason Brownlee 翻译:吴振东 校对:车前子 本文约3800字,建议阅读8分钟. 本文为你讲解模型偏差.方差和偏差-方差权衡的定义及联系,并教你用Python来计算. 衡量一个机器学 ...

  10. 你真的理解机器学习中偏差 - 方差之间的权衡吗?

    作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 简书地址:http://www.jianshu.com/p/f143... 我认为对偏差 - 方差之间的 ...

最新文章

  1. [喵咪的Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定
  2. PHP和java比较
  3. ysoserial java 反序列化 Groovy1
  4. 洛谷 P1013 进制位
  5. 设计模式学习笔记(二十二:备忘录模式)
  6. 推荐 7 个牛哄哄 Spring Cloud 实战项目
  7. Winform中实现点击按钮弹窗输入密码验证通过后执行相应逻辑
  8. 温州大学《机器学习》课程代码(三)逻辑回归
  9. 操作系统原理:死锁的特征,预防,避免,恢复
  10. 制作系统盘,重装新系统。
  11. 遥感图像场景分类常用数据集
  12. Java EE 6 VS Spring 3:Java EE杀死了Spring? 没门!
  13. hdoj--5620--KK's Steel(斐波那契数)
  14. sqlserver 数据多行以逗号分隔成一行
  15. lbochs模拟器最新版_Bochs模拟器
  16. 91卫图助手给我的帮助
  17. 全屏滚动插件之 fullpage.js
  18. 浏览器对HTML5中track标签中src属性路径vtt文件错误,Unsafe attempt to load URL vtt
  19. java 登录界面加验证码_java 做登陆窗口,带有用户名和密码输入框和验证码。求修改...
  20. 片上偏差模式OCV,AOCV,SOCV

热门文章

  1. Cortex-M的M0,M+,M3,M4,M7几种内核的简单区别
  2. 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)
  3. lingo入门教程之二 --- 集合运用
  4. python 爬虫--利用百度图片处理OCR识图API进行验证码识别,并通过python、requests进行网站信息爬取(二)实战
  5. nali for win golang版, 显示ip 的小工具
  6. 如何使用Visual Studio调试Windows Vista侧栏小工具
  7. 关于数据分析岗位的工作思考
  8. 计算机cpu架构是什么意思,「电脑小白必备」一分钟快速了解CPU
  9. PyTorch学习笔记(10)——上采样和PixelShuffle
  10. 微信状态栏隐藏 HTML,微信里几个实用的隐藏小技巧!