偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。

方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)

我们这里以线性回归为例进行介绍

**线性回归是一种机器学习算法,它主要用来预测定量目标。该算法根据线性方式建模的自变量来拟合包含预测数据点的直线或平面(或超平面)。**首先,让我们把这看作是最佳拟合线(为了更好地理解)。通常情况下,训练集中的数据点并不是全部都在最佳拟合线上,这是非常有意义的,因为任何数据都不是完美的。这也就是为什么我们首先要做预测,而不是随便画一条线的原因。

理解偏差

利用线性回归算法得到的线不能为了包含所有的训练集数据点就过于弯曲,因此有时无法捕捉到准确的关系。这叫做偏差。在数学上,在线性回归方程中得到的截距是偏差。

我为什么这么说?

让我解释一下:这是一个随机线性回归方程:

y = Intercept + Slope1*x1 + Slope2*x2

目标(y)在数据集中会有一些值,利用上面的公式可以计算出目标(y)的预测值。如果“截距”本身非常高并且很接近预测的y值,那么这就意味着方程另外两部分——自变量(x1和x2)的变化导致y的变化会很小。这意味着x1和x2所产生的方差值会很小,最终这将会导致建立一个欠拟合模型。欠拟合模型具有较低的R-squared(由自变量引起的目标方差量)。

欠拟合也可以通过首先考虑如何捕捉最佳拟合线/平面来理解。最佳拟合直线/平面捕捉目标和自变量之间的关系。如果这种关系被捕捉到一个非常高的范围,它会导致低偏差,反之亦然。

既然我们了解了什么是偏差,以及高偏差是如何导致欠拟合模型的,那么对于一个健壮的模型,我们需要消除这种欠拟合。

在这样一个场景中,我们创建了一条通过所有数据点的曲线,并且可以显示自变量和因变量之间的现有关系,那么模型中就不会存在偏差。

理解方差

对训练数据过度拟合的模型将导致一种新的现象,称为“方差”。现在来考虑几个模型:

模型1:高偏差(无法正确捕捉关系)

模型2:低偏差(在很大程度上捕捉关系)

验证模型时的误差测量:

Error = Actual Values Predicted Values

在计算训练数据(图中还没有测试数据)的误差时,我们观察到:

模型1:在训练数据上对模型进行验证,结果表明误差较大

模型2:在训练数据上对模型进行验证,结果表明误差较小

现在,让我们引入训练数据,来理解方差。

如果模型在训练数据是过拟合的,那么该模型“理解”和“认识”训练数据的程度就会非常高,以至于它可能不利于对测试数据进行测试。因此当将测试数据用作该模型的输入时,它将无法捕捉到一种关系。从更广泛的角度来看,这意味着训练数据和测试数据之间的拟合有很大的差异(因为在训练数据上展示了完美的验证,而在测试数据却无法捕捉关系)。这种拟合差异被称为“方差”,这种现象产生的原因是模型只能理解训练数据,它对任何新的输入数据不能很好地进行预测。

在测试数据上验证上述模型时,我们注意到:

模型1:这里也没有正确地捕捉到关系,但是在训练数据和测试数据之间没有巨大的理解差距,所以方差很低

模型2:训练数据和试验数据之间存在巨大的理解差距,因此方差很大

偏差和方差之间的权衡

现在我们知道偏差和方差都会给我们的预测模型带来问题。那么我们该如何着手解决这个问题呢?

在我们继续之前,有几个术语需要理解:

过度拟合:低偏差和高可变性-模型非常适合训练数据,但是不适合测试数据,因为它只能很好地理解训练数据

欠拟合:高偏差和低可变性-模型在使用训练数据时无法捕捉关系,但由于它无论如何都没有捕捉到关系,因此训练数据和测试数据之间的理解差距不大,因此方差较小

回到解决方案,我们可以做以下工作,尝试在偏差和方差之间建立一种平衡:

1. 交叉验证

通常,一个模型是建立在训练数据上,并在相同的数据上进行测试。但还有一件事是人们更喜欢去做的,那就是在训练数据的一部分数据上测试模型,这部分数据称为验证数据。

那么,什么是交叉验证?

如前所述,模型验证是对部分训练数据进行的。因此,如果我们每次迭代都从训练数据中选择一组新的数据点来进行验证,并对从这些数据集获得的结果求平均值,那么我们就是在进行交叉验证。这是一种优化方法,主要用来了解模型在训练数据上的行为,同时它也是一种了解是否存在过拟合的方法。

交叉验证的类型:

K- fold CV:这里的K表示我们需要将我们的训练数据集分解成的集合的个数,然后用这K个集合进行模型验证,对这K个集合得到的结果取平均值,从而得到一个最终的结果,这可能会避免过拟合。

Leave-One-Out CV:Leave-One-Out CV的工作原理类似于K-Fold CV,但它将流程提升到了一个新的高度,因为它使用训练数据中的每一个数据点来计算交叉验证结果。这显然很耗时,但绝对有助于避免过度拟合。

前向链接:在处理时间序列数据时,K-Fold-CV和Leave-One-Out-CV会产生问题,因为某些年份的数据很可能会有其他年份没有的模式,因此使用随机数据集进行交叉验证是没有意义的。事实上,现有的趋势有可能被忽视,这并不是我们想要的。因此,在这种情况下,通常使用前向链接方法,其中我们形成的每个折叠(用于交叉验证)包含一个训练集组,通过将连续一年的数据与上一个训练集组相加并在测试集上进行验证(该测试集只包含训练组中使用的连续年份到最近一年的数据)。

