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

(其中,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)

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

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

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

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

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

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

2,加入更多的特征

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

2,减少特征

3,正则化

以下是流程图:

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

偏差-方差均衡(Bias-Variance Tradeoff)的更多相关文章

  1. 【笔记】偏差方差权衡 Bias Variance Trade off

    偏差方差权衡 Bias Variance Trade off 什么叫偏差,什么叫方差 根据下图来说 偏差可以看作为左下角的图片,意思就是目标为红点,但是没有一个命中,所有的点都偏离了 方差可以看作为右 ...

  2. 训练/验证/测试集设置;偏差/方差;high bias/variance;正则化;为什么正则化可以减小过拟合

    1. 训练.验证.测试集 对于一个需要解决的问题的样本数据,在建立模型的过程中,我们会将问题的data划分为以下几个部分: 训练集(train set):用训练集对算法或模型进行训练过程: 验证集(d ...

  3. 偏差和方差以及偏差方差权衡(Bias Variance Trade off)

    当我们在机器学习领域进行模型训练时,出现的误差是如何分类的? 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是 ...

  4. 机器学习总结-bias–variance tradeoff

    bias–variance tradeoff 通过机器学习,我们可以从历史数据学到一个\(f\),使得对新的数据\(x\),可以利用学到的\(f\)得到输出值\(f(x)\).设我们不知道的真实的\( ...

  5. Bias/variance tradeoff

    线性回归中有欠拟合与过拟合,例如下图: 则会形成欠拟合, 则会形成过拟合. 尽管五次多项式会精确的预测训练集中的样本点,但在预测训练集中没有的数据,则不能很好的预测,也就是说有较大的泛化误差,上面的右 ...

  6. 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做预测 ...

  7. 机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)

    摘要: 1.常见问题 1.1 什么是偏差与方差? 1.2 为什么会产生过拟合,有哪些方法可以预防或克服过拟合? 2.模型选择例子 3.特征选择例子 4.特征工程与数据预处理例子 内容: 1.常见问题 ...

  8. [转]理解 Bias 与 Variance 之间的权衡----------bias variance tradeoff

    有监督学习中,预测误差的来源主要有两部分,分别为 bias 与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助于 ...

  9. On the Bias/Variance tradeoff in Machine Learning

    参考:https://codesachin.wordpress.com/2015/08/05/on-the-biasvariance-tradeoff-in-machine-learning/ 之前一 ...

随机推荐

  1. python -使用del语句删除对象引用

    使用del语句删除一些对象引用. 注意不是把内存地址删了,你只是删除了引用,它就变为了一个可回收的对象,内存会不定期回收. del语句的语法是: del var1[,var2[,var3[....,v ...

  2. 禁用事件event默认行为

    在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页. js中return false作用一般是 ...

  3. Dotnetcore 开发速记

    1.System.InvalidOperationException:"Internal connection fatal error." 全球固定模式,坑爹 https://gi ...

  4. java 线程方法 ---- sleep()

    class MyThread implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++){ Sy ...

  5. Python笔记-IO编程

    IO在计算机中是指input和output(数据输入与输出),涉及到数据交换(磁盘.网络)的地方就需要IO接口. 输入流input stream是指数据从外面(磁盘.网络服务器)流入内存:输出流out ...

  6. js坚持不懈之17:onmousedown、onmouseup 以及 onclick 事件

    <!DOCTYPE html> <html> <body> <div onmouseover = "mOver(this)" onmous ...

  7. js 学习之路9:运算符

    1. 算数运算符 运算符 描述 例子 结果 + 加 x=y+2 x=7 - 减 x=y-2 x=3 * 乘 x=y*2 x=10 / 除 x=y/2 x=2.5 % 求余数 (保留整数) x=y%2 ...

  8. background问题

    1.如果是小图的背景图 background: url("@{images-dir}/homepage/our_pro_2x.png") no-repeat 0 0; backgr ...

  9. jQuery中$.each()方法的使用

    $.each()是对数组,json和dom结构等的遍历,说一下他的使用方法吧. 1.遍历一维数组 var arr1=['aa','bb','cc','dd']; $.each(arr1,functio ...

  10. 利用 keras_proprecessing.image 扩增自己的遥感数据(多波段)

    1.keras 自带的 keras_proprecessing.image 只支持三种模式图片(color_mode in ['grey', 'RGB', 'RGBA'])的随机扩增. 2.遥感数据除 ...