机器学习实记(三)模型误差的来源

一.写在前面

  本节所讲的内容主要是讨论如何进一步提高通过机器学习获得fbest的准确度使其更进一步接近ftrue,为了解决这个问题我们必须先明确我们学习得到的fbest的误差来自于哪里。这里先提一下误差的主要两个来源分别是bias和variance,即偏差和方差,换句话说当你想进一步提高你模型的精确度的时候你可以分析你所设计模型的误差是主要来自bias还是variance,然后有针对的去改进来进一步的提高模型的精度。

二.bias和variance

  那么究竟什么是bias什么是variance?这里你可以想象一下你手持一把desert eagle来打靶,那么你能否命中靶心主要取决两点,第一你是否有瞄准靶心,第二你开枪之后的子弹是否受到风速、枪械、温度等因素的影响而导致无法做到瞄哪子弹就打到哪。上面的这个例子,靶心就是我们最终想要模拟得到的ftrue,而你每往靶子上开的一枪就是你通过机器学习获得的fbest,bias就是你持枪所瞄准的点和靶心的差距,variance就是你所开出的枪受到风速等因素的影响而产生的偏差。现在我们来看一张图2-1。

                          图2-1 bias和variance

  图中的蓝色点就是你通过机器学习得到的fbest,多次对不同的数据进行学习就可以得到多个这样的蓝色点,对这些蓝色点取平均值就是你次打靶所瞄准的点,该点与靶心的距离就是bias,而某一射击的蓝色点与本次射击所瞄准点间的距离就是variance。可以看到当bias和variance都很小时即图片的左上角的效果,蓝色的点均分布在靶心附近学习的效果很好。

  了解了什么时bias和variance之后我们就应该考虑一下各种模型的bias和variance是怎么样的,这里先讲结论,越为复杂的模型一般它的variance也会大一些,对应的越为简单的模型其bias也会更大一些。这里还是举上一节中的神奇宝贝的例子,我们在一次的模型下进行了100次的学习分别得到100个fbest同样的在五次的模型下也进行了100次学习分别得到100个fbest,对这些函数进行绘图得到图2-2

                          图2-2 各模型的variance

可以看出五次项的函数分布更为分散而一次项函数分布的相对更为集中,这种分散和集中就是variance大小的体现,为了进一步理解越为复杂的函数variance越大这个概念,可以做一个极端假设,设想一个最为简单的常数函数f=c,则这个函数的分布是不会分散的它的variance=0。看过variance的例子我们再来看一下bias的例子,例子如图2-3

                                图2-3 各模型的bias

图中红色的线是代表做的一次学习得到的fbest,蓝色的线是所有fbest的平均favg,黑色的线是ftrue,可以按看出五次的favg与ftrue更为接近,这里的接近程度就是对bias大小的描述。至于为什么复杂的函数的bias会更小,这里给出一种解释,我们知道更为复杂的model它所对应的函数池能表征的范围更大,也就更有可能能够包含到ftrue,所以函数池里的函数平均之后也就离ftrue更为接近,相对的简单的model它所对应的函数池中可能根本没有包含到ftrue,所以它再怎么平均距离ftrue都是远的。

三.过拟合和欠拟合

  以上讲述了误差来源bias和variance,现在从这两个的角度来理解一下过拟合和欠拟合这两种现象。简单来说当误差主要是来自于variance时会导致过拟合而当误差主要来自于bias时则会导致欠拟合,之前讲过过拟合的基本概念,这里再解释一下啊所谓的欠拟合underfitting,直观来说就是模型的表达能力不足而导致模型在训练集上的表现较差。现在来看一张图3-1

                        图3-1overfitting和underfitting

从图中可以看出当误差主要来自于variance时,达到一定程度后就会导致过拟合的现象,而当误差主要来自bias时,达到一定程度时就会导致欠拟合的现象,所以在选择模型时需要综合考虑二者选择合适的模型。

四、解决方案

