Loading...
墨滴

algolearn

2021/09/20  阅读:44  主题:默认主题

机器学习中偏差与方差

1 什么是偏差方差

在机器学习中,我们用训练数据集去训练一个模型,通常的做法是定义一个误差函数,通过将这个误差的最小化过程,来提高模型的性能。然而我们学习一个模型的目的是为了解决训练数据集这个领域中的一般化问题,单纯地将训练数据集的损失最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的损失与一般化的数据集的损失之间的差异就叫做 泛化误差(generalization error) 。

泛化误差可分解为偏差、方差与噪声之和。

偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力。

方差度量了同样大小的训练集的变动所导致的学习性能变化,即刻画了数据扰动所造成的影响。

噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

偏差度量的是单个模型的学习能力,而方差度量的是同一个模型在不同数据集上的稳定性。

2 图形解释

假设红色的靶心区域是学习算法完美的正确预测值,蓝色点为训练数据集所训练出的模型对样本的预测值,当我们从靶心逐渐往外移动时,预测效果逐渐变差。 从上面的图片中很容易可以看到,左边一列的蓝色点比较集中,右边一列的蓝色点比较分散,它们描述的是方差的两种情况。比较集中的属于方差比较小,比较分散的属于方差比较大的情况。 我们再从蓝色点与红色靶心区域的位置关系来看,靠近红色靶心的属于偏差较小的情况,远离靶心的属于偏差较大的情况。

  • 准。bias表示模型相对真实模型的差异。想要低bias,需要复杂化模型,增加参数,但是容易过拟合造成high variance。low bias对应的是所有的点打在了靶心附近,但是不一定集中
  • 稳。variance表示的是不同数据集对应的模型之间的差异。想要低variance,需要简化模型,减少参数,但是容易欠拟合造成high bias。low variance对应的是所有的点打的比较集中,但是不一定在靶心附近

靶子上的点可以理解成一个一个的拟合模型,如果许多个拟合模型都聚集在一堆,位置比较偏,如图中 high bias low variance 这种情景,意味着无论什么样子的数据灌进来,拟合的模型都差不多,这个模型过于简陋了,参数太少了,复杂度太低了,这就是欠拟合;但如果是图中 low bias high variance 这种情景,所有拟合模型都围绕中间那个 correct target 均匀分布,但又不够集中,这就意味着,灌进来的数据一有风吹草动,拟合模型就跟着剧烈变化,这说明这个拟合模型过于复杂了,不具有普适性,就是过拟合。

3 与欠/过拟合的关系

给定学习任务,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性被学习器学到了,则将发生过拟合。

4 与boosting/bagging的关系

Bagging算法是对训练样本进行采样,产生出若干不同的子集,再从每个数据子集中训练出一个分类器,取这些分类器的平均,所以是降低模型的方差(variance)。Bagging算法和Random Forest这种并行算法都有这个效果。

Boosting则是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行权重调整,所以随着迭代不断进行,误差会越来越小,所以模型的偏差(bias)会不断降低。

5 解决

整体思路:首先,要知道偏差和方差是无法完全避免的,只能尽量减少其影响。

(1)在避免偏差时,需尽量选择正确的模型,一个非线性问题而我们一直用线性模型去解决,那无论如何,高偏差是无法避免的。

(2)有了正确的模型,我们还要慎重选择数据集的大小,通常数据集越大越好,但大到数据集已经对整体所有数据有了一定的代表性后,再多的数据已经不能提升模型了,反而会带来计算量的增加。而训练数据太小一定是不好的,这会带来过拟合,模型复杂度太高,方差很大,不同数据集训练出来的模型变化非常大。

(3)最后,要选择合适的模型复杂度,复杂度高的模型通常对训练数据有很好的拟合能力。

针对偏差和方差的思路:

偏差:避免欠拟合。

1、增加新特征,可以考虑加入特征组合、高次特征,来增大假设空间; 2、尝试非线性模型,比如核SVM 、决策树、DNN等模型; 3、如果有正则项可以较小正则项参数 ; 4、Boosting 往往会有较小的 Bias,比如 Gradient Boosting 等

方差:避免过拟合 。

1、交叉检验,通过交叉检验得到较优的模型参数; 2、特征选择,减少特征数或使用较少的特征组合,对于按区间离散化的特征,增大划分的区间; 3、正则化,常用的有 L1、L2 正则。而且 L1正则还可以自动进行特征选择; 4、如果有正则项则可以考虑增大正则项参数 ; 5、增加训练数据可以有限的避免过拟合; 6、Bagging ,将多个弱学习器Bagging 一下效果会好很多,比如随机森林等. 7、早停策略。本质上是交叉验证策略,选择合适的训练次数,避免训练的网络过度拟合训练数据。 8、DropOut策略。

期待

欢迎关注微信公众号(算法工程师面试那些事儿),建号初期,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~

algolearn

2021/09/20  阅读:44  主题:默认主题

作者介绍

algolearn