偏差-方差均衡(Bias-Variance Tradeoff)_weixin_34163553的博客-程序员宝宝

技术标签: 人工智能  数据结构与算法  

众所周知,对于线性回归,我们把目标方程式写成:

(其中,f(x)是自变量x和因变量y之间的关系方程式,表示由噪音造成的误差项,这个误差是无法消除的)

 

对y的估计写成:

 

就是对自变量和因变量之间的关系进行的估计。一般来说,我们无从得之自变量和因变量之间的真实关系f(x)。假设为了模拟的缘故,我们设置了它们之间的关系(这样我们就知道了它们之间的真实关系),但即便如此,由于有这个irreducible error,我们还是无法得之真正的y是多少。当然,这并没有关系。因为我们想要知道的就是自变量和因变量之间的一般性关系,不需要把噪音计算进去。

 

通常我们使用一组训练数据让某个算法来进行学习,然后得到一个模型,这个模型能使损失函数最小。但是我们想要知道的是模型的泛化能力,也就是说我们需要模型在所有数据上都表现良好,而不仅仅是训练数据。假设我们知道所有的数据,然后把这些数据分成n组,我们把这n组数据在模型上进行测试,得到n个不同的损失函数。如果这些损失函数的平均值最小,也就是说真实数值和估计数值之间的差异平方的期望值最小,那就说明这个模型最理想。

 

此期望值的公式如下:

 

其中:

σ2的方差

 

公式的推导过程如下(为简便起见,f(x)缩写成f,f(x)-hat缩写成f-hat):

 

翻译成人话就是:

总泛化误差(Total Generalization Error) = 偏差(Bias) + 方差(Variance) + 无法消除的误差项(Irreducible Error)

 

我们要使总误差最小,就要想办法减少偏差和方差,因为最后一项是无法减少的。

 

现在让我们来看一下偏差和方差到底是什么。

 

偏差(bias)是指由于错误的假设导致的误差,比如说我们假设只有一个自变量能影响因变量,但其实有三个;又比如我们假设自变量和因变量之间是线性关系,但其实是非线性关系。其描述的是期望估计值和真实规律之间的差异。

方差(variance)是指通过n组训练数据学习拟合出来的结果之间的差异。其描述的是估计值和平均估计值之间差异平方的期望。

 

如果看了以上内容还是有点懵,那么看下面这张经典的图便可以理解:

学习n次就相当于投靶n次。如果偏差小,同时方差又小,那就相当于每次都几乎正中靶心。这样的结果当然是最好的。如果偏差大,即使方差再小,那么投靶结果也还是离靶心有一段距离。反之,如果偏差小,但是方差很大,那么投靶结果将散布在靶心四周。

 

有人也许会说,只要偏差小,就算方差大一点也无所谓啊,只要把多次学习的结果平均一下,还是可以预测准确的;而如果偏差大的话,那就是连基本面都错了。但是这种认为减少偏差比减少方差更重要的想法是错误的,因为通常我们只有一组数据,而不是n组,我们的模型是依据我们已有的那组数据得出来的。因此,偏差和方差同样重要。

 

那么有没有可能让偏差小的同时又让方差小呢?这样我们不就能得到最好的结果了吗?但通过多次实验表明,事实不如人愿。

                                                 图1           

                       

                                                  图2

 

红线是真实规律,左图蓝线是多次学习的结果,右图蓝线是平均结果。

图1是使用简单模型多次拟合的结果,可以看到其多次拟合的结果之间相差不大,但是平均结果和真实规律相差较大(也就是方差小,偏差大);图2是使用较复杂的模型多次拟合的结果,可以看到其多次拟合的结果之间相差较大,但是平均结果和真实规律相差不大(也就是方差大,偏差小)。

 

总结来说就如下图所示,简单的模型偏差大,方差小;复杂的模型则相反,偏差小,方差大。随着模型越来越复杂,偏差逐渐减小,方差逐渐增大。我们发现无法在减少偏差的同时也减少方差。因此,我们需要找到一个折中的方案,即找到总误差最小的地方,这就叫做偏差-方差均衡(Bias-Variance Tradeoff)

 

偏差-方差均衡这一概念贯穿整个机器学习,你随处都能见到它的身影。因此理解这一概念非常重要。

 

那么怎样才知道自己的模型是偏差大还是方差大呢?

高偏差:训练集误差大,验证集误差和训练集误差差不多大

高方差:训练集误差小,验证集误差非常大

 

可以用学习曲线(Learning Curves)来查看模型是高偏差还是高方差。学习曲线会展示误差是如何随着训练集的大小的改变而发生变化的,我们会监控两个误差得分:一个针对训练集,另一个针对验证集。

 

下图深蓝曲线代表随训练样本数变化而变化的训练误差,浅蓝曲线则代表验证误差。

 

高偏差:

 

高方差:

 

理想曲线:

 

又是如何解决高偏差或高方差问题呢?

高偏差问题:1,使用更复杂的模型

                      2,加入更多的特征

高方差问题:1,获取更多的数据

                      2,减少特征

                      3,正则化

 

以下是流程图:

 

 

偏差-方差的分解公式只在基于均方误差的回归问题上可以进行推导,但通过实验表明,偏差-方差均衡无论是对回归问题还是分类问题都是适用的。

 

