初识过拟合
- 差的泛化(bad generalization):低的$E_{in}$高的$E_{out}$,$E_{out}-E_{in}$很大;
- 过拟合(overfitting):$E_{in}$降低时$E_{out}$升高;
- 欠拟合(underfitting):$E_{in}$升高时$E_{out}$也在升高。
上图右采用了4次多项式变换$\Phi$和$\mathcal Z$空间的线性拟合,$N=5$个点时存在唯一解1,$E_{in}=0$,过拟合了。
泛化能力描述的是既成的状态,过拟合描述的是变化过程。解决欠拟合可采用非线性特征变换,解决过拟合更复杂。过拟合主要受噪声和数据量的影响。
过拟合的特性
上图展示了分别用2次和10次多项式拟合1含噪和无噪数据的效果。结果有些意外,2次多项式的性能都要优于10次多项式。
下图的学习曲线表明,当数据量$N$较小时,10次多项式的$E_{in}$和$E_{out}$之间差距较大,泛化误差更大,这和VC界一致,因为10次多项式的$d_{VC}$较大。因此,当数据量较少时,用简单的模型更合适得到较好的结果。
对于上图右不带噪声的数据,10次多项式的表现仍然很差。这是由于目标函数过于复杂,生成的数据很像噪声。可以这样理解,50次多项式生成的无噪数据和10次多项式生成的数据加入噪声相似。
假设数据产生的方式为 \[ y=f(x)+\epsilon\sim\mbox{Gaussian}\left(\sum_{q=0}^{Q_f}\alpha_qx^q,\sigma^2\right), \]
$\sigma^2$表示产生噪声的等级,$Q_f$是模型的复杂度,数据集的大小为$N$。
实验时确保能产生包含模型最高次的数据,过拟合采用$E_{out}(g_{10})-E_{out}(g_{2})$度量。上图分别展示了固定模型复杂度和噪声等级下的过拟合图谱,红色表示过拟合强,蓝色表示过拟合弱。上图左固定住模型复杂度,通过$\sigma^2$产生的噪声称为随机噪声(stochastic noise);上图右固定住噪声等级,通过模型复杂度$Q_f$导致的“噪声”称为确定性噪声(deterministic noise)。
事实上,过拟合很容易发生:
- 当数据量$N$少的时候,
- 当随机噪声大的时候,
- 当确定性噪声大的时候,
- 当模型复杂$d_{VC}$大的时候,
这几种情况都容易发生过拟合。
确定性噪声大表示目标函数太复杂,机器难以学会。复杂模型产生的数据就像就像含有随机噪声一样,它就像伪随机数发生器(pseudo-random generator)。确定性噪声与随机噪声不同的地方包括:(1)当$\mathcal H$变复杂时,确定性噪声会减小;(2)固定$\mathbf x$后,确定性噪声也是固定的。
克服过拟合
克服过拟合的方法:
一、数据清洗或剪枝
可以利用异常检测的方法,探测出离群点,然后改变类别标签(数据清洗)或者移除异常点(数据剪枝),通常探测离群点的方法包括:
- 离本类很远,离其它类却很近;
- 被当前分类器错误分类;
- ……
数据清洗或剪枝对性能的影响难以把握,有时对提升效果可能非常微弱。
二、数据生成(data hinting)
根据已有数据或已知规则产生新的数据。比如字符识别的时候,通过旋转等方式生成新的字符样本。
但是需要注意,新加入的样本不再是来自原来的概率分布,不再是i.i.d.(independent identically distributed)。
参考资料
脚注
-
4次多项式变换在$N=5$个点时存在唯一解?不对吧! ↩