Lasso回归模型-参数求解
由之前的文章可知,目标函数为了防止过拟合或者限制参数,一般会加L1正则化和L2正则化,下面来介绍关于L1正则,Lasso正则,因为Lasso是可以进行特征选择降维的功能,L1和L2正则https://www.jianshu.com/p/1960e2f0215f
有讲降维的讲解,这里就不展开讲解了。
对于目标函数,首先看是否是Smoth还是NON-Smoth,如果是Smoth函数,则该函数可导,那么可以用梯度下降法或者adam求解最优值,如果是NON-Smoth函数,那么该函数不可导,求解最优值没有那么方便。由于Lasso正则是各个参数绝对值之和,导致含有Lasso正则的目标函数是NON-Smoth不平滑的。也就是说,梯度下降法等优化算法对它统统失效了。
那么我们该如何求解参数的最优解呢?接下来介绍全新的求极值解法:坐标轴下降法(coordinate descent)
坐标轴下降法(coordinate descent)(解决L1正则化不可导的问题)
坐标轴下降法顾名思义,是沿着坐标轴的方向去下降,这和梯度下降不同。梯度下降是沿着梯度的负方向下降。不过梯度下降和坐标轴下降的共性就都是迭代法,通过启发式的方式一步步迭代求解函数的最小值
坐标轴下降法目标函数是minimize 函数g(w) =g(w1,w2,w3.....wn)
坐标轴下降法的数学依据主要是如下的这个结论:
一个可微的凸函数J(θ),其中θ是nX1的向量,即有n个维度。如果在某一点θ',使得J(θ)在每一个坐标轴(i=1,2,..,n)上都是最小值,那么就是一个全局的最小值。 于是优化目标就是在θ的n个坐标轴上(或者说向量的方向上)对损失函数做迭代的下降,当所有的坐标轴上的都达到收敛时,损失函数最小,此时的θ即为要求的结果。
也可以这样子理解“如果在某一点θ',使得J(θ)在每一个坐标轴(i=1,2,..,n)上都是最小值,那么就是一个全局的最小值”:
针对g(w) =g(w1,w2,w3.....wn)函数而言:
①t=1时刻,对w2的求导,其他参数都为常数,所以当W2为变量时,函数最小值:
w'2=argmin w2 g(w2)
②t=2时刻,对w10的求导,其他参数都为常数,所以当W10为变量时,函数最小值:
w'10=argmin w10 g(w10)
如此循环下去。
然后得到第一轮全部的w值,继续第二轮第三轮,直到第n和n-1轮w的值变化足够小,那第n轮的求出来的参数值是最终结果。
对以上步骤进行官方的表述:
也就是具体的算法过程:
image.png
那么如何选择下一个候选w呢:
①依次选择
②随机选择random
坐标轴下降法跟梯度下降法的区别:不需要设置步长
针对lasso的目标函数,坐标轴下降法会收敛,算出结果。
求解w的过程
由坐标轴下降法可知,Lasso目标函数是
问题:|Wj|对Wj的梯度是多少:
那对第j个W进行求导,可表达:
那么由上式求导公式可知,求导后的wj的值1或者-1或者0
坐标轴梯度下降法求Lasso目标函数的解
那么用损失函数是线性回归加了L1正则去求解过程:
image.png
image.png
所以根据上述可知道,为什么L1正则可以筛选特征,因为大部分的值都是为0,可以看出,如果lamda越大,那么对W的限制越大,更多特征是为0的。
还有其他的关于求解Lasso的优化算法有LARS,因为不是很常用,所以就不展开讨论了,那么感兴趣的可以去看相应的论文讲解。