吴恩达机器学习笔记-过拟合

概念

假设我们有一组数据集如下图所示:

左边的图中,我们假设y = \theta_0 + \theta_1x,与数据集进行比较发现此函数和数据的拟合度并不是很高,先然数据并不是呈现一条直线的形状,因此我们认为此函数并不能很好的预测后面的数据的真实情况,我们通常称这种情况为欠拟合(underfitting);中间的图中,我们假设y = \theta_0 + \theta_1x + \theta_2x^2,从曲线和数据集和比较来看,此函数相对较为满足实际的情况;第三张图中我们是通过多个特征值来设定假设函数从而满足当前的数据集,虽然和当前数据吻合当并不能准确的预测后续数据的正确性,这种情况下我们称为过拟合(overfitting)
过拟合或者有时会被称作高方差,反应的是假设函数往往是对当前已有的数据集能有很好的准确度但不能准确预测后续的数据。造成这种情况的原因一般是所选取的特征太多或太简单。这时候设计的函数可能会非常复杂而且函数图像中会出现一些不必要的曲线角度。
有两种方式可以解决过拟合问题:

  1. 减少特征的数量
    • 手动确认哪些特征需要保留
    • 使用模型选择算法
  2. 正则化
    • 保留所有的特征,但减小参数j的量级
    • 正则化在在我们拥有大量的有用的特征时往往能处理的很好

代价函数

在上面最右边的图中我们用了一个更高次的多项式假设是\theta_0 + \theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4去拟合数据,最终得到一个能非常好地拟合训练集的曲线,但这不是一个好的结果,它过度拟合了数据,因此一般性并不是很好。那么我们来考虑一个假设,我们想要加上惩罚项,从而使参数\theta_3,\theta_4足够的小,我们的目标是使得\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^(i)) - y^(i))最小,那么我们给他加上1000*\theta_3^2+1000*\theta_4^2,这里的1000仅仅只是代表数值很大而已,并不是一定要是1000。连起来如下:
\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x^(i)) - y^(i))+1000*\theta_3^2+1000*\theta_4^2

我们要最小化这个函数,那就意味着要\theta_3\theta_4要尽可能的小,因为它们俩的系数都非常大,会导致这个函数很大。则我们需要\theta_3\theta_4尽量接近于0。就像我们直接去掉了\theta_3x^3+\theta_4x^4这两项。那这样我们的假设函数依然趋向于接近一个二次函数,也就是上面图中的第二张图的曲线,最终我们拟合的函数依然还是一个二次函数。
这里例子里我们通过加入惩罚来增大两个参数所带来的效果,这就是正则化背后的思想。这种思想就是,如果我们的参数值对应一个较小的值得话,那么我们往往会得到一个形式更为简单的假设。比如这里我们就是惩罚的\theta_3\theta_4使得其接近于0,我们得到一个更简单的假设,这里是二次函数。但一般来说,这些参数的值越小,我们得到的函数就越加平滑越加简单,因此也不容易发生过拟合的问题。
在实际问题里,如果我们遇到了很多比如上百的特征数量,我们很难提前选出关联度小的特征,因此在正规化里,我们要做的就是把代价函数进行修改,来缩小所有的参数,因为我们也不知道应该选那些参数进行缩小。因此我们可以在代价函数后面加上一个新的项,即一个额外的正则化项来缩小每个参数的值。如下所示:
J(\theta) = \frac{1}{2m}[\sum_{i=1}^{m}(h_\theta(x^(i)) - y^(i)) + \lambda\sum_{j=1}^{n}\theta_j^2]

