浅谈过拟合(over-fitting)-原因、危害、解决方法

一. 误差和性能度量

  • 错误率(error rate)

分类错误的样本数占样本总数的比例

D是样本集合,f是模型,f(xi)是模型输出,yi是实际类标,Ⅱ()
是指示函数,在内部为真和假时分别取值1,0)

m个样本内有a个样本分类错误,则错误率为E = a/m

  • 精度(accuracy)

对应的 1 - a/m就称为精度,即精度 = 1 - 错误率。


浅谈过拟合(over-fitting)-原因、危害、解决方法_第1张图片
  • 误差(error)

    • 误差:模型的预测输出和样本的真实输出之间的差异。
    • 训练误差(经验误差):模型在训练集上的误差。
    • 泛化误差:模型在新样本上的误差。

    在我之前的博客机器学习解决问题的一般过程中说过,在我们训练模型的过程中,我们是遵循经验风险最小化原则,但是我们最终的诉求是一个泛化误差最小的模型。这是因为我们事先并不能知道新样本到底是什么样的,实际能做的是努力使手上可以获得的训练样本的经验误差最小。在绝大多数情况下,使用各种不同的方式,我们可以获得一个在训练样本上表现很好的模型,即在训练集上都预测正确,分类错误率为0,分类精度为100%。这是不是我们希望得到的模型呢?不是,而且在绝大多数情况下,这都不是一个好的模型。

  • 均方误差(mean squared error)

    在预测任务中,给定样例集D={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)},其中y_ix_i的真实标记,要评估模型f的性能,就要把模型的输出f(x)和真实标记y进行比较。回归任务最常用的是均方误差:

    浅谈过拟合(over-fitting)-原因、危害、解决方法_第2张图片

二. 过拟合

浅谈过拟合(over-fitting)-原因、危害、解决方法_第3张图片

浅谈过拟合(over-fitting)-原因、危害、解决方法_第4张图片

我们实际希望的,是在新样本上能表现得很好的学习器.为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的"普遍规律",这样才能在遇到新样本时做出正确的判别.然而,当学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降。

更本质点讲,任何完美的模型(泛化误差为0)都是一个高维曲面。这个曲面虽然是高维的,但是却十分光滑,可是当我们过度解读(over-fitting)之后,往往造成这种概念和高维曲面具有过多细节,形状不够柔和。

三. 过拟合的原因

  • 噪声:永远没有完美的数据,数据里的噪声会影响模型的学习。
  • 假规律: 样本量较少时,学习器却很复杂时,学习器会过度解读学到很多假的但是在这少数几个样本拥有的规律。

四. 过拟合的危害

  • 过拟合的模型可以看成是一种完全记忆式的模型,这种模型是无用的,因为它不能被一般化。
  • 过拟合也可以看成一个过度复杂的模型,这种模型很容易去利用那些看似正确实则无用的(spurious)关系,这往往会误导最终的判断。

“危害”:女神冲我微笑了--->女神喜欢我。

五. 过拟合的解决方法

过拟合是无法完全避免的,但是可以通过一些方法减少过拟合。

  • 正则项:奥卡姆剃刀原则,鼓励简单模型。(过拟合的模型往往是复杂的)
    浅谈过拟合(over-fitting)-原因、危害、解决方法_第5张图片
  • Dropout: 就是让神经网络在前向传播的时候,让某个神经元的激活值以一定的概率P,让他停止工作,也就是将这个神经元的激活值变为0。Dropout是非常有效的减少过拟合的方法,通俗的讲当我们挡住了数据的一部分,模型仍然能判断出数据是什么的话,说明模型的能力已经很强。同时挡住了一部分特征,能让模型不依赖于数据的某些局部特征,因为他可能已经被罢工了。
  • 获得更多数据:过拟合问题的一个本质原因就是训练数据量不足以让模型获得整个全局特征。在少量的样本中企图观察到事物真正的规律,无异于坐井观天。当我们获得更多数据的时候,模型的眼界就会变大,就不会被局部特征所迷惑。
  • 集成学习:简而言之,训练多个模型,以每个模型的平均输出作为结果。

你可能感兴趣的:(浅谈过拟合(over-fitting)-原因、危害、解决方法)