机器学习方法:回归(二):稀疏与正则约束ridge regression,La
本文出自Bin的专栏blog.csdn.net/xbinworld。 “机器学习方法“系列,我本着开放与共享(open and share)的精神撰写,目的是让更多的人了解机器学习的概念,理解其原理,学会应用。希望与志同道合的朋友一起交流,我刚刚设立了了一个技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入,在交流中拉通——算法与技术,让理论研究与实际应用深度融合;也希望能有大牛能来,为大家解惑授业,福泽大众。推广开放与共享的精神。如果人多我就组织一些读书会,线下交流。 本节的内容需要依赖上一节已经讲了的机器学习:概念到理解(一):线性回归,线性回归的模型是这样的,对于一个样本xi,它的输出值是其特征的线性组合: f(xi)=∑m=1pwmxim+w0=wTxi 其中,w0称为截距,或者bias,上式中通过增加xi0=1把w0也吸收到向量表达中了,简化了形式,因此实际上xi有p+1维度。 J(w)=1n∑i=1n(yi?f(xi))2=1n∥y?Xw∥2 可以直接求出最优解: 看起来似乎很简单,但是在实际使用的过程中会有不少问题,其中一个主要问题就是上面的协方差矩阵不可逆时,目标函数最小化导数为零时方程有无穷解,没办法求出最优解。尤其在p>n时,必然存在这样的问题,这个时候也存在overfitting的问题。这个时候需要对w做一些限制,使得它的最优解空间变小,也就是所谓的regularization,正则。 最为常见的就是对w的模做约束,如ridge regression,岭回归,就是在线性回归的基础上加上l2-norm的约束,loss function是(习惯上一般会去掉前面线性回归目标函数中的常数项1n,同时为了后面推导的简洁性会加上一个12): JR(w)=12∥y?Xw∥2+λ2∥w∥2 有解析解: 实际上ridge regression可以用下面的优化目标形式表达: minw12∥y?Xw∥2,s.t.∥w∥2<θ 也就是说,我依然优化线性回归的目标,但是条件是w的模长不能超过限制θ。上面两种优化形式是等价的,可以找到一 一对应的λ和θ。 先看一下几种范式(norm)的定义, ∥w∥2=(∑iwi2)1/2 ∥w∥1=∑i|wi| ∥w∥0=∑i1(wi≠0) 如前面的ridge regression,对w做2范式约束,就是把解约束在一个l2-ball里面,放缩是对球的半径放缩,因此w的每一个维度都在以同一个系数放缩,通过放缩不会产生稀疏的解——即某些w的维度是0。而实际应用中,数据的维度中是存在噪音和冗余的,稀疏的解可以找到有用的维度并且减少冗余,提高回归预测的准确性和鲁棒性(减少了overfitting)。在压缩感知、稀疏编码等非常多的机器学习模型中都需要用到稀疏约束。 有趣的是,l1-norm(1范式)也可以达到稀疏的效果,是0范式的最优凸近似,借用一张图[1]: 很重要的是1范式容易求解,并且是凸的,所以几乎看得到稀疏约束的地方都是用的1范式。 回到本文对于线性回归的讨论,就引出了Lasso(least absolute shrinkage and selection operator) 的问题: minw12∥y?Xw∥2,s.t.∥w∥1<θ 也就是说约束在一个l1-ball里面。ridge和lasso的效果见下图: 红色的椭圆和蓝色的区域的切点就是目标函数的最优解,我们可以看到,如果是圆,则很容易切到圆周的任意一点,但是很难切到坐标轴上,因此没有稀疏;但是如果是菱形或者多边形,则很容易切到坐标轴上,因此很容易产生稀疏的结果。这也说明了为什么1范式会是稀疏的。 Lasso稀疏性的进一步理解: 类似Ridge,我们也可以写出Lasso的优化目标函数: JL(w)=12∥y?Xw∥2+λ∑i|wi| 根据一般的思路,我们希望对JL(w)求导数=0求出最优解,即▽JL(w)=0,但是l1-norm在0点是连续不可导的,没有gradient,这个时候需要subgradient: 其中?是向量的点积。由在点x0处的所有subgradient所组成的集合称为x0处的subdifferential,记为?f(x0)。注意subgradient和subdifferential只是对凸函数定义的。例如一维的情况,f(x)=|x|,在x=0处的 subdifferential就是[?1,1]这个区间(集合)。又例如下图中,在x0点不同红线的斜率就是表示subgradient的大小,有无穷多。 subgradient 注意在x的gradient存在的点,subdifferential 将是由gradient构成的一个单点集合。这样就将 gradient 的概念加以推广了。这个推广有一个很好的性质(condition for global minimizer)。以下部分参考了[3],是浙大毕业去MIT的一个牛人的博客,看了以后自己再照着重写了一遍。 性质1:点x0是凸函数f的全局最小值,当且仅当0∈?f(x0)。 很容易理解,看上面的图,在x0点不是全局最小值,因为subgradient不包含0,而原点0就是全局最小值。如果要证明也很显然,将0∈?f(x0)带入前面的定义1中,就得到f(x)≥f(x0)。 为了方便说明,需要做一个简化假设,即数据X的列向量是orthonormal的[2,3],即XTX=I(当然没有这个假设Lasso也是可以运作的)。于是线性回归的最优解是 w?=XTy 假设lasso问题JL(w)的全局最优解是wˉ∈Rn,考察它的任意一个维度wˉj,需要分别讨论两种情况: ?JL(w)?wj∣∣∣wˉj=0 ?(XTy?XTXwˉ)j+λ?sgn(wˉj)=0 wˉj=w?j?λ?sgn(wˉj) wˉj=w?j?λ?sgn(wˉj)=sgn(w?j)(|w?j|?λ)(|w?j|?λ)=|wˉj|≥0 wˉj=sgn(w?j)(|w?j|?λ)+ 情况2:gradient不存在,即wˉj=0 0∈?JL(wˉ)=?(XTy?XTXwˉ)+λ?e=wˉ?w?+λ?e 其中e是一个向量,每一个元素ej∈[?1,1],使得0=?w?j+λ?ej成立。因此 所以和情况(1)和(2)可以合并在一起。所以呢,如果在这种特殊的orthonormal情况下,我们可以直接写出Lasso的最优解: w^R=11+λw? 除了做回归,Lasso的稀疏结果天然可以做机器学习中的另外一件事——特征选择feature selection,把非零的系数对应的维度选出即可,达到对问题的精简、去噪,以及减轻overfitting。 上面是做了简化后的讨论,实际中lasso求解还要复杂的多。在下一篇文章中,将描述和Lasso非常相关的两种方法,forward stagewise selection和最小角回归least angle regression(LARS),它们三者产生的结果非常接近(几乎差不多),并且都是稀疏的,都可以做feature selection。有的时候就用Lars来作为Lasso的目标的解也是可以的。 参考资料 [1] http://www.52php.cn/article/p-zqcpdokc-me.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |