机器学习之误差函数理解_什么是误差函数-程序员宅基地

技术标签: 机器学习  误差函数  深度学习  神经网络与机器学习  

1.基本理解

在机器学习中,我们期望的就是在给出的数据中训练出一个modle,也可以理解为一个函数function,当我们将我们的测试数据输入到这个modle的时候,就可以得到我们预想的结果。然而在我们训练数据的时候,我们就会遇到这个问题,通过不断地训练和测试我们发现,有时候越复杂的modle,在测试集的效果反而越差,可见并不是我们的modle越贴合训练数据越好,这就需要我们找到一个平衡点。
在这里插入图片描述
像这个图片所描述的(此模型结果是台湾大学李宏毅教授对多个模型多次测试得出的结果图),横坐标表示的是所设置的预测模型所携带的参数,纵坐标表示所有测试集在modle中预测的数值与真实数值之间的差距之和。再上图中我们可以清楚的看到当我们的参数选择在1-3的时候,我们发现总的错误值是逐渐减少的,但是当设置为4个参数的时候,错误率开始“雪崩式”增长。那么这些error到底是来自哪里呢?我们又该如何找出这些错误并作出改进呢?

2. 误差来源:bias && variance

我们对数据集的预测,理论上来说,这个预测有一个最佳的函数进行预测。但是这个最佳函数,我们只能通过在训练集中训练去得到一个函数来接近这个最佳函数。而这之间是存在误差的,这个误差主要来源于bias和variance。

2.1 原理依据

例如,我们要估算一个变量的平均值和方差。我们利用采样点估算出的平均值和方差和真实的平均值肯定是不一样的。但是如果我们再利用其样本平均值再求期望的话,这个值会接近真实平均值,这样我们的估计其实是无偏估计。
在这里插入图片描述
但这个每次的估计虽然会接近真实平均值,但始终又和真实平均值是有误差的。而这个误差就可以用方差variance来表示,variance的值和我们的样本数量密切相关。
在这里插入图片描述
那我们怎么去估算variance呢?同样的我们进行多次采样,然后多次计算方差,但这个时候多次采样计算发现,我们的估算出的方差并不会更接近真实方差。这个时候我们发现,我们这么去估算方差是有偏估计。这个偏差主要来源于下图的(N-1/N),如果样本数很大时,这个式子趋向于1,这样和真实值偏差也会减小。
在这里插入图片描述
如果发现我们得到的结果,和真实的值(图中靶点)都相差很大的话,那怎么去确定,我们的误差是从哪来的呢?这个时候,我们就可以利用前文提到的平均值估计的方法,来估计这个函数。假设,我们可以做很多次试验,每次试验可以得到一个函数,最后求期望。发现我们得到的期望和真实值都有很大的差距,那这说明我们一开始瞄准的时候就没瞄准,是存在偏差bias的。同时,我们也发现我们得出的期望值和之前的样本值之间的差异也很大,那么这说明我们的误差也有一部分是来自variance。所以,第四个图的情况中,误差是同时来源于bias和variance。
在这里插入图片描述
但是在上节课中,我们只训练得到了一个函数。那我们怎么去得到很多的函数,然后再求期望呢?

2.2 不同模型下的比较

因为李宏毅教授是基于宝可梦的升级作为例子讲解,所以此处我也继续沿用老师的说法:这里假设有很多个平行宇宙,每个平行宇宙都有宝可梦,然后去得到这个函数。
在这里插入图片描述
这里我们使用相同的模型,但得到不同的函数。这样就可以求函数的期望值了。
在这里插入图片描述
最后我们用了100个平行宇宙的数据,得到了100个不同的函数。把这100个函数都画出来,可以看下图。一次,三次和五次的模型,都有。
在这里插入图片描述
上面的图,我们可以得出结论:

  1. 一次的模型是比较集中的,因此这个模型的variance是比较小的
  2. 五次的模型是比较乱的,因此这个模型的variance是比较大的