2. 正则化

正则化是一种技术,它通过附加在模型自变量上的β惩罚系数来减少偏差和方差。

总结

没有完美的模型。必须用积极的方式利用模型不完美的地方,才能使它变得完美。一旦你能够识别出你的模型中存在的偏差或可变性,你就可以做很多事情来改变它。您也可以尝试特征选择和特征转换。您可以尝试删除一些过拟合变量。基于当时的可能性,可以做出决定,如果有可能的话,这个模型肯定会得到改进。

感谢您的阅读!学习快乐!

支持我的写作

机器学习入门:偏差和方差相关推荐

  1. 吴恩达机器学习:偏差与方差、欠拟合与过拟合

    在吴恩达机器学习课程的第86课时中,讲解了偏差和方差与欠拟合和过拟合的关系. 1.偏差与方差的概念 先看下网上关于偏差与方差的例子. 该例子可以理解为射击打靶. 偏差指的是多次射击的平均环数与环心的偏 ...

  2. 如何平衡机器学习中偏差与方差

    本文介绍偏差与方差的概念和K折交叉验证,并通过示例展示其实现过程. 方差与偏差 为了评估模型在数据集上的表现,我们需要衡量模型预测与观测数据的匹配程度.对于回归模型,通常使用的指标是MSE(mean ...

  3. 机器学习笔记——偏差vs方差

    (参考菜菜的sklearn课程) 一个集成模型在一个数据集上的泛化误差E(f;D),由方差(var).偏差(bais)和噪声共同决定: 对于上图: 红色点集成算法中的每个基评估器产生的预测值: 红色虚 ...

  4. 入门机器学习(十二)--课后作业解析-偏差与方差(Python 实现)

    在本次作业中,我们要完成的是预测水库水位的变化预测大坝流出的水量.已知特征为水库的水位,要预测的y是大坝流出的水量. 编程作业 5 - 偏差和方差 这次练习我们将会看到如何使用课上的方法改进机器学习算 ...

  5. 【机器学习入门到精通系列】应用机器学习的建议(方差和偏差)

    文章目录 1 评估假设 2 引入验证集 3 偏差和方差 4 正则化的偏差和方差 5 学习曲线 6 Debugging a learning algorithm 1 评估假设 2 引入验证集

  6. 机器学习中的偏差和方差是什么?

    机器学习中的偏差和方差是什么? 机器学习全部是关于给定输入数据(X)和给定输出数据(Y),然后去寻找一个最佳映射函数(F),这个映射函数通常也被叫做目标函数. 任何机器学习算法的预测误差可以分解为三部 ...

  7. 4.3 偏差与方差-机器学习笔记-斯坦福吴恩达教授

    偏差与方差 在机器学习中,偏差(bias) 反映了模型无法描述数据规律,而 方差(variance) 反映了模型对训练集过度敏感,而丢失了数据规律,高偏差和高方差都会造成新数据到来时,模型给出错误的预 ...

  8. 转载:理解机器学习中的偏差与方差

    学习算法的预测误差, 或者说泛化误差(generalization error)可以分解为三个部分: 偏差(bias), 方差(variance) 和噪声(noise). 在估计学习算法性能的过程中, ...

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

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

最新文章

  1. 小程序 a标签_微信内循环生态:朋友圈标签引流视频号、小程序、搜一搜
  2. Yii2多模型与事务的用法
  3. STL中map/vector的删除元素操作
  4. confluence的一次管理员密码
  5. 头条搜索“美丽中国”,你为哪处风景胜地打过Call?
  6. 【java】各种对文件,读写的方法及小例子
  7. windows oracle .msb not found,oracle安装, Message file sp1lang.msb not found
  8. bzoj 5016: [Snoi2017]一个简单的询问(莫队)
  9. C#中级-Windows Service程序安装注意事项
  10. Vue子组件调用父组件的方法
  11. 在网页中实现录音功能
  12. 使用PHP 的 curl 爬取 青果教务系统 课表
  13. 微信小程序的APPID问题
  14. Web爬虫|入门教程之爬虫简介
  15. 个人总结感想系列 - 2013年工作和生活总结
  16. 向Linux增加一个系统调用或内核模块
  17. 什么是门禁系统?门禁设备有哪些?
  18. 视频知识点(17)- flv.js 实现播放本地视频文件的技巧
  19. 破产清算对法定代表人的影响是什么
  20. 【Redis核心原理和应用实践】应用 2:缓兵之计 —— 延时队列

热门文章

  1. Original error: pkg: /data/local/tmp/appium_cache/8d4156e508daae39c3f4815552e22e311432ff1f.apk
  2. 2010年4月12日星期一
  3. 丝绸之路——NFT 系列来袭!
  4. 地图兴趣点搜索三(ES相关性得分参数调整)
  5. 最小的可重现示例Minimal reproducible example
  6. 婚恋交友源码开发,实现图片的滑动切换
  7. Ubuntu 16.04输出中文显示的是乱码,修改支持语系的环境变量
  8. 20171029 勇于挑战自己
  9. VLC播放画质延迟改善方法
  10. 《软件定义车辆的风险评估和开发成本优化》 论文学习笔记