课程简介
本节课主要介绍了关于机器学习中的过拟化问题。作者指出,区别一个专业级玩家和业余爱好者的方法之一就是他们如何处理过拟化问题。通过该课程,我们可以知道样本数据的拟合并不是越高越好,因为噪声的存在将使得过拟化问题的出现。最后简介了处理过拟合的两种方法。
课程大纲
1、什么是过拟化?(what is overfitting?)
2、过拟化中的噪声。(The role of noise)
3、确定性噪声。(Deterministic noise)
4、如何处理过拟化问题。(Dealing with overfitting)
1、什么是过拟化?(what is overfitting?)
我们先看一个例子,如下图所示:
样本数据是二维的,现在只有5个样本,假设我们的目标函数是蓝色的线,学习的得到的函数是红色的线。为了全部拟合所有的点,最高项系数是 4 。但是可以看到现在虽然 Ein = 0, 但是 Eout = huge
再看一个:
通过上图可以知道,随之迭代次数的增加,Ein不断下降,但是Eout是先降下去,然后就开始上升。
因此,Overfitting 是指当我们得到的模型对于数据的拟合程度超过我们所希望的。
可能你会问,为什么拟合程度不是越好越好?那是因为样本数据中不可避免的存在噪声。当拟合程度超过一定程度的时候,我们其实是在拟合噪声,这当然不是我们所希望发生的。理想的情况是能达到上图中的最低点。那是最理想的其情况。
但是由于我们不知道真实函数是怎样的,也无法直接测量Eout。因此我们需要一系列的方法、理论指导我们找到好的停止点。下两节课程将讲解这方面的知识。下面先来看看噪声是如何影响机器学习的。
2、过拟化中的噪声。(The role of noise)
噪声有两种,
一种是由于数据的采集造成的噪声,这种噪声是随机化的,因此称之为:stochastic noise(随机噪声)。
还有一种是由于假设集的复杂程度造成的噪声,我们称之为:deterministic noise(确定性噪声)。
随机噪声很容易理解,但是为什么噪声还跟假设集有关?
先看下面这幅图:在第八课:偏差与方差权衡的时候提到过。其中 H2 表示的是 2项式,H10 表示的是 10 项式。(对应假设集不同的复杂程度)
当假设集变大(对应着多项式的项增加)的时候,Eout在一开始的时候是很大的,随着数据点的增加,Eout开始急剧下降,最后假设集大的对应的 Eout 比假设集小的要小。然而在数据点有限的时候,当假设集增大,Eout会先减少,然后增大。当增大的时候,我们就认为假设集的复杂程度导致了过拟化(虽然Ein减少了),这种情况下,我们也认为假设集的复杂程度也是噪声的一种来源。
为了更加直观地理解上述两种噪声,看下面通过实验得出来的图。颜色表示的是过拟化程度,颜色越偏向红色,表示过拟化越严重。
其中:
这道公式是数据发生器,f(x) 是目标函数(被归一化为 0-1 )。 第二项是噪声。假设机器通过x,y数据点学习得到的函数是 g
下面是过拟化计算的公式:
Overfitting of stochastic noise = g^a - f(x) // g^a 表示多项式最高项是 a
Overfitting of deterministic noise = Eout(g^a) - Eout(g^b) // 公式中 a 大于 b
通过分析上图可以得出如下结论:
3、确定性噪声。(Deterministic noise)
定义:无法从 H 中学习到的 f 的部分。f(x) - h*(x).(The part of f that H cannot capture )。
在有限的资源下,尝试增加 H 去匹配 f 反而会增大噪声的影响,最终导致 Eout的增加。因此最好的方法就是不去匹配所有的数据。量力而行。
(不小心想到武侠小说里面的情节,当你的内功不够雄厚的时候就不要企图去练上乘的武功,否则会走火入魔)
与随机性偏差的最大区别:
1、由 H 决定
2、对于给定的 x,得到的偏差是确定的。
对过拟化的影响:对于给定的数据,H 尝试匹配噪声。
现在考虑把噪声和方差偏差结合起来:
已经知道:
上述公式描述的是没有噪声的情况下,由于可能存在噪声,于是令:
y(x) = f(x) + e(x)
// e(x) 表示的是噪声。
并且把 f(x) 变换为:y(x) ,代入上式得到:
可以证明 cross terms = 0,于是上式左边等于:
最后一项说明了由目标函数到真是的输出的差距(因为噪声是很难避免的,因此最后一项很难达到 0)。
4、如何处理过拟化问题。(Dealing with overfitting)
有两种方法:
1、Regularization:putting the brakes。
2、Validation:Checking the bottom line。
什么是 Regularization?
就是增加一点限制,使得 g 不允许完全匹配所有的样本数据。
什么是 Validation?
就是通过对学习得到的一系列的 g 进行测试,找到使得 Eout 最小的 g 作为最终输出。
这两种方法将在后面两节讲解。下面看一个应用了第一种方法得到的最终结果:
课程总结:
以前在学习数据挖掘的课程的时候,也听说过不要过度拟合,但是那本书好像没有解释为什么过度拟合不好(好像老师也没有说),自己当时是不理解的,但是也没有去问老师,查资料等(-_-!).通过这一节的内容才总算把这块空白给补上了。看来自己对知识的热情还不够高啊。看来还不够笨,还不够饿!