机器学习线性回归之坐标轴下降

梯度下降是非常有效的优化算法,但前提是目标函数可导。Lasso的目标函数是 J ( w ) = ∣ ∣ y − X w ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 1 J(\mathbf w) = ||\mathbf y - X\mathbf w||_2^2 +\lambda||w||_{1} J(w)=∣∣yXw22+λ∣∣w1,其中正则项中的 ∣ ∣ w ∣ ∣ 1 ||w||_{1} ∣∣w1为绝对值函数,在w=0点处不可导,无法计算梯度,也无法使用梯度下降法求解。解决方法之一是将将梯度扩展为次梯度。

次导数和次微分
   ∙ \bullet 为了处理不平滑的函数,扩展导数的表示,定义一个凸函数f在 x 0 x_{0} x0处的次导数为一个标量,使得 f ( x ) − f ( x 0 ) > = g ( x − x 0 ) , ∀ x ∈ τ f(x) - f(x_0) >= g(x - x_0), \forall x \in \tau f(x)f(x0)>=g(xx0),xτ   上式中的右端的 g ( x − x 0 ) g(x - x_0) g(xx0),g与 ( x − x 0 ) (x-x_0) (xx0)之间看起来应是乘积关系,而不是函数表示,整个式子可变换为 f ( x ) − f ( x 0 ) ( x − x 0 ) > = g \frac{f(x) - f(x_0) }{(x - x_0)} >= g (xx0)f(x)f(x0)>=g,但这个式子会与下面介绍导的通过极限求次导数区间的结果矛盾,具体现象是:若根据极限方法求出次导数的区间是[-1,1],这说明-0.5也在这个区间内,但将相关值代入变换后式子得到的结果却是 − 1 > = − 0.5 -1>=-0.5 1>=0.5,这显然是不成立的,那么上式中的g与 ( x − x 0 ) (x-x_0) (xx0)之间又应该是什么关系呢?
   ∙ \bullet 其中 τ \tau τ为包含 x 0 x_{0} x0的某各区间。
   ∙ \bullet 如下图所示,对于定义域中的任何 x 0 x_{0} x0,我们总可以作出一条直线通过点 ( x 0 , f ( x 0 ) ) (x_{0}, f(x_{0})) (x0,f(x0)),且直线要么接触 f f f,要么在它的下方,该直线的斜率称为函数的次导数,显然这样的直线可能会有很多条。在这里插入图片描述
   ∙ \bullet 次导数的集合为函数 f f f x 0 x_{0} x0处的次微分,记为 ∂ f ( x 0 ) \partial f(x_{0}) f(x0)微积分中的导数和微分又是什么关系呢?
   ∙ \bullet 定义次导数为集合区间[a,b]; a = lim ⁡ x → x 0 − f ( x ) − f ( x 0 ) x − x 0 ; b = lim ⁡ x → x 0 + f ( x ) − f ( x 0 ) x − x 0 a=\lim_{x\rightarrow x_{0}^-} \frac{f(x) - f(x_0)}{x - x_0}; b=\lim_{x\rightarrow x_{0}^+} \frac{f(x) - f(x_0)}{x - x_0} a=xx0limxx0f(x)f(x0);b=xx0+limxx0f(x)f(x0)

