11.How can Machine Learn Better?

来源:互联网 发布:虚拟币交易所源码 编辑:程序博客网 时间:2024/05/25 05:35

How can Machine Learn Better? - Overfitting and Solution

1. What is Overfitting?

上一节最后,我们提到了如果线性模型的模型复杂度太大的话,可能会引起Overfitting。同样的很明显会有Underfitting的情况。

那什么是Overfitting,Underfitting呢?

首先根据名字,Overfitting:over fitting,就是在fitting的时候太over了。我们用线性模型去分类/回归处理数据的过程就是一个fitting的过程,所以也就是说我们处理过头了。同理Underfitting就是处理不够到位。

那么什么时候才是处理过头呢?什么时候才是处理不到位呢?

就是在处理相对简单的问题的时候用了相对复杂的模型去处理。
就是在处理相对复杂的问题的时候用了相对简单的模型去处理。

我们用下面的例子来进行说明
1.首先例子如图一所示(这里用的是Ng的图,因为在林老师的ppt中没找到很好地图同时体现Underfit, good fit overfit)。左图是欠拟合(underfit),中间的图四好的拟合(good fit),右图是过度拟合(overfit)。单纯从拟合结果来看:明显左边和中间的图 Ein 比右图要大。但是从泛化好坏来看,显然左图和中间的图要比右图好。
假如我们考虑good fit分类出错的点为噪音点(noise),那么Overfit的模型就会受到了严重的干扰。

Underfit, Good Fit and Overfit

图一 Underfit, Good Fit and Overfit [1]

  1. 接着我们回头看之前总结的VC Dimension 的曲线, 如图二所示。

Learning Curve

图二 Learning Curve [1]

图中可以看到在VC Dimension变大时,Ein 变小, 但 Eout 先变小后变大,而过拟合和欠拟合的情况的主要区别就在于 Eout 的变化情况,具体解释如下:
- 过拟合(Overfitting)发生在VC Dimension较大时,Ein 太小, 但 Eout 太大(即VC Dimension 太大了) ,表示在训练样本上拟合做的很好,Ein 太小,但是过度了,使得泛化能力变差, Eout 很大
- 欠拟合(Underfitting)发生在在VC Dimension较小时,Ein 太大,同时 Eout 太大(即VC Dimension 太小了),表示在训练样本上拟合做不够好,Ein 太大,虽然泛化能力很强(即 Eout 也太大)

关于如何解决欠拟合的问题之前也讨论过: 从低到高不断地提高多项式次数,使得VC维提高,达到拟合的效果。
但过拟合的问题更为复杂,下面会更深入的探讨。

  1. 下面的图三,可以让我们更加直观的看到overfitting造成的问题

Cases of Overfitting

图三 Case of Overfitting [2]

从图中可以看到,Overfitting的 Ein 都比 good-fit的要低,但是 Eout 却很高(泛化能力差)。

总结起来有3个因数会导致Overfitting的发生:
- data size N 太小
- noise 太多
- VC Dimension太大



2. Dealing with Overfitting

上一节我们提出了overfitting并作了分析。总结出3个因数会导致overfitting,下面根据这3个因数,我们有5种方法帮助我们避免overfitting的发生。

  • 使用简单的模型(start from simple model),逐次增加模型的复杂度 - 防止 VC Dimension太大
  • 进行数据清理/裁剪(data cleaning/pruning) - 防止 noise 太多
  • 数据提示(data hinting) - 防止 data size N 太小
  • 正则化(regularization) - 防止 VC Dimension太大
  • 确认(validation) - 提取一部分的数据作为测试集,提前估计模型的泛化强度

下面我们分别介绍这5种方法,其中前三种方法比较简单,这里不做深入讨论,而 Regularization 和 Validation 较复杂,这里会用比较多的笔墨进行讨论。

1) Start from Simple Model

上一章中也提到过,由于VC Dimension太大的话,导致 Ein 变小的同时 Eout却在变大。所以我们如果从d=1阶的模型开始debug,如果 Ein 不符合要求,那么我们增大d为2阶,然后在进行debug,以此类推,直到 Ein 符合我们要求位置,这个时候的 VC Dimension 不会很大,而且我们也得到泛化能力相对较强的模型。

2) Data Cleaning/Pruning

Data cleaning/pruning就是对训练数据集里label有明显错误的样本进行清理(data cleaning)或者裁剪(pruning)。data cleaning/pruning关键在于如何准确寻找label错误的点或者是noise的点。而处理的方法为
- 纠正,即数据清理(data cleaning)的方式处理该情况;
- 删除错误样本,即数据裁剪(data pruning)的方式处理。

处理措施很简单,但是发现样本是噪音或离群点却比较困难。

3) Data Hinting

Data hinting是针对N不够大的情况,通过data hinting的方法就可以对已知的样本进行简单的处理、变换,从而获得更多的样本。比如说:数字分类问题,可以对已知的数字图片进行轻微的平移或者旋转,从而得到更多的数据,达到扩大训练集的目的。这种通过data hinting得到的数据叫做:virtual examples。

需要注意的是,新获取的virtual examples可能不再是iid某个distribution。所以新构建的virtual examples要尽量合理,且是独立同分布的。

4) Regularization

Regularization(正规化)处理属于penalized方法的一种,通过正规化的处理来对原来的方程加上一个regularizer进行penalize,从而使得过渡复杂的模型,变得没那么复杂。

关于Regularization 的讨论看此链接:
12. 机器学习基石-How can Machine Learn Better? - Regularization

5) Validation

这个是目前最常用的方法之一,通过提前把一部分的数据拿出来作为测试集,因为测试集是随机取出来的,而将来实际的应用中,数据也大体和测试集出入不大,所以用这种方法,可以提前得到实际应用的时候,模型的错误 Eout 通过这个作为衡量模型是否合格的条件之一。

关于Validation 的讨论看此链接

13. 机器学习基石-How can Machine Learn Better? - Validation



Summary

1.首先介绍了Overfitting和Underfitting的概念。

2.接着我们着重分析Overfitting,总结了产生Overfitting的原因:

  • data size N 太小

  • noise 太多

  • VC Dimension太大

3.最后我们分析如何最大程度的避免Overfitting。在solution中.



Reference

[1] 机器学习基石(台湾大学-林轩田)\13\13 - 1 - What is Overfitting- (10-45)

[2] 机器学习基石(台湾大学-林轩田)\13\13 - 2 - The Role of Noise and Data Size (13-36)



原创粉丝点击