ML中的方差与偏差
下面这一段节选自知乎用户,具体链接为:https://www.zhihu.com/question/27068705/answer/82132134。
在机器学习过程中,我们用训练数据集去训练(学习)一个model(模型),通常的做法是定义一个Loss function(误差函数),通过将这个Loss(或者叫error)的最小化过程,来提高模型的性能(performance)。然而我们学习一个模型的目的是为了解决实际的问题(或者说是训练数据集这个领域(field)中的一般化问题),单纯地将训练数据集的loss最小化,并不能保证在解决更一般的问题时模型仍然是最优,甚至不能保证模型是可用的。这个训练数据集的loss与一般化的数据集的loss之间的差异就叫做generalization error。而generalization error又可以细分为Bias和Variance两个部分。
Bias是 “用所有可能的训练数据集训练出的所有模型的输出的平均值” 与 “真实模型”的输出值之间的差异;
Variance则是“不同的训练数据集训练出的模型”的输出值之间的差异。
-
偏差与方差分别是用于衡量一个模型泛化误差的两个方面;
- 模型的偏差,指的是模型预测的期望值与真实值之间的差;
- 模型的方差,指的是模型预测的期望值与预测值之间的差平方和;
-
在监督学习中,模型的泛化误差可分解为偏差、方差与噪声之和。
-
偏差用于描述模型的拟合能力;
方差用于描述模型的稳定性。 -
准:bias描述的是根据样本拟合出的模型的输出预测结果的期望与样本真实结果的差距,简单讲,就是在样本上拟合的好不好。要想在bias上表现好,low bias,就得复杂化模型,增加模型的参数,但这样容易过拟合(overfitting),过拟合对应上图是high variance,点很分散。low bias对应就是点都打在靶心附近,所以瞄的是准的,但手不一定稳。
确:variance描述的是样本上训练出来的模型在测试集上的表现,要想在variance上表现好,low variance,就要简化模型,减少模型的参数,但这样容易欠拟合(unfitting),欠拟合对应上图是high bias,点偏离中心。low variance对应就是点打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。
导致偏差和方差的原因
- 偏差通常是由于我们对学习算法做了错误的假设,或者模型的复杂度不够;
- 比如真实模型是一个二次函数,而我们假设模型为一次函数,这就会导致偏差的增大(欠拟合);
- 由偏差引起的误差通常在训练误差上就能体现,或者说训练误差主要是由偏差造成的
- 方差通常是由于模型的复杂度相对于训练集过高导致的;
- 比如真实模型是一个简单的二次函数,而我们假设模型是一个高次函数,这就会导致方差的增大(过拟合);
- 由方差引起的误差通常体现在测试误差相对训练误差的增量上。
简单理解,高偏差可能就是欠拟合了,高方差就是过拟合了。要选择一个适中的情况。
偏差与方差的权衡(过拟合与模型复杂度的权衡)
-
给定学习任务,
- 当训练不足时,模型的拟合能力不够(数据的扰动不足以使模型产生显著的变化),此时偏差主导模型的泛化误差;
- 随着训练的进行,模型的拟合能力增强(模型能够学习数据发生的扰动),此时方差逐渐主导模型的泛化误差;
- 当训练充足后,模型的拟合能力过强(数据的轻微扰动都会导致模型产生显著的变化),此时即发生过拟合(训练数据自身的、非全局的特征也被模型学习了)
-
偏差和方差的关系和模型容量(模型复杂度)、欠拟合和过拟合的概念紧密相联
- 当模型的容量增大(x 轴)时, 偏差(用点表示)随之减小,而方差(虚线)随之增大
- 沿着 x 轴存在最佳容量,小于最佳容量会呈现欠拟合,大于最佳容量会导致过拟合。