机器学习中的偏差和方差

1、误差的两大来源

机器学习中有两个主要的误差来源:偏差和方差。理解它们将协助合理安排时间去执行策略来提升性能。

首先了解一下数据集的分类:

  • 训练集(training set) 用于运行你的学习算法。
  • 验证集(hold-out cross validation set) 用于调整参数,选择特征,以及对学习算法作出其它决定。
  • 测试集(test set) 用于评估算法的性能,但不会据此改变学习算法或参数。

偏差,可以理解为样本y与模型预测结果的差距,可以使用平方差计算。
方差,是样本y值与模型期望的差的平方和。

如果你在训练集上的错误率是 15%(即 85% 的精度),但你的目标是 5% 错误率(95% 精度),那么首先要解决的问题是提高算法在训练集上的性能。算法在验证/测试集上的性能通常比在训练集上要差。所以,如果算法在已知样本上达到了 85% 的精度,那么是不可能在未知样本上达到 95% 精度的。

如上所述,假设你的算法在验证集上有 16% 的错误率(84% 精度),我们将这 16% 的错误率分为两部分:

  • 第一部分是算法在训练集上的错误率。在本例中,它是 15%。我们非正式地将它作为算法的 偏差(bias) 。
  • 第二部分指的是算法在验证集(或测试集)上的表现比训练集上差多少。在本例中,验证集表现比训练集差 1%。我们非正式地将它作为算法的 方差(variance)

注意:在统计学领域有着更多关于偏差和方差的正式定义。粗略地说,偏差指的是算法在大型训练集上的错误率;方差指的是算法在测试集上的表现低于训练集的程度。当你使用均方误差(MSE)作为误差度量指标时,你可以写下偏差和方差对应的两个公式,并且证明总误差=偏差+方差。

模型对实验数据欠拟合(underfitting) 是会出现搞偏差,而过拟合(overfitting)会造成高方差。

因此,一些学习算法的优化能解决误差来源的第一个部分——偏差,并且提高算法在训练集上的性能;而另一些优化能解决第二个部分——方差,并帮助算法从训练集到验证/测试集上更好地泛化。还有一些方法能够对系统架构做出较大改变,同时减少偏差和方差。但是这些方法往往难以鉴定和实
现。

2、最优错误率

 

假设你正在构建一个语音识别系统,并发现 14% 的音频片段背景噪声太多,或者十分难以理解,导致即使是人类也无法识别出所说的内容。在这种情况下,即使是“最优”的语音识别系统也可能约有 14% 的误差。

假设在这个语音识别问题上,你的算法达到:

  • 训练错误率 = 15%
  • 验证错误率 = 30%

算法在训练集上的表现已经接近最优错误率 14%,因此在偏差上或者说在训练集表现上没有太大的提升空间。然而,算法没有很好地泛化到验证集上,在方差造成的误差上还有很大的提升空间。可以将 30% 的总验证集误差分解如下(类似的分析可以应用于测试集误差):

  • 最优错误率(“不可避免偏差”):14%。假设我们决定,即使是世界上最好的语音系统,仍会有 14% 的误差。我们可以将其认为是学习算法的偏差“不可避免”的部分。
  • 可避免偏差:1%。即训练错误率和最优误差率之间的差值。
  • 方差:15%。即验证错误和训练错误之间的差值。

如果可避免偏差值是负的,即算法在训练集上的表现比最优错误率要好。这意味着你正在过拟合训练集,并且算法已经过度记忆(over-memorized)训练集。你应该专注于有效降低方差的方法,而不是选择进一步减少偏差的方法。

为了将这与我们之前的定义联系起来,偏差和可避免偏差关系如下:

偏差 = 最佳误差率(“不可避免偏差”)+ 可避免的偏差

使用这些定义是为了更好地帮助读者理解如何改进学习算法。这些定义与统计学家定义的偏差和方差不同。从技术角度上说,这里定义的“偏差”应该叫做“我们认为是偏差的误差”;另外“可避免偏差”应该叫做“我们认为学习算法的偏差超过最优错误率的误差”

这个“可避免偏差”反映了算法在训练集上的表现比起“最优分类器”差多少。

方差的概念和之前保持一致。理论上来说,我们可以通过训练一个大规模训练集将方差减少到接近零。因此只要拥有足够大的数据集,所有的方差都是可以“避免的”,所以不存在所谓的“不可避免方差

再考虑一个例子,该例子中最优错误率是 14%,我们有:

  • 训练误差 = 15%
  • 验证误差 = 16%

可避免的偏差误差是 1%,方差误差约为 1%。因此,算法已经做的很好了,几乎没有提升的空间。它只比最佳错误率低 2%。

从这些例子中我们可以看出,了解最优错误率有利于指导我们的后续工作。在统计学上,最优错误率也被称为贝叶斯错误率(Bayes error rate),或贝叶斯率。

