跟我一起机器学习系列文章将首发于公众号:月来客栈,欢迎文末扫码关注!
上一篇文章笔者介绍了什么是正则化,以及正则化为什么能够缓解过拟合的原理。从上一篇文章的内容我们可以知道,越是复杂的模型越是可能产生过拟合的现象,这也就为模型在其它未知数据集上的预测带来了误差。但是这些误差来自哪里,是怎么产生的呢?知道这些误差的来源后对改善我们的模型有什么样的帮助呢?下面这篇文章笔者就来介绍关于误差分析以及模型选择的若干方法。
1 偏差与方差
1.1 定义
在机器学习的建模中,模型普遍的误差都是来自于偏差(bias)和方差(variance)。那什么又是偏差与方差呢?
![](https://i-blog.csdnimg.cn/blog_migrate/372df9a4affdb7f739a0baca2b4fad65.jpeg)
如上图所示[1],假设你拿着一把冲锋枪打击红色的靶心,在你连打数十枪后出现了以下四种情况:
-
所有子弹都密集打在靶心旁边的位置,这就是典型的方差小(子弹很集中),偏差大(距离靶心甚远);
-
子弹都散落在靶心周围的位置,这就是典型的方差大(子弹很散乱),偏差小(都在靶心附近);
-
子弹都散落在靶心旁边的位置,这就是典型的方差大(子弹散乱),偏差大(距离靶心甚远);
-
所有子弹都密集打在了红色靶心的位置,这就是典型的方差小(子弹集中),偏差小(都在靶心位置);
由此可知,偏差描述的是预测值的期望与真实值之间的差距,即偏差越大,越偏离真实数据,如上图第二行所示。方差描述的是预测值的变化范围(离散程度),也就是离其期望值的距离。即方差越大,数据的分布越分散,如上图右列所示[2]。
1.2 模型的偏差与方差
上面我们介绍了什么是偏差与方差,那么这四种情况又对应机器学习中的哪些场景呢?通常来说,一个简单的模型会带来比较小的方差(Low Variance),而复杂的模型会带来比较大的方差(High Variance)。这是由于简单的模型不容易受到噪音的影响,而复杂的模型(例如过拟合)容易受到噪音的影响而产生较大的误差。一个极端的例子, y ^ = C \hat{y}=C y^=C这个模型不管输入是什么,输出都是常数 C C C,那么其对应的方差就会是 0 0