4.1 解决误差主要来自于bias

  前面已经讲过产生这种误差的主要原因时因为模型太过简单,所以相应的要解决就必须重新设计你的模型,这主要有两种措施,第一种考虑更多的特征,即将更多的变量的引入你的模型中考虑更多可能影响到你模型的因素,第二种设计更复杂的模型,比方说原先使用的是一次的模型,现在考虑使用二次、三次或者更高次的模型来表达

4.2 解决误差主要来自于variance

  前面已经讲过产生这种误差的主要原因是模型表达的能力过强与所给出的数据量不符合,导致模型记住了所有的数据而不是学习到的,所以相应的措施从数据量的角度有两种,第一种给出更多的测试数据,让模型进行学习,这种方式十分有效,但其实这种方法在实际运用中并不一定能够做到,因为往往数据不是那么好获得的。第二种就是正则化regularization,这种方式在上一遍文章种有提到过,就是在损失函数后面添加了一个新的项,为什么这种方式可以降低variance的误差,直观的来说使用正则化让曲线变的更加平滑,也就是更具集中,不会因数据中的部分杂质而产生剧烈波动。具体效果如图4-1

                        图4-1 正则化

观察下方的三张图,第一张是没有使用正则化的效果图,第二、三张是使用了正则化的程度不同的效果图,可以看出很明显的曲线变得更为集中,有利于减小来自variance的误差,但要注意适度,一旦正则化过度将会大幅度提高bias的误差,如何理解呢,简单的说就是你弱化了模型的表达,可能导致模型对应的函数池的范围大幅度下降从而没有包含到ftrue,所以需要在这二者之中找到平衡。

五、写在最后

  本节的关键在于理解误差的来源,理解bias和variance的概念和对应的减小措施,去寻找bias和variance之间的平衡,这里补充一下视频中还提到了N-fold的交叉验证,有兴趣的同学可以自己去了解一下,我这里简单提一下,其实这个问题我在这个系列的第二节的写在最后提到过,就是为了解决模型在测试集上得到的准确率比在实际应用中模型准确率来的低的原因,主要就是因为训练集中的数据发生了泄露,而N-fold的交叉验证的方式可以解决这个问题,它将训练集中的数据进行划分,分为训练和验证,经过训练和验证集后的模型,再到测试集上进行测试其得到的结果就能较好的反应在实际应用中的效果。

原文地址:https://www.cnblogs.com/wxrqforever/p/11106866.html

时间: 2024-10-05 23:25:33

机器学习实记(三)模型误差的来源的相关文章

机器学习中的三种误差

在机器学习中误差有三种来源 1.Noise(噪声) 2.Bias(偏差) 3.Variance(方差) 数据固有存在noise 偏差的定义 以预测房屋价格为例 用不同训练集训练的模型不同 用不同训练集训练模型最后的到的平均模型与真实模型的输出之差 方差指的不同训练集训练的模型与均值期望输出模型的差

机器学习实战一(kNN)

机器学习实战一(kNN) 跟着老师做一个项目,关于行车记录仪识别前方车辆,并判断车距,不太好做.本来是用OpenCV,做着做着,突然发现需要补习一下机器学习的内容.<机器学习实战(machine learing in action)>这本书买了很久了,当时还是看了很多人推荐,不过到现在才想起翻出来看.第二章kNN的例子刚跟着做完,书里讲的很清楚,代码条理分明,只不过我是用Python3实现的.具体的过程不再赘述,只是把自己的理解放在这里. 先来看看书里第一章的部分. 机器学习就是把无序的数据转

python机器学习实战(三)

python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7277205.html  前言 这篇博客是关于机器学习中基于概率论的分类方法--朴素贝叶斯,内容包括朴素贝叶斯分类器,垃圾邮件的分类,解析RSS源数据以及用朴素贝叶斯来分析不同地区的态度. 操作系统:ubuntu14.04 运行环境:anaconda-python2.7-jupyter notebook 参考书籍:机器学习实战和源码,机器学习(周志华) not