如何才能知道最优错误率是多少呢?对于人类擅长的任务,例如图片识别或音频剪辑转录,你可以让普通人提供标签,然后测评这些人为标签相对于训练集标签的精度,这将给出最优错误率的估计。如果你正在解决一项人类也很难解决的问题(例如预测推荐什么电影,或向用户展示什么广告),这将很难去估计最优错误率。

 

3、减少可避免偏差的方法

如果你的学习算法遭受高可避免偏差,你可以尝试以下方法:

  • 增加模型大小(如神经元/层的数量):该方法可以减少偏差,因为它可以让你更好的适应训练集。如果你发现该方法增加了方差,那么使用正则化方法,它通常能够消除方差的增加。
  • 基于错误分析的洞察修改输入特征:假设错误分析启发你去创建额外的特征,以帮助算法消除特定类别的错误。理论上来说,增加更多的特征可能会增加方差,但如果你发现这种情况,那么久使用正则化方法,它通常能够消除方差的增加。
  • 减少或消除正则化(L2正则化,L1正则化,dropout):这将减少可避免偏差,但会增加方差。
  • 修改模型架构(如神经网络架构)以便更适合你的问题:这种方法能够影响偏差和方差。

注意:

  • 增加更多训练数据:这种方法有助于解决方差问题,但是它通常对偏差没有显著的影响。

 

4、减少方差的方法

如果你的学习算法遭受高方差,你可以尝试以下方法:

  • 添加更多训练数据:只要你能够获取更多的数据和处理这些数据的充足计算能力,这是处理方差问题最简单也是最可靠的方法。
  • 添加正则化(L2正则化,L1正则化,dropout):该方法减少了方差,但增加了偏差。
  • 添加提前停止(early stopping)(基于验证集错误提前停止梯度下降):该方法减少方差但增加了偏差。提前停止的行为很像正则化方法,一些作者称它为正则化方法。
  • 选择特征以减少输入特征的数目/类型:该方法可能有助于解决方差问题,但也可能增加偏差。

这里有两个额外的策略,重复上一节处理偏差中的方法:

  • 基于错误分析的洞察修改输入特征:假设错误分析启发你去创建额外的特征,以帮助算法消除特定类别的错误。这些新特征可能有助于减少偏差和方差。理论上来说,增加更多的特征可能会增加方差,但如果你发现这种情况,那么就使用正则化方法,它通常能够消除方差的增加。
  • 修改模型架构(如神经网络架构)以便更适合你的问题:这种方法能够影响偏差和方差。

5、偏差和方差间的权衡

以下是处理偏差和方差问题最简单的公式:

  • 如果具有较高的可避免偏差,那么增加模型的大小(例如,通过添加层/神经元来增加神经网络的大小)。
  • 如果具有较高的方差,那么增加训练数据集。

如果你可以增加神经网络的大小,并无限制的增加训练集数据,在实践中,增加网络的模型终将导致你会遇到计算问题,因为训练大的模型很慢。你也可能会增加方差和过拟合的风险。

模型的大小和方差的使用:增加模型的大小,通常可以减少偏差,但可能会增加方差。但是,可以通过正则化补充,因为增加正则化一般会增加偏差,但是能减少方差。

通过增加训练数据,你通常也可以在不影响偏差的情况下减少方差。

选择合适的特征数目/类型:减少特征数量可能有助于解决方差问题,但也可能增加偏差。略微减少特征数量(比如从1000个特征减少到900)不太可能对偏差产生很大影响。显著地减少它(比如从1000减少到100——减少10倍)更可能有显著的影响,只要你没有将太多有用的特征排除在外。在现代深度学习中,当数据丰富时,已经特征选择了,尽可能给算法我们所有的特征,并让算法根据数据分类使用哪些特征。但是当你训练集比较小时,特征选择可能非常有用。

减少模型大小(如神经元/层的数量):谨慎使用。该方法能够减少方差,但可能增加偏差。但是,我不推荐使用该方法来处理方差。增加正则化通常能得到更好的分类性能。减少模型大小的好处就是降低计算成本,从而加快训练模型的速度。如果加快模型的训练是有用的,那无论如何考虑减少模型的大小。但是如果你的目标是减少方差,并且你不关心计算成本,那么考虑添加正则化替代之。

不同的模型架构(例如,不同的神经网络架构)对于你的问题将有不同的偏差/方差量。

假设你正在应用深度学习,有L2正则化和dropout,有在验证集上表现最好的正则化参数。如果你增加模型的大小,通常你的表现会保持不变或提升,它不太可能明显的变差。避免使用更大模型的唯一原因就是计算代价变大。

 

蓝色的训练错误曲线相对低,红色验证错误曲线远高于蓝色训练错误。因此,偏差较小,但是方差较大。添加更多训练数据可能有助于缩小验证错误和训练错误之间的差距。

 

这次,训练错误较大,远高于期望性能水平。验证错误也比训练错误大很多。因此,具有显著的偏差和方差。你将不得不在算法中去寻找同时减少偏差和方差的方法。

 


参考:

https://xiaqunfeng.gitbooks.io/machine-learning-yearning/content/chapter31.html

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值