这一项就是为了缩小每一个参数,从\theta_1一直到\theta_n。按照习惯这里从1开始而并没有给\theta_0加上惩罚项,这实际上是约定俗成的,但实际中从0开始或者从1开始都没什么影响。那么我们的目标就是变为了最小化正则化的代价函数J(\theta),最后的一项就是正则化项,\lambda被称作正则化参数,它的作用是控制两个不同目标之间的取舍。我们的第一个目标与目标函数的第一项有关,就是我们更好的拟合训练集;第二个目标和后面的一项有关,就是我们想要保持参数尽可能的小。这个\lambda就是用来平衡两个目标之间的平衡,即平衡拟合训练和保持参数值较小,从而保持假设模型的相对简单,避免出现过拟合的情况。
在正则化的线性回归中,如果\lambda取得值太大的话,会导致我们对这些参数的惩罚程度太大,最终这些参数都会趋向于0,这样就相当于把假设函数的所有项都忽略掉了,最后假设函数就剩下h_\theta(x) = \theta_0。这就相当于用一条直线去拟合数据,在上述图像中的训练集对比来看,显然不符合要求,导致出现了欠拟合的情况。

线性回归的正则化

对于线性回归,我们在之前的内容中有说过两种算法,一种是基于梯度下降,一种是基于正规方程。之前的线性回归中我们使用梯度下降去最小化最初的代价函数,会反复用下式去更新\theta_j的值,其中j的值从0到n。
\theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x(i)))-y^(i))x_j^(i)
但现在我们是有正则项的代价函数,那么我们单独写出\theta_0的更新,如下所示:

这样做的原因是我们在正则线性回归时并没有惩罚\theta_0,那么通过进行计算,我们可以把上式等价的写成下面的写法:

而其中的1-\alpha\frac{\lambda}{m}其实始终都是小于1的,而且是略小于1,因为\alpha\frac{\lambda}{m}是一个正数,通常学习速率很小但m却很大,那么\alpha\frac{\lambda}{m}就会很小,因此这一项很接近于1,比如0.99,那么这里\theta_j的更新结果就是\theta_j缩小了一点点然后进行和之前一样的更新操作,因为第二项和之前的公式显然是一样的。
第二种拟合线性回归的方法是正规方程,如下所示:
\theta = (X^TX)^{-1} X^Ty
但在正则化的线性回归中,我们的公式是:

这里的L是个(n+1)*(n+1)维矩阵,对角线外其他元素均为0,推导过程就不在此说明。但这里提一下矩阵不可逆的情况。假设我们的样本数量m是小于特征数量n的,那么这里的(X^TX)就是不可逆的,或者说是个奇异矩阵。但在正则化中已经考虑过这个问题,也就是说,只要正则化参数\lambda>0,我们就可以确信(X^TX+\lambda L)一定不是奇异矩阵,是可逆的。

正则化logistic回归

在logistic回归中也会出现过拟合的情况,如下图,如果我们用右边的高次多项式进行拟合的话,得到的结果可能会如图中蓝色曲线一样的图像,它的判定边界非常复杂和扭曲。

通常情况下,如果逻辑回归含有多个特征,有无关紧要的多项式,这些大量的特征可能会导致过拟合的情况。上图中下方是逻辑回归的代价函数公式,为了正则化,我们在后面新加入了一项\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2,显然这一项的作用是为了惩罚\theta_1,\theta2...\theta_n,防止它们过大。这样做的效果就是,即使当你的拟合阶数很高且参数很多,只要添加了这个正则化项,保持参数较小,你仍然可以得到一条如上图中紫色的判断边界,而这条边界显然能更合理的划分正样本和负样本。因此使用正则化的话,即使有大量的特征,正则化都可以帮你避免过拟合的问题。

对于梯度下降算法,相对于上文说的正则化线性回归,算法的公司看起来是一样的,都是在之前原本说过的算法上加上正则化项。但这里的假设函数是不一样的。这里的h_\theta(x) = \frac{1}{1+e^{-z}}。中括号的部分是J(\theta)\theta_j的偏导

对于高级优化的方式来说,我们和之前的思路也是基本是一样的,如下图所示:

我们需要编写计算J(\theta)J(\theta)的偏导的代码,当运行costfunction后调用fminuc函数或者其他高级函数,这将得到新的正则化代价函数J(\theta),函数返回的参数代表的就是正则化逻辑回归的解。

以上,就是吴恩达机器学习第三周Solving the Problem of Overfitting部分的课程笔记。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容