为什么会有这个情景呢?因为越简单的模型被样本数的影响越小。举个特别极端的例子,如果这个函数是常数,那么样本怎么改变,函数都不会变,variance就是0。

2.3 bias

接下来我们看看bias。bias只要是看平均值与靶心的接近程度。那这里,针对我们刚刚的问题,我们不知道靶心(真实的最佳函数)在哪里,那怎么办呢?我们就先随便假设一个这样的最佳函数,然后从这个假设的最佳函数中,进行采样。用这个采样数据去训练不同的模型。这样我们就可以看出我们不同模型与真实模型之间的bias了,(感觉这个方法真的好机智!)
在这里插入图片描述
下图中黑色表示的是函数原来的样子,红色的是5000条functions函数,蓝色则是这五千条函数的均值,其结果如下所示:
在这里插入图片描述
上图中,靶心为黑色的直线,我们可以得出以下结论:

  1. 一次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差很多,因此bias比较大
  2. 三次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差小了一些,因此bias也小了一些
  3. 五次模型,可以发现我们得出的平均值(蓝线)和黑色的直线差最小,因此bias也是最小的

所以可以得出,越复杂的模型bias越小,但variance越大。越简单的模型bias越大,但variance越小,为什么会这样呢?
如果说我们的函数属于一个集合,如果是一个比较简单的模型,那么这个集合就会比较小,variance也就会比较小,但是同时这个集合也没有包含靶心,因此bias就会很大。相反的,复杂的模型属于的集合就会非常大,因此variance很大,但是这个集合包含了靶心,因此bias会比较小。

3.总结

哈哈,总结到这,相信大家对于这幅图片有了更加深入的理解了吧。
在这里插入图片描述

还有下边的这个图:
在这里插入图片描述
在这里我们看到还介绍了两个概念,欠拟合(Underfitting)过拟合(Overfitting)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38468077/article/details/105487496

智能推荐

「360企业安全云」上线,免费护航中小微企业数字化建设_360企业安全云 销售许可证-程序员宅基地

文章浏览阅读4.6k次。3月1日,360集团推出“360企业安全云”,面向中小微企业免费提供企业级数字安全与管理解决方案,全面助力中小微企业数字化建设。行业人士表示,该产品的推广对资金、技术和人力有限的中小微企业无疑是一大利好。据360企业安全云负责人马博凯介绍,企业安全云是专注于企业级数字化安全与管理的SaaS套装,在360安全大脑的全面赋能下,面向中小微企业免费提供终端、网络、软件、数据、资产及防勒索等全方位安全与管理服务。官网信息显示,360企业安全云具有“云原生SaaS架构”、“企业级安全防护”和“定制级管理功_360企业安全云 销售许可证

使用virtualBox搭建一个linux完整版_virtualbox 搭建图形化linux-程序员宅基地

文章浏览阅读563次。1.新建2.填写虚拟机名称 此处因为搭建hadoop集群所以名称为node033.内存设置建议1G4.选择现在创建虚拟硬盘5.选择VDI6.动态分配7.如图8.创建好了虚拟机。9.设置此虚拟机此处注意选择桥接网络 这样建立的linux可以相互访问。此处选择镜像。10设置完成,后启动虚拟机11.选择对的镜像,点击启动12选择第一个,会从镜像安装linux系统注意:virtualBox点击虚拟机后,鼠标无法出来,点击ctrl键即可13 测试硬盘,选择跳过1_virtualbox 搭建图形化linux

大数据职业发展_大数据职业规划-程序员宅基地

文章浏览阅读447次,点赞2次,收藏2次。大数据传送门基础大数据职业发展方向传送门一线城市工资_大数据职业规划

(完美)华为Mate10 ALP-AL00的usb调试模式在哪里开启的方法_华为alp-al00找不到usb调试开关-程序员宅基地

