机器学习中的偏差,误差,方差有什么区别和联系?

最近在准备过几个月挖掘岗的面试,在疯补知识中,刚好也补了这个问题,所以尝试来答答。能力有限,有误地方希望被指出。


声明:本文内容是对网上优秀博客的一个汇总(会在结束附上博客地址),以及自己的一些思考。

目录

1、方差、偏差、噪声是什么?

2、用图形解释方差与偏差。

3、方差与偏差与欠、过拟合的关系。

4、方差偏差与模型复杂度的关系。

5、如何处理方差与偏差问题?

6、Bias、Variance和K-fold的关系


1、方差、偏差、噪声是什么?

首先,我觉得需引出周志华《机器学习》对它们的定义:

偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了

算法本身的拟合能力。

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

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

在一开始学习的时候,偏差其实比较好理解,但方差一直云里雾里的,直到看到了西瓜书的定义,一下子就对方差的定义清晰了起来。要进一步理解,我觉得还是要看看它们的数学公式。

机器学习中的偏差,误差,方差有什么区别和联系?


众所周知,泛化误差 = Error = Bias + Variance + Noise

以回归任务为例, 学习算法的平方预测误差期望为:

机器学习中的偏差,误差,方差有什么区别和联系?

方差:在一个训练集D上模型f对测试样本x的预测输出为f(x;D), 那么学习算法f对测试样本x的期望预测为:

机器学习中的偏差,误差,方差有什么区别和联系?

上面的期望预测也就是针对不同数据集D,f对x的预测值取其期望, 也被叫做 average predicted

使用样本数相同的不同训练集产生的方差为:

机器学习中的偏差,误差,方差有什么区别和联系?

看到这里,突然方差感觉是这么熟悉,原理模型的方差其实和统计学的方差根本是同一个东西!

统计学方差公式:

机器学习中的偏差,误差,方差有什么区别和联系?

偏差

期望预测与真实标记的误差称为偏差(bias), 为了方便起见, 我们直接取偏差的平方:

机器学习中的偏差,误差,方差有什么区别和联系?

噪声

噪声为真实标记与数据集中的实际标记间的偏差:

机器学习中的偏差,误差,方差有什么区别和联系?

往后,其实泛化误差的公式可以通过一系列分解运算,证明Error = Bias + Variance + Noise

在此,就补贴这么多公式啦,感兴趣的同学可以移步结尾的博客。


2、用图形解释方差与偏差。

这里使用经典的靶图:

机器学习中的偏差,误差,方差有什么区别和联系?

假设红色的靶心区域是学习算法完美的正确预测值, 蓝色点为每个数据集所训练出的模型对样本的预测值, 当我们从靶心逐渐向外移动时, 预测效果逐渐变差。

它们描述的是方差的两种情况.。比较集中的属于方差小的,比较分散的属于方差大的情况。

再从蓝色点与红色靶心区域的位置关系,,靠近红色靶心的属于偏差较小的情况,远离靶心的属于偏差较大的情况。


3、方差与偏差与欠、过拟合的关系。

一般来说,简单的模型会有一个较大的偏差和较小的方差,复杂的模型偏差较小方差较大。

这也引申出欠拟合和过拟合的概念。

欠拟合:模型不能适配训练样本,有一个很大的偏差

过拟合:模型很好适配训练样本,但在测试集上表现很糟,有一个很大的方差


4、方差偏差与模型复杂度的关系。

复杂度高的模型通常对训练数据有很好的拟合能力,但是对测试数据就不一定了。而复杂度太低又不能很好低拟合数据。模型复杂度和模型方差和偏差具有如下关系:

机器学习中的偏差,误差,方差有什么区别和联系?

5、如何处理方差与偏差问题?

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

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

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

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


针对偏差和方差的思路

偏差:实际上也可以称为避免欠拟合。

1、寻找更好的特征 -- 具有代表性。

2、用更多的特征 -- 增大输入向量的维度。(增加模型复杂度)


方差:避免过拟合

1、增大数据集合 -- 使用更多的数据,噪声点比减少(减少数据扰动所造成的影响(紧扣定义))

2、减少数据特征 -- 减少数据维度,高维空间密度小(减少模型复杂度)

3、正则化方法

4、交叉验证法


6、Bias、Variance和K-fold的关系。

K-fold Cross Validation的思想:将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。


通过它的思想,我个人觉得交叉验证相当于增大了数据集合,减少了训练集的变动所导致的学习性能变化,所以解决了方差的问题(数据扰动所造成的影响)。交叉验证后,模型的预测是所有数据训练结果的平均值,这就解决了偏差的问题。


最后:

当K值大的时候, 我们会有更少的Bias(偏差), 更多的Variance。

当K值小的时候,我们会有更多的Bias(偏差),更少的Variance。


分享到:


相關文章: