46-偏差方差平权衡

偏差方差平权衡(Bias Variance Trade off)


下面首先看一下什么是偏差?什么是方差?下面请看这张图。

在这里插入图片描述

  先看图(3),我们的目标在中心的红点上,如果我们是打靶的话,我们所有的点全都完全偏离了中心的位置,那么这情况就叫做偏差(Bias)

  再看图(2),我们的目标还是红色的点,我们射击的这些点都围绕在红点附近,即没有太大的偏差,但是它整体太过分散了,那么就具有非常高的方差(Variance)

  总结一下,图(1),(2) 都是低偏差的结果,图(1) 既偏差和方差都很小,整体都集中在红色的区域;而图(2) 虽然没有偏差,但是却有非常高的方差。而图(3),(4) 都有非常高的偏差,但是图(3) 的方差特别小。对于图(4) ,既有特别高的偏差,也有特别高的方差。

  那么我们可以这么理解。我们实际要训练的那些模型都是要预测一个问题,这个问题本身就可以理解成靶子的中心,而我们根据数据来拟合一个模型进而预测这个问题,我们拟合的模型其实就是我们打出去的这些枪,那么我们的模型就有可能犯偏差和方差这样两种错误。

  所以一般来说,我们训练一个模型,这个模型会有误差,这个误差通常来源于三部分:

在这里插入图片描述
  那么不可避免的误差就是对于这部分错误,我们是无能为力的,它是客观存在的。由于各种各样的原因导致的结果。最典型的例子就是我们采集的数据本身就是有噪音的,不管我们怎样来改进我们的模型,改进我们的算法都不可避免。但是偏差和方差这两个问题却是和我们的算法,和我们的训练的模型相关的两个问题。

 &emsp如果说一个模型有偏差(Bias),主要的原因就是:对问题本身的假设不正确。比如在非线性的数据上使用线性回归。在现实的环境中,欠拟合就是这样一个例子,所以整个模型会有特别大的偏差。当然高的偏差还有其它的可能性,最典型的一个例子就是训练数据所采用的那个特征其实跟训练数据没有特别大的关系,比如说想预测一个学生的考试成绩,但是我们是用这个学生的名字来预测他的考试成绩,那么显然一定是高偏差的,因为这个特征本身离我们要预测的那个问题的目标考试成绩之间是高度不相关的。

  那么方差(Variance)这个错误是在机器学习的过程中它的表现就在于数据的一点点扰动都会较大的影响模型。换句话说,我们的模型没有完全的学习到这个问题的实质,而学习到了很多的噪音。通常来将我们的模型具有较高的方差的原因就是我们的模型太过复杂,比如说之前学习的高阶多项式回归,过拟合就会引入极大的方差。

  在理解了偏差和方差之后,我们再回过头看机器学习算法。有一些算法天生就是高方差的算法,比如 k N N kNN kNN,之前学习 k N N kNN kNN 算法时,有一个缺点就是对数据特别的敏感,因为它每次都去找离我们样本最近的 k k k 个样本,但是离它最近的这 k k k 个样本,一旦有多数是错误的结果,我们整个预测就不准确了。这就是一个高方差的算法。通常来讲,非参数学习的算法都是一个高方差的算法,因为它不对数据进行任何的假设,只能根据我们现有的训练数据来进行相应的预测,所以它对训练数据的依赖程度特别高。换句话说,它对这些训练数据是非常敏感的。

  而另外一类算法天生是高偏差的算法,比如线性回归。因为在生活中很多实际问题,它可能本身并不存在线性关系,但是如果我们非要使用线性的手段去拟合这些问题的话,那么得到的结果就会产生错误,这些错误通常都是偏差错误。参数学习通常都是高偏差算法,参数学习就是将整个问题规约成一个数学模型,只需要求出来数学模型相应的一个参数即可,那么在这样的情况下,相当于我们对数据整体有极强的假设的,我们认为这些数据是符合这些数学模型的,可是一旦我们的数据或者问题不符合我们的数学模型,也就是我们的假设是错误的,相应的我们训练出来的模型就会带来错误,这种错误通常都是高偏差的错误。

  在我们学习的大多数机器学习算法中,通常都具有相应的参数可以调整偏差和方差,比如在 kNN 算法中的 k 的调整,其实就是在调整我们算法模型引入的这个偏差和方差的错误。k 越小,说明模型越复杂,k 越大,说明我们的模型越简单。同理,线性回归中当我们使用多项式回归的时候,就可以调整多项式回归的阶数 degree,degree 越小,模型越简单,相应的偏差就会越大,degree 越大,模型越复杂,相应的方差就会越大。

  那么我们可以得出一个结论,偏差和方差通常是矛盾的,降低偏差,就会提高方差;降低方差,就会提高偏差。通常我们要找到一个平衡。

  在这里要告诉大家,在机器学习领域,我们的主要挑战来自于方差!而不是偏差。当然这个说法只局限在算法层面上,而在问题这个层面上,不一定是这个样子,因为我们还对很多问题的理解太过肤浅,比如对疾病的理解,对金融市场的理解,比如在过去很多人都尝试过使用历史的金融数据来预测未来的金融情况,通常这个预测的结果都不是很理想,很有可能是因为历史的金融数据本身并不能非常好的反映未来的金融走向,那么这种预测方法本身带来非常高的偏差。

  面对过拟合的问题,也就是我们的模型具有高方差这样的情况,我们应该如何解决呢?通常有下面几种手段:

  • 降低模型复杂度
  • 减少数据维度;降噪
  • 增加样本数
  • 使用验证集
  • 模型正则化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值