文章浏览阅读6.4k次。当我们使用Pc接通安卓手机的时候,如果手机没有开启USB调试模式,Pc则无办法成功检测到我们的手机,在一些情况下,我们使用的一些功能较好的软件比如以前我们使用的一个软件引号精灵,老版本就需要开启USB调试模式下使用,现当新版本不需要了,如果遇到这个情况我们需要找方法将手机的USB调试模式开启,以下资料我们讲解华为Mate10 ALP-AL00如何开启USB调试模式的流程。首先,在华为Mate10..._华为alp-al00找不到usb调试开关

web前端期末大作业--HTML+CSS+JS实现美女拼图游戏,2024年最新2024年华为Web前端面试真题解析-程序员宅基地

文章浏览阅读829次,点赞13次,收藏16次。/游戏配置//生成规格横4 纵4//每个元素的间隔margin: 1,//拖动时候块透明度},id: “”,float: “”,width: “”,left: “”,top: “”,//元素生成参数},sortObj: {rightlist: [], //正确的排序romdlist: [] //打乱后的排序},//尺寸自动获取//计算单个div的高宽//图片生成div//创建一个素组并排序打散a++) {sid = 0;

Java代码实现SOAP和REST接口工具类_使用java实现soap接口调用的工具类-程序员宅基地

文章浏览阅读1.1k次。SOAP(Simple Object Access Protocol)和REST(Representational State Transfer)是两种不同的Web服务通信协议,因此它们的接口工具类实现也有一些差异。需要注意的是,这些示例代码只实现了最基本的功能,实际使用时可能需要根据具体情况进行修改和扩展。同时还需要注意安全性和性能等方面的问题,例如SSL证书验证、连接池管理和结果缓存等。_使用java实现soap接口调用的工具类

随便推点

PAT基础编程题目集 7-31 字符串循环左移-程序员宅基地

文章浏览阅读71次。输入一个字符串和一个非负整数N,要求将字符串循环左移N次。

C语言:预处理_如何获取预编译的文件-程序员宅基地

这篇文章介绍了C语言中的预处理阶段,解释了编译器中的翻译环境和执行环境,以及如何通过预处理指令来避免重复引入头文件的问题。文章详细解释了预处理指令的作用。

Spring Boot入门(20):使用Mybatis-plus实现Spring Boot多数据源配置,轻松实现数据库读写分离!_spring boot 引入 mybatis plus 区分数据库嘛-程序员宅基地

文章浏览阅读1.8w次,点赞4次,收藏17次。如何实现多数据源的配置及项目使用,此文教会你,超级简单,开箱即用。_spring boot 引入 mybatis plus 区分数据库嘛

SAP message提示用法-程序员宅基地

文章浏览阅读2.1k次。SAP 的MESSAGE用法_sap message

结合邻域连接法的蚁群优化(NACO)求解TSP问题(Matlab代码实现)_可变邻域下降算法tsp matlab-程序员宅基地

文章浏览阅读245次。新算法高度关注所有可能影响解决方案的标准并将其应用于 TSP,并且通过将它们与蚁群的原始算法进行比较,特别是在减少计算和时间方面,它对解决方案进行了许多改进。因此,它在更少的时间和空间内给出解决方案,并在近似解决方案足以解决问题的情况下使用,特别是在达到确切解决方案非常困难的情况下。本文的第一个目的是强调每种TSP方法的要求,局限性和功能,以指导科学家和研究人员选择最适合其特定需求的方法。它对最有效和广泛使用的TSP方法进行了全面调查,通过研究旨在发现其优势和劣势的方法来澄清其主要差异。_可变邻域下降算法tsp matlab

精选了20个Python实战项目(附源码),拿走就用!零基础练手不二项目!_python项目-程序员宅基地

文章浏览阅读1.1w次,点赞9次,收藏49次。Python是目前最好的编程语言之一。由于其可读性和对初学者的友好性,已被广泛使用。_python项目

推荐文章

热门文章

相关标签