正则化

过拟合

上图展示了不同线性回归模型对训练集样本的拟合情况,可以发现,第一个模型是一条直线,不能很好的拟合训练集,这就是欠拟合(Underfitting)或者说模型是高偏差的(high bias)。第三个模型是一个高阶多项式,虽然对训练集拟合的很好,但它的特征过多,如果没有足够的数据约束,就不会有良好的泛化能力(泛化能力是指一个模型应用到新样本的能力,比如这里的新样本是指没有出现在训练集的样本),也就不能对新样本做出正确的预测,这就是过度拟合(Overfitting)或者说模型是高方差的(high varience)。第二个则是一个理想的模型。

过拟合问题会在特征过多的模型中出现, 虽然训练出的假设函数能很好的拟合训练数据,通过代价函数也能够得到很小的损失,但因为它要千方百计地拟合训练集,所以通常会是一个非常复杂的曲线,导致无法泛化到新样本中,从而无法对新样本做出正确的预测。不仅是线性回归,其他机器学习算法也都有可能面临过拟合问题,下图展示了逻辑回归模型中过拟合的情况:

通常来说过拟合的解决方法包括:

  • 减少特征的个数
  • 使用正则化,减少参数的权重
  • 增加数据量

正则化

通常过拟合是由于模型特征过多,过于复杂引起的,所以我们可以通过降低特征的权重来简化模型。我们尝试将图中较为复杂的模型(蓝色): h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4 中的 x^3x^4 的参数 \theta_3\theta_4 调小来简化模型,如果使 x^3x^4 的参数调整的非常小,甚至接近于 0,那么就相当于在原模型中去掉了这两个高阶项,这样模型就被简化为了二次函数(紫色): h_\theta(x)=\theta_0+\theta_1x+\theta_2x^2,从而可以避免过拟合。然而实际情况中,我们并不知道预测结果与哪个特征的相关度低,所以不知道应该将哪个特征的参数变小,那么我们可以尝试修改代价函数,将所有参数都变小,如下所示:
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\color{red}{\lambda\sum_{i=1}^n\theta_j^2}

注意参数 \theta_j 中的 j 是从 1 开始的,意味着我们只对特征的参数进行缩小,不对偏差项 \theta_0 进行缩小,实际上并没有什么差别。上式在原有代价函数的基础上加入了正则化项(红色),正则化参数 \lambda 相当于在两个不同目标之间做取舍,一方面是最小化损失值,也就是代价函数的前半部分,另一方面是最小化参数,也就是代价函数的后半部分。也就是说\lambda要在更好地拟合训练集和控制参数更小,从而使模型简单,避免过拟合之间保持平衡。所以需要选择合适的 \lambda 参数,如果过小则起不到简化模型的作用,仍然具有很高的方差及过拟合问题,如果过大的话则不能很好地拟合训练数据,具有很高的偏差,比如将 \lambda 设为 10^{10} ,那么所有特征接近于 0,相当于模型变成了一条直线:h_\theta(x)=\theta_0,如下图所示:

线性回归的正则化

梯度下降

将线性回归的代价函数加入正则化项:
J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\color{red}{\lambda\sum_{i=1}^n\theta_j^2}

优化目标为最小化代价函数 J(\theta) 的参数\thetamin_\theta J(\theta)

J(\theta) 求关于 \theta 的偏导,使用梯度下降公式重复迭代更新参数,注意 \theta_0\theta_j 单独更新:
\cases{\theta_0=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} &\text{if $\theta_0$}\\ \theta_j=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\color{red}{\frac{\lambda}{m}\theta_j}\right]&\text{if $\theta_{j(j\in1,n)}$} }

关于 \theta_j 的计算公式可以简化为:
\theta_j=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}

通常 1-\alpha\frac{\lambda}{m}<1,后半部分则和原有梯度下降一样,可以理解为正则化项只是在原有梯度下降基础上,让参数 \theta_j 乘以一个小于 1 的数(比如 0.99),从而使得参数值更小。

正规方程

我们可以通过正规方程直接求得最小化代价函数 J(\theta) 的参数 \theta
\Theta=(X^TX)^{-1}X^Ty

其中 Xm\times(n+1) 维的设计矩阵,每一行代表一个单独的训练样本。ym 维的向量,包含训练集所有的标签。正则化项是一个 (n+1)\times(n+1) 维的矩阵,对角线第二至最后一个元素都为 1,其他元素都为 0。比如 n = 2,那么正则化项矩阵为:
\begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0\\0 & 0 & 1 \end{bmatrix}

将正规方程加入正则化项:
\Theta=(X^T X+\color{red} { \lambda \begin{bmatrix} 0 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \cdots & \ddots & \vdots \\ 0 & \cdots & 0 & 1 \end{bmatrix}})^{-1}X^Ty

正则化项矩阵实际上是对代价函数关于参数的求导,我们知道如果样本数 m 小于特征数 n,那么矩阵 X^TX是不可逆的,或者叫做奇异矩阵,虽然用伪逆函数(Octave:pinv)可以得到从数字上看似有意义的解,但不会得到很好的假设模型。不过,在加入正则化项后,只要正则化参数 \lambda 大于 0,即可保证括号内的矩阵一定是可逆的,所以正则化解决了不可逆问题,也就可以解决过拟合问题(样本过少,特征过多)。

逻辑回归的正则化

通常逻辑回归模型中如果包含大量的多项式特征,会容易导致过拟合问题,如下图所示:

假设函数为:
h_\theta(x)=g(\theta_0+\theta_1x_1+\theta_2x_1^2+\theta_3x_1^2x_2+\theta_4x_1^2x_2^2+\cdots)

代价函数为:
J(\theta)=-\left[\frac{1}{m}\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))\right]

将代价函数加入正则化项:
J(\theta)=-\left[\frac{1}{m}\sum_{i=1}^my^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))+\color{red}{\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2}\right]

这样能减小参数的权重,即使有过多的参数也能得到平滑的决策边界,从而避免过拟合。此时,我们需要单独更新\theta_0\theta_{j},和线性回归梯度下降类似,将 \theta_j 的更新加入正则化,分别迭代更新:
\cases{\theta_0=\theta_0-\alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} &\text{if $\theta_0$}\\ \theta_j=\theta_j-\alpha\left[\frac{1}{m}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\color{red}{\frac{\lambda}{m}\theta_j}\right]&\text{if $\theta_{j(j\in1,n)}$} }

参考

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

推荐阅读更多精彩内容