转载于:https://www.cnblogs.com/HuZihu/p/9692796.html

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

智能推荐

标准对比-UHAST/稳态湿热_月丶匈的博客-程序员宝宝

二、UHAST目前的标准:JEDEC JESD22-A118B.01-2021。MlL和GJB一般没有增压的加速应力试验,比较接近的是(稳态湿热)MIL-STD-202G METHOD N...

Python基础教程:新手朋友在python中常见的错误信息汇总_千锋python和唐唐的博客-程序员宝宝

Python基础教程:新手朋友在python中常见的错误信息汇总最近很多同学都在问很多错误是怎么回事,其实他们都是Python中非常基础的错误,并且错误也告诉你很清楚,只需要针对错误去解决就好了。那么我今天针对常见的错误进行一个总结,希望对大家有帮助。一般一个错误分为错误类型:具体原因。其中错误类型基本不变,具体原因会顺序万变,我们拿出常见的给大家作为一个参考,注明:具体原因中引号内的信息是为...

插件的安装_mpppt的博客-程序员宝宝

今天了解了一下插件的安装。一般来说我们装插件有两大类,一类是下载安装,一类是在线安装,下面我们用实例来分别介绍这两种插件的安装情况。首先是下载安装。我们以测试软件EclEmma为例,这是用来测试一个程序的执行覆盖率,具体作用我们不用深究,主要讲一下这个插件的安装。我们可以到各种软件网站找得到,下载下来是一个压缩包。之后我们解压,里面有两个文件夹,名称分别是:featuers和plugi...

linux 读写i2c设备,U-Boot下的I2C设备的读写_萨缪尔的博客-程序员宝宝

在嵌入式中,I2C设备的使用比较广泛,U-Boot集成了i2c的操作函数及命令。如下[email protected]> help i2ci2c speed [speed] - show or set I2C bus speedi2c dev [dev] - show or set current I2C busi2c md chip address[.0, .1, .2] [# of objects...

python matplotlib 绘制不等距数据_pyplot坐标轴不·等距_Reza.的博客-程序员宝宝

方法也很简单,将坐标轴改为等距,最后再加上去坐标轴名称 (原先的数值刻度)有时候坐标轴的数据是不等距的,画出来的图就很丑,而且也。

生成对抗网路(GAN):生成手写数字集MNIST_lideng4523的博客-程序员宝宝

import tensorflow as tfprint(tf.__version__)import globimport imageioimport matplotlib.pyplot as pltimport numpy as npimport osimport PILfrom tensorflow.keras import layersimport timefrom IPython import display(train_images, train_labels), (_,

随便推点

greenPlum Load实验_chizunzhou5985的博客-程序员宝宝

greenPlum数据库管理文档 Load实验 Mdw做为ETL抽取组件,抽取file文件所在的机器。 不成功 Gpfdist数据加载和数据unloading; 外部表分成两种类型,一种是可读外部表,用于将外部文件导入到外部表。另一种是可写外部表,用于将外部表写去到外部文件...

ffmpeg 实现多宫格效果,视频拼接合成_weixin_30263073的博客-程序员宝宝

通过FFmpeg建立画布,以多宫格方式展现一下为执行命令 -re -i 1.mp4 -re -i 2.mp4 -re -i 3.mp4 -re -i 4.mp4 -filter_complex "nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS,scale=320x240 [...

MySQL建立索引_万里归来少年心的博客-程序员宝宝

本文我们在表Student中,分别建立单值索引、唯一索引、复合索引。1.建表CREATE TABLE Student ( ID int(4) auto_increment, Name varchar(5), dept varchar(5), primary key(ID))ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHAR...

python3 llvmlite源码_Ubuntu 16.04 python3.5安装llvm、llvmlite、numba_wanchuanlong的博客-程序员宝宝

由于项目需要使用到python进行大规模的计算,所以使用numba进行加速。numba需要先安装llvmlite所以本篇文章记录安装llvm、llvmlite和numba的部分安装过程。过程主要参考http://www.linuxdiyf.com/linux/28426.html。但是由于环境和版本的不同,所以遇到了很多问题,予以记录。LLVM需要下载的文件如下,下载地址:http://llvm....

2021-02-15_如何下载macoscdr镜像百度网盘_RealGUO的博客-程序员宝宝

MAC虚拟机安装首先安装了mac 10.14,然后结果结束之后,因为版本低不能使用使用xcode(如下图所示),不得已又找了mac10.15的cdr格式的镜像重新安装。最下方有安装教程的链接,以及cdr镜像文件的下载地址。但是在看教程的时候,在安装进行到下图的步骤时,增加如下步骤打开终端后,输入下面的指令并回车,关闭SIP(出现successful什么什么的就说明成功了),并自动重启系统csrutil disable; reboot进行这一步的原因是:苹果系统有一个System Integr

ubuntu软件:无法从“extensions.gnome.org”下载更新_无法从“extension.gnome.org”下载更新_Fzc_PCL的博客-程序员宝宝

命令行依次运行一下命令sudo add-apt-repository ppa:gnome-shell-extensions/ppasudo apt-get updatesudo apt-get install gnome-shell-extensions如果运行第一句代码的时候报错:则运行下边这句代码设置公钥:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654...

推荐文章

热门文章

相关标签