次梯度
   ∙ \bullet 例:对凸函数 f ( x ) = ∣ x ∣ f(x) = |x| f(x)=x,其次微分如下 ∂ f ( x ) = { − 1              i f ( x < 0 ) [ − 1 , + 1 ]     i f ( x = 0 ) 1                 i f ( x > 0 ) \partial f(x) = \begin{cases} {-1}\space\space\space\space\space\space\space\space\space\space\space\space if(x<0) \\ [-1,+1] \space\space\space if(x=0) \\ 1\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space if(x>0) \end{cases} f(x)= 1            if(x<0)[1,+1]   if(x=0)1               if(x>0)  当函数在 x 0 x_{0} x0处可导时,次微分只包含一个次导数,这个次导数就是函数在 x 0 x_{0} x0处的导数。Python可用numpy.sign函数实现绝对值函数的次梯度。
   ∙ \bullet 通过求函数在某个点每个分量的次微分,可以求出函数在该点的次梯度。
   ∙ \bullet 最优解条件: 0 ∈ ∂ f ( x ∗ ) 0 \in \partial f(x^*) 0f(x) <=> f ( x ∗ ) = m i n f ( x ) f(x^*) = min f(x) f(x)=minf(x),即当且仅当0属于f在 x ∗ x^* x处次梯度集合时, x ∗ x^* x为极值点。不要被这里的 x ∗ x^* x所迷惑,其实就是类似于 x 1 x_1 x1,表示一个特定的 x x x
  对于多元函数的特定一个点,各偏导数组成的向量就是梯度,每个分量的所有次导数组成一个次微分,各分量的次微分组成次梯度。

次梯度算法
   ∙ \bullet 将梯度下降中的梯度换成次梯度,就得到次梯度法
在这里插入图片描述
  次梯度包含多个变量对应的分量,也就是次微分,次微分是一个集合,那么次梯度法应选取集合中的哪个值作为更新量呢?
   ∙ \bullet 与梯度下降算法不同,次梯度法并不是下降算法,每次对参数的更新,并不能保证目标函数单调递减。
   ∙ \bullet 因此一般情况下我们选择: f ( x ∗ ) = m i n i , . . . , t f ( x t ) f(x^*) = min_{i,...,t} f(x^t) f(x)=mini,...,tf(xt)老师原话,如果进行了t次,选择t次中最小的函数值。这个应该是说,进行了t次更新后,从t次中选择最小的哪个函数值,那么问题来了,由 于不会严格下降,也是从t次中选择最小,那么迭代停止的条件是不是就只能是达到一定的次数,而不是函数值不再变小?
   ∙ \bullet 虽然不能保证每次梯度法中目标函数单调下降,可以证明对满足一定条件的凸函数,次梯度法是收敛的,只是收敛速度比梯度下降法慢。

坐标轴下降法
   ∙ \bullet 次梯度法收敛速度慢,Lasso推荐使用坐标轴下降法。
   ∙ \bullet 坐标轴下降法:沿坐标轴方向搜索
   ∙ \bullet 在每次迭代中,在当前点处沿着一个坐标轴方向进行一维搜索。
   ∙ \bullet 循环使用不同的坐标轴,一个周期的一位搜索迭代过程相当于一个梯度迭代。
   ∙ \bullet 利用当前坐标系统进行搜索,无需计算目标函数的导数,只按照某一坐标方向进行搜索最小值。
   ∙ \bullet 梯度下降法是沿目标函数负梯度的方向搜索,梯度方向通常不与任何坐标轴平行。
   ∙ \bullet 坐标轴下降法在稀疏矩阵上的计算速度特别快。为什么?
  还是无法理解如何下降的?沿着一个坐标轴方向进行一维搜索,并循环使用不同的坐标,那么如何进行一维搜索?搜索一次,还是多次?搜索到什么时候,开始使用其它不同的坐标?在图像上的效果跟吴恩达梯度下降的那个下山的效果有什么异同?

Lasso的坐标轴下降法求解
   ∙ \bullet Lasso的目标函数为: J ( w ) = ∣ ∣ y − X w ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 1 J(\mathbf w) = ||\mathbf y - X\mathbf w ||_2^2 + \lambda||\mathbf w||_1 J(w)=∣∣yXw22+λ∣∣w1突然想到一个问题,线性回归模型的一种写法是 w T X \mathbf w^TX wTX,应从矩阵向量元素细节上观察一下与 X w X\mathbf w Xw这种写法的区别。
   ∙ \bullet 坐标轴下降法:每次搜索一个维度
   ∙ \bullet 对第j维,目标函数第一部分为残差平方和 R S S ( w ) RSS(\mathbf w) RSS(w)
∂ ∂ w j R S S ( w ) = ∂ ∂ w j ∑ i = 1 N ( y i − ( w − j T x i , − j + w j x i j ) ) 2 \frac{\partial}{\partial w_{j}}RSS(\mathbf w) = \frac{\partial}{\partial w_{j}} \sum_{i=1}^{N} (y_{i} - (\mathbf w_{-j}^T\mathbf x_{i,-j} + \mathbf w_{j}\mathbf x_{ij}))^2 wjRSS(w)=wji=1N(yi(wjTxi,j+wjxij))2 = − 2 ∑ i = 1 N ( y i − w − j T x i , − j − w j x i j ) ∗ x i j = -2\sum_{i=1}^{N}(y_{i} - \mathbf w_{-j}^T\mathbf x_{i,-j} - \mathbf w_{j}\mathbf x_{ij}) * \mathbf x_{ij} =2i=1N(yiwjTxi,jwjxij)xij = 2 ∑ i = 1 N x i j 2 w j − 2 ∑ i = 1 N ( y i − w − j T x i , − j ) ∗ x i j = 2\sum_{i=1}^{N}\mathbf x_{ij}^2\mathbf w_{j} - 2\sum_{i=1}^{N}(y_{i} - \mathbf w_{-j}^T\mathbf x_{i,-j}) * \mathbf x_{ij} =2i=1Nxij2wj2i=1N(yiwjTxi,j)xij  令上式第一项中的 2 ∑ i = 1 N x i j 2 = a j 2\sum_{i=1}^{N}x_{ij}^2 = a_{j} 2i=1Nxij2=aj,减号右边的 ( y i − w − j T x i , − j ) ∗ x i j (y_{i} - \mathbf w_{-j}^T\mathbf x_{i,-j}) * \mathbf x_{ij} (yiwjTxi,j)xij可看作第j维特征与残差的相关性,其中该残差是去掉第j维特征后其他特征得到的预测的残差,令 2 ∑ i = 1 N ( y i − w − j T x i , − j ) ∗ x i j = c j 2\sum_{i=1}^{N}(y_{i} - \mathbf w_{-j}^T\mathbf x_{i,-j}) * \mathbf x_{ij} = c_{j} 2i=1N(yiwjTxi,j)xij=cj,那么上式可变换为 a j w j − c j a_{j}w_{j} - c_{j} ajwjcj  -j表示去掉第j维
  解析求解或梯度下降那一节,有将OLS(残差平方和)按照矩阵形式进行求导的过程,本解是非矩阵求导,这两个过程及结果应能有一定的联系,有时间时可以观察一下
   ∙ \bullet 第j维对应目标函数的次梯度为:
∂ w j J ( w , λ ) = ( a j w j + c j ) + λ ∂ w j ∣ ∣ w ∣ ∣ 1 \partial_{w_{j}}J(\mathbf w,\lambda) = (a_{j}w_{j} + c_{j}) + \lambda\partial_{w_{j}}||\mathbf w||_{1} wjJ(w,λ)=(ajwj+cj)+λwj∣∣w1 = { a j w j − c j − λ             i f   ( w j < 0 ) [ − c j − λ , − c j + λ ]     i f   ( w j = 0 ) a j w j − c j + λ            i f   ( w j > 0 ) =\begin{cases} a_{j}w_{j} - c_{j} - \lambda \space\space\space\space\space\space\space\space\space\space\space if\space(w_{j} < 0) \\ [-c_{j} - \lambda, -c_{j} + \lambda] \space\space\space if\space(w_{j} = 0) \\ a_{j}w_{j} - c_{j} + \lambda \space\space\space\space\space\space\space\space\space\space if\space(w_{j} > 0) \end{cases} = ajwjcjλ           if (wj<0)[cjλ,cj+λ]   if (wj=0)ajwjcj+λ          if (wj>0) 
   ∙ \bullet 根据解条件: 0 ∈ ∂ w j J ( w ) 0 \in \partial_{w_{j}}J(\mathbf w) 0wjJ(w),令上式为0可得 w ^ j ( c j ) = { ( c j + λ ) / a j      i f ( c j < − λ ) 0                        i f ( c j ∈ [ − λ , λ ] ) ( c j − λ ) / a j       i f ( c j > λ ) \hat w_{j}(c_{j}) = \begin{cases} (c_{j} + \lambda)/a_{j} \space\space \space\space if(c_{j} < -\lambda) \\0 \space\space \space\space \space\space \space\space \space\space \space\space \space\space \space\space \space\space \space\space \space\space if(c_{j} \in [-\lambda,\lambda]) \\(c_{j} - \lambda)/a_{j} \space\space\space\space\space if(c_{j} > \lambda) \end{cases} w^j(cj)= (cj+λ)/aj    if(cj<λ)0                      if(cj[λ,λ])(cjλ)/aj     if(cj>λ)
Lasso坐标轴下降算法步骤
在这里插入图片描述
   ∙ \bullet 上张PPT里的 c j c_{j} cj计算公式形式,跟前边推导出的形式不太一样,是不是这里写错了?检查过视频里的形式,好像就是写错了。
   ∙ \bullet 在上一张PPT里,老师曾讲到,如果特征与预测残差(注意:该残差的计算公式里缺少这句话里提到的那一维特征)很相关,那说明将特征加入计算预测残差(也可以理解为加入到模型里)的公式里,会引起残差较大的变化,这个时候的 w j w_{j} wj就不能为0,而弱相关时,说明将特征加入计算预测残差的公式里,不会引起残差的太大变化,这个时候就可以让 w j w_{j} wj为0。这也是L1正则能产生稀疏解的原因。字面逻辑理解,但数理逻辑应如何理解呢?在相关性弱的情况下,如果将那一维特征加入残差或模型里,会不会正好导致相关性增加呢?如果会,那说明这一维特征还是很重要,不能为0?衡量相关性的协方差公式为 C o v ( X , Y ) = E [ ( X − E ( X ) ) ∗ ( Y − E ( Y ) ) ] Cov(X,Y) = E[(X - E(X)) * (Y - E(Y))] Cov(X,Y)=E[(XE(X))(YE(Y))],其中的 E ( X ) 、 E ( Y ) E(X)、E(Y) E(X)E(Y)可以理解为均值,但计算 c j c_{j} cj公式里的相关性,却没有减去这均值,那么是否可以理解为这里相关性的基点是0?在E的计算里,需要乘以概率,但计算 c j c_{j} cj公式的相关性里也缺少乘以概率的部分,那么这是否是说,没有乘以概率,即是各自出现的概率相同,各自当作权重相同的方式去处理,也能在一定程度上代表相关性?后文有协方差及相关系数的截图。
   ∙ \bullet 根据上一段所述,特征与预测残差弱相关时,参数 w j w_{j} wj为0。从公式上来看,是当 c j ∈ [ − λ , + λ ] c_{j} \in [-\lambda, +\lambda] cj[λ,+λ]时,参数 w j w_{j} wj为0,不为0时的 c j c_{j} cj绝对值均大于 λ \lambda λ,也即是说,从公式的角度上来说, c j c_{j} cj绝对值较小时,参数为0,正好“与相关性弱时参数为0”吻合。从计算 c j c_{j} cj的公式上来看,当 λ \lambda λ较大时, w j w_{j} wj就比较容易为0,当 λ \lambda λ大到一定程度时,所有的 w w w就会都为0。前面讲正则的时候也提到过, λ \lambda λ w w w呈反比,这个现象正好与此处的现象吻合,好像当 w j w_{j} wj为负时,这个现象就不吻合了,因为从求 c j c_{j} cj的公式里看起来, λ \lambda λ是与 w j w_{j} wj的绝对值呈反比?回答:查看了过拟合的笔记, λ \lambda λ就是与 w j w_{j} wj的绝对值呈反比
   ∙ \bullet 上段提到当 λ \lambda λ大到一定值后,所有的 w w w就都会为0,那么这个值究竟时多大呢?根据老师讲解,其计算方式为:假设所有 w w w都为0,那么预测值 y ^ \hat y y^为0,那么残差就是真值 y y y,进一步相关性就应该是第j维特征值直接与真值相乘,也就是上张图片左下角的公式。在实现这样逻辑的算法里,当数据集一给定,搜索 λ \lambda λ的最大值也就确定了,sklearn里的Lasso好像就是这样的(这一段老师说的不是很好理解,所以这里用的是好像)。不理解为什么是这样计算的?根据计算公式,该最大值应该是每一维特征(每一个w)都对应一个最大值吧?根据公式中有一个max函数来看,可能确实是每一维都有一个最大值。正则不对截距项惩罚,考虑到这个问题,预测值为什么依然为0呢?截距项是否也对应一个最大值?
   ∙ \bullet 根据坐标轴下降的步骤可知,迭代过程中,并不是用上一轮的w减去一个数值得到本轮的w,而是由上一轮的w直接计算出本轮的w。
sklearn中的Lasso
sklearn.linear_model.lasso(…)
selection:选择特征权重的更新方式,可选项有:‘cyclic’(循环更新,从坐标轴1到D,再从1到D),‘random’(随即选择特征进行更新,通常收敛更快,尤其当参数tol /> 1 0 − 4 10^{-4} 104时)这说明坐标轴迭代有多种方式
在这里插入图片描述在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值