lanczos算法及C++实现(三)实对称三对角阵特征值分解的分治算法

本文属作者原创,转载请注明出处 http://www.cnblogs.com/qxred/p/dcalgorithm.html 本系列目录: lanczos算法及C++实现(一)框架及简单实现 lanczos算法及C++实现(二)实对称阵奇异值分解的QR算法 lanczos算法及C++实现(三)实对称三对角阵特征值分解的分治算法 0. 参考文献 https://en.wikipedia.org/wiki/Divide-and-conquer_eigenvalue_algorithm A. Mel

《机器学习》第三章 决策树学习 笔记加总结

<机器学习>第三章 决策树学习 决策树学习方法搜索一个完整表示的假设空间,从而避免了受限假设空间的不足.决策树学习的归纳偏置是优越选择较小的树. 3.1.简介 决策树学习是一种逼近离散值目标函数的方法,在这种方法中学习到的函数被表示为一棵决策树. 决策树(Decision Tree)是一种简单但是广泛使用的分类器.通过训练数据构建决策树,可以高效的对未知的数据进行分类. 决策数有两大优点: 1)决策树模型可以读性好,具有描述性,有助于人工分析: 2)效率高,决策树只需要一次构建,反复使用,每一

一次基于ssh的sftp服务器被攻击实记

一次基于ssh的sftp服务器被攻击实记 前段时间12月分左右,公司需要搭建了台sftp服务器,当时想只是传下文件,何况我这还是基于SSH的SSL加密的sftp,也没有太再次安全问题,结果这个月每天晚上有人在暴力攻击,安装设置我以前的博文中有写到,这里记录下被攻击,以及防攻击的实录.(centos6.X) 查看ssh登录日志 分析日志 防攻击措施 自己写了个脚本 查看日志 ssh 登录日志一般在 /var/log/secure,有些linux版本可能再/var/log/messages,我们只要

Sed 实记 &middot; laoless‘s Blog

sed编辑命令 p 打印匹配行 = 打印文件行号 a 在定位行之后追加文本 i 在定位行之前插入文本 d 删除定位行 c 用新文本替换定位文本 s 使用替换模式替换相应模式 r 从另一个文件读取文本 w 将文本写入到一个文件 y 变换字符,类似替换 q 第一个模式匹配完成后退出 l 显示与八进制ASCII码等价的控制字符 {} 在定位行执行的命令组 n 读取下一个输入行,用下一个命令处理新的行 h 将模式缓冲区的文本复制到保持缓冲区 H 将模式缓冲区的文本追加到保持缓冲区 x 互换模式缓冲区和保

记中兴软件园一个月实训(三)

前两天只是简单复习了下C语言的基础知识,到第三天就采用项目驱动的方式,带着我们一个班的学生做项目----Popstar游戏 其实还是很倾向于项目驱动的方式来学习的,老师在上边一边讲一边敲代码,我们就只要听,和抄下投影仪上的代码.带着我们走过一遍流程以后,再让我们自己写一个小游戏,老师只提供技术难点帮助. 话不多说,给各位君看看记录的东西. 首先做了一个控制台下的Popstar,用于测试算法的正确性,由于Popstar涉及到选择附近四个方向的同颜色的星星,因此要用到扩展查找算法.因为是学习,老师展

DIV+CSS实操三:经管系网页内容模块添加标题栏和版权信息模块

我们继续接着DIV+CSS实操一:经管系网页总体模块布局和DIV+CSS实操二:经管系网页添加导航栏和友情链接 栏这个系列的博文做经管系网页.这一次我们所要做的就是给内容版块添加标题栏,还有就是给制作信息版块添加链 接.这一篇博文基本就是做这些了,记着和前两篇博文比较效果. 还是老套路,写HTML代码时,一定要注意闭合标签,一定要注意代码的整齐承担和完整性,先来HTML代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional