在对有监督模型的评估方面,我们经常会涉及到过拟合和欠拟合两个概念,欠拟合是指模型在训练集上性能较差,而过拟合是指模型能很好地贴合训练集,但是在测试集上性能差。而Bias和Variance之间的平衡取舍是我们应对机器学习模型欠拟合问题和过拟合问题的第一步。所以什么Bias,Variance,他们有什么用?为什么用他们将在这篇笔记得到解释。
What are error, bias, variance and noise?
假设我们的模型为,而真实答案(Ground Truth)为,我们使用的模型预测值为,我们可以设误差为,则有
那么error可以认为是即
bias即偏差 ;
variance即方差。
所以正常情况下:
但是还有一些我们没有办法消除的自然噪声,所以:
之所以我们将误差平方分割成Bias,Variance以及Noise,是因为他们在机器学习模型的最终误差Error中各有意义。
首先真实世界的真正客观规律为Real;
其次我们通过观察真实世界Real得到的观测情况为Observation;
之后,我们对观测情况Observation进行人为假设,并为模型设定宏观学习目标Goal;
最后,我们通过在训练样本上训练模型,并让其对测试集进行预测Prediction。
Real与Observation之间的差距是Noise,是机器学习无法消除的,刻画了学习问题本身的难度;
Observation与Goal之间的差距是Bias,即模型预测的真实值与期望值之间的差,是由于我们对学习算法做了错误的假设而产生的,例如我们将模型设计得太简单就会造成高Bias,所以Bias刻画了学习算法本身的拟合能力。也即Bias是我们为模型设定的学习目标本身就与观测情况存在的差异;
Goal与Prediction之间的差距是Variance,即模型预测的期望值与预测值之间的差平方和,是由于模型的复杂度相对于训练集过高,使得模型对训练集中的每个样本都进行极致地贴合,导致模型自己迷失在训练集的独特分布中而错失了我们本身为模型设定的宏观目标,从而产生差异,所以刻画了数据扰动所造成的影响(模型的稳定性);
综上,我们可以认为模型的泛化能力是由任务本身的难度、算法的能力、数据的充分性共同决定的。
Why do we need bias and variance?
训练误差主要是由偏差造成的,测试误差相对训练误差的增量是由方差造成的。
偏差Bias用于描述模型的拟合能力;
方差Variance用于描述模型的稳定性。
如下图所示,
所以在训练模型过程中,我们通常需要使用Bias和Variance对模型的泛化能力进行评估和分析。
How can we use biase and variance?
我们可以通过bias与variance之间的权衡取舍(trade off)来尽可能提升模型的泛化能力。
如下图所示:
随着模型的容量增大,模型愈发复杂,对训练集贴合越好,泛化误差Error中Bias偏差不断降低,欠拟合的情况得到缓解,但是Variance方差不断升高,逐渐成为泛化误差Error的主导成分,模型越发贴合训练集的特征直至对个别训练集自身的独特特征也十分敏感,模型也逐渐出现过拟合的情况。
我们所追求的是图中的Optimal capacity,为此我们需要实现如下措施:
如果出现高Bias的欠拟合情况,解决方法:
- 增加新特征(特征组合、高次特征)从而增大假设空间;
- 使用非线性的更复杂的模型(非线性SVM、Decision Tree、Deep Neural Networks)
- 减小正则项参数
- Boosting集成学习
如果出现高Virance的过拟合情况,解决办法:
- 交叉验证
- 减少特征数量
- 正则化