Underfitting & Overfitting

Bias & Variance

在介绍欠拟合与过拟合之前需要先了解一下偏差与方差的知识。首先关于Generalization error (aka empirical risk)的观点我觉得作者JR总结的很好,引用如下

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

目的是降低这个risk,也就是\(minimizeR_{\theta}\),当我们分解square-loss risk时会发现,\(E_{\theta}[(\theta - \hat{\theta})^2] = [B(\hat{\theta})]^2 + Var_{\theta}(\hat{\theta})\)

下图直观地展示了Bias和Variance的变化。

偏差(bias):The tendency of our classifier to make systematically wrong predictions. 注意,这里是所有可能训练出的模型输出的平均值与真实模型的输出值之间的差异。
\(Bias(\hat{\theta};\theta) = E_x[\hat{\theta}(x) - \theta(x)]\)

方差(Variance):The tendency of different training sets to produce different models/predictions. 注意,这里是不同的训练数据集训练出的模型的输出值与真实值之间的差异。
\(Var(\hat{\theta};\theta) = E_x[\hat{\theta}(x)^2] - E_x[\hat{\theta}(x)]^2\)

训练中我们希望降低两者,但是如果我们发现
1、Bias太大,模型可能有问题,可以试试大一点的模型/网络
2、Bias很小,那么模型可能是对的,也可以是正负error抵消了
3、Var太大,数据可能有问题,试试加入更多的数据,或者采用一点Regularization的方法
4、Var很小,可能训练数据起的作用较小
5、Bias-Variance trade-off,即不可能同时把两个都降低,一者高了另一个就低了

Underfitting & Overfitting

现在理解欠拟合和过拟合就很容易了,欠拟合就是模型没学到什么分类能力,这个时候就会有很大的Bias,过拟合就是模型太过复杂,最极端的例子就是每个训练数据都记录一个label不论异常与否,这时训练的Bias可能会很低但是Var变高,同时测试集的效果也可能会很差。参考下图

posted @ 2021-03-21 02:51  MrDoghead  阅读(58)  评论(0编辑  收藏  举报