机器学习:偏差方差权衡(Bias Variance Trade off)
一、什么是偏差和方差
- 偏差(Bias):结果偏离目标位置;
- 方差(Variance):数据的分布状态,数据分布越集中方差越低,越分散方差越高;
- 在机器学习中,实际要训练模型用来解决一个问题,问题本身可以理解为靶心,而模型就是子弹,则子弹呈现在靶子上弹孔位置就可能出现偏差和方差的情况,也就是说训练出的模型可能犯偏差和方差两种错误;
二、 模型误差
- 模型误差 = 偏差(Bias) + 方差(Variance) + 不可避免的误差
1)不可避免的误差
- 无能为力的、客观存在的、由于各种各样的原因导致的误差,是无论怎么改进算法和模型都无法避免的;如采集的数据本身含有的噪音。
- 偏差和方差是和算法及模型的相关问题。
2)产生偏差和方差的原因
- 产生偏差的原因
- 可能对问题本身的假设不正确;如非线性数据或问题使用线性回归算法。
- 欠拟合(underfitting)会产生偏差;
- 如果训练数据采用的特征跟问题的相关性不强或者根本没有相关性,就会使模型的预测结果偏离真实的结果。
- 方差产生的原因
- 方差在机器学习中的表现为,数据的一点点扰动都会较大的影响模型,换句话说,模型没有完全学习到问题的实质,而学习到了很多噪音;
- 模型太复杂,如高阶的多项式回归;
- 过拟合(overfitting)会产生方差;
3)高方差的算法
- 有一些算法天生就是高方差的算法;
- 如 kNN,因为 kNN 有一个很大的缺点,对数据太敏感,因为模型每次都得找离被预测的样本最近的几个样本,让它们进行投票,但是这最近的几个样本一旦多数错误的结果,则导致预测的结果不准确。
- 一般非参数学习的算法都是高方差的算法
- 因为这类算法不对数据进行任何假设,只能根据现有数据进行预测,因此它对训练数据的准确度依赖性比较高。换句话说,该类算法对训练数据比较敏感。(如 kNN、决策树)
4)高偏差的算法
有一些算法天生是高偏差的算法;
- 如线性回归,因为现实生活中很多问题可能不是线性关系,但如果非要使用线性手段拟合这些数据或问题,则会得到错误的结果,这类错误通常都是偏差错误。
- 一般参数学习的算法都是高偏差的算法,因为该类算法对数据具有极强的假设。
- 参数学习算法:将整个问题规约成一个数学模型,只需要求出该数学模型的参数即可。
- 规约成数学模型的前提是对问题或数据进行假设,认为数据或问题的规律符合该数学模型,但是一旦数据或问题不符合该数学模型,也就是假设是错误的,会导致模型也是错误的,这种错误通常都是高偏差的错误。
三、解决模型误差
1)机器学习算法中,大多数算法具有相应的参数,可以通过调参来调整模型的偏差和方差
- kNN 算法
- 对 k 的调整,其实就是在调整算法模型中引入的偏差和方差的错误,k 越小模型越复杂,相应的模型的方差越大偏差越小;k 越大模型越简单,直到 k 达到最大值(样本总数),此时 kNN 算法的本质就是看全部样本中哪类样本最多,就将此类样本的类型作为预测结果,这种情况下 kNN 算法的模型的方差最小偏差最大。
- 线性回归中使用多项式回归
- 调整参数 degree,可改变线性回归算法模型的方差和偏差的误差。degree 越小模型越简单,模型的偏差越大方差越小;degree 越大模型越复杂,模型方差越大偏差越小。
2)调整模型的偏差和方差
- 通常在一个机器学习算法中,偏差和方差是矛盾的,降低偏差就会提到方差,降低方差就会提高偏差,一般需要找到一个平衡;
- 如果一个算法模型的偏差和方差都较低,则算法本身可能存在错误,因为通常大部分情况下都不会这么理想。此时需要观察算法的主要错误是集中在偏差位置还是方差位置,并且要尝试使偏差和方差能不能达到平衡;换句话说,不要太高的方差,因为此情况下模型的泛化能力较弱;也不要太高的偏差,因为此情况下模型太过偏离原问题。
- 有时,可能不能完全杜绝错误,但让模型有一点偏差也有一点方差,而不是模型的错误集中在一个方面;通常在机器学习中,将模型调整到此种状态也是在对模型调参时要做的一个主要的事情。
机器学习领域的主要挑战,来自于方差:
- 此说法只局限在算法的层面上,在问题的层面上不一定是这种情况。因为现实中人们还对很多问题的理解太过肤浅,比如对疾病和金融市场的理解。
- 如,过去很多人尝试用历史的金融数据来预测未来的金融情况,通常预测的结果不够理想,很有可能历史的金融数据并不能很好的反应未来金融市场的走向,因此此种方法会带来很高的偏差。
- 现实中解决过拟合是很多算法工程师要解决的问题;
3)解决高方差的通常手段
- 1)降低模型复杂度
- 如多项式回归中,可通过较小 degree 来降低模型复杂度;
- 2)减少数据维度;降噪
- 方差过大的大部分原因是模型学习的过多的噪音;
- 3)增加样本数
- 也就是增大训练数据的规模:有时候算法具有高的方差,是因为模型太过复杂,模型中的参数非常多,而训练模型的样本数不足以支撑计算出这么多复杂的参数。(如:神经网络和深度学习)
- 使用深度学习的一个非常重要的条件就是数据样本的规模必须足够的大,这样才能发挥深度学习算法的效用,其中的原因就是深度学习算法的模型太过复杂,模型中的参数非常多,而训练模型的样本数不足以支撑计算出这么多复杂的参数。否则的话,使用深度学习的算法在一个小样本上得到的结果,还不如使用简单的模型得到的结果。
- 4)使用验证集
- 在评测算法模型指标时需要使用 验证数据集(Validation),因为如果只使用 train_test_split 的方法得到的模型很有可能出现过拟合测试数据集的情况。
- 5)模型的正则化
机器学习:偏差方差权衡(Bias Variance Trade off)的更多相关文章
- 【笔记】偏差方差权衡 Bias Variance Trade off
偏差方差权衡 Bias Variance Trade off 什么叫偏差,什么叫方差 根据下图来说 偏差可以看作为左下角的图片,意思就是目标为红点,但是没有一个命中,所有的点都偏离了 方差可以看作为右 ...
- 偏差和方差以及偏差方差权衡(Bias Variance Trade off)
当我们在机器学习领域进行模型训练时,出现的误差是如何分类的? 我们首先来看一下,什么叫偏差(Bias),什么叫方差(Variance): 这是一张常见的靶心图 可以看左下角的这一张图,如果我们的目标是 ...
- 训练/验证/测试集设置;偏差/方差;high bias/variance;正则化;为什么正则化可以减小过拟合
1. 训练.验证.测试集 对于一个需要解决的问题的样本数据,在建立模型的过程中,我们会将问题的data划分为以下几个部分: 训练集(train set):用训练集对算法或模型进行训练过程: 验证集(d ...
- 机器学习算法中的偏差-方差权衡(Bias-Variance Tradeoff)
简单的以下面曲线拟合例子来讲: 直线拟合后,相比原来的点偏差最大,最后一个图完全拟合了数据点偏差最小:但是拿第一个直线模型去预测未知数据,可能会相比最后一个模型更准确,因为最后一个模型过拟合了,即第一 ...
- [转]理解 Bias 与 Variance 之间的权衡----------bias variance tradeoff
有监督学习中,预测误差的来源主要有两部分,分别为 bias 与 variance,模型的性能取决于 bias 与 variance 的 tradeoff ,理解 bias 与 variance 有助于 ...
- Bias/variance tradeoff
线性回归中有欠拟合与过拟合,例如下图: 则会形成欠拟合, 则会形成过拟合. 尽管五次多项式会精确的预测训练集中的样本点,但在预测训练集中没有的数据,则不能很好的预测,也就是说有较大的泛化误差,上面的右 ...
- 机器学习总结-bias–variance tradeoff
bias–variance tradeoff 通过机器学习,我们可以从历史数据学到一个\(f\),使得对新的数据\(x\),可以利用学到的\(f\)得到输出值\(f(x)\).设我们不知道的真实的\( ...
- Andrew Ng机器学习编程作业:Regularized Linear Regression and Bias/Variance
作业文件: machine-learning-ex5 1. 正则化线性回归 在本次练习的前半部分,我们将会正则化的线性回归模型来利用水库中水位的变化预测流出大坝的水量,后半部分我们对调试的学习算法进行 ...
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习使用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.1 训练/开发/测试集 对于一个数据集而言,可以将一个数据集分为三个部分,一部分作为训练集,一部分作为简单交叉验证集(dev)有时候也成为验 ...
随机推荐
- IDEA中集成JRebel插件
下载下面2个插件 jr-ide-intellij-6.4.3_13-16.zip --- 官网的jar(地址:https://plugins.jetbrains.com/plugin/4441-jre ...
- 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网
首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...
- SG函数略解
由于笔者太懒,懒得把原来的markdown改成MCE,所以有很多奇怪的地方请谅解. 先说nim游戏. 大意:有n堆石子,两个人轮流取,每个人每次从任意一堆取任意个,直到一个人无法取了为止.问对于石子的 ...
- Codeforces Round #412 div2 ABCD
A 按rank给出每个人的赛前分数和赛后分数 如果一个人打败了比他分数高的人 他的分数必然升高 问比赛rated吗 如果一个人的分数改变了肯定rate 如果全都没改的话 也可能是rated 这时候ch ...
- 发布新版本遇见java.lang.ClassNotFoundException
今天发布新版本到测试环境,服务器在启动时报了java.lang.ClassNotFoundException .刚开始我以为是代码中jar引的不对从而导致找不到相关类,后来在本地试了下发现项目可以正常 ...
- Flume的Avro Sink和Avro Source研究之二 : Avro Sink
啊,AvroSink要复杂好多:< 好吧,先确定主要问题: AvroSink为啥这么多代码?有必要吗?它都有哪些逻辑需要实现? 你看,avro-rpc-quickstart里是这么建client ...
- Mac上的抓包工具Charles[转载]
今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包 http://blog.csdn.net/jiangwei0910410003/article/details/198 ...
- TCP/IP 详解笔记
最早的 TCP 协议文档是 RFC793. TCP 提供一种面向连接的.可靠的字节流服务. 面向连接容易理解,那么什么是字节流服务呢? 答:两个应用程序通过 TCP 连接交换 8 bit 字节构成的字 ...
- 论文笔记 — MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
论文:https://github.com/ei1994/my_reference_library/tree/master/papers 本文的贡献点如下: 1. 提出了一个新的利用深度网络架构基于p ...
- 强制关闭iPhone iPad AppleWatch MacOS
iPhone/iPad 强制关闭APP:按住Power(电源键),出现关机界面松开,按住Home键9秒左右. 强制重启/关机:同时按住Power和Home键几秒后重启,出现logo时松开Home继续按 ...