嵌入式选择
有没有可能将特征选择过程与学习器训练过程融为一体。
以前我们设计学习器是希望均方误差达到最小值----min E(x;w)
但是如果我们希望把不需要的特征变为0呢?
我们可以把
但是这是一个NP-hard问题。(NP-HARD问题可以理解为容易算出任何一种情况的结果值,但是要计算所有结果值然后统计出最小最大值会很难。)
L2正则化
二范数是把所有权重的平方和加起来,如果维度是二就是一个圆,维度是三就是一个球。如果想二范数变小,可以把不需要的特征接近0。
我们开始推导吧。
这里解释一下怎样寻找最优w
从上图看,如果点在w这里。如果沿着圆的向量的方向走的话,会离开圆,约束条件就不成立了。所以只能沿着j的方向走。而-E是想着最优解的方向,如果-E的方向在j的方向有分量,则会扯着-E跟圆的方向了平行的时候停止。(就是走到那个黑色点点那里。)
因为平行,这样我们可以有如下公式:
λ跟C的关系,就是λ大,C越小~
但是λ的取值也要很讲究~
办法二:
L1正则化
我们先聊聊L0和L1的关系。
L0从直观上看,利用非零参数的个数,可以很好的来选择特征,实现特征稀疏的效果,具体操作时选择参数非零的特征即可。但因为L0正则化很难求解,是个NP难问题,因此一般采用L1正则化。L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果。
L1范数是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。现在我们来分析下这个价值一个亿的问题:为什么L1范数会使权值稀疏?有人可能会这样给你回答“它是L0范数的最优凸近似”。实际上,还存在一个更美的回答:任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。这说是这么说,W的L1范数是绝对值,|w|在w=0处是不可微,但这还是不够直观。这里因为我们需要和L2范数进行对比分析。所以关于L1范数的直观理解,请待会看看第二节。
对了,上面还有一个问题:既然L0可以实现稀疏,为什么不用L0,而要用L1呢?个人理解一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。
---参考https://blog.csdn.net/zouxy09/article/details/24971995
它的寻解过程:其实跟L2寻解过程很像,也是拉到两向量平行位置,然后会发现,其实都会拉到棱角的地方。
终于找到为什么一定会去顶点了。--摘自
https://zhuanlan.zhihu.com/p/32134351
正则化分三种类型
(1)特殊目标驱动正则化:比如,缩减偶次项Wq²
(2)为了平滑( 尽量少够到一些stochastic/deterministic noise ):例如 L1 regularizer
L1正则化问题的求解,可以使用近端梯度下降(Proximal Gradient Descent,简称PGD)、坐标轴下降、最小角回归法;L2正则化问题的求解,可以使用梯度下降(随机梯度下降、批量梯度下降)、牛顿法、拟牛顿法等等。
PGD近端梯度下降
因为L1在顶点位置是不可导的。为了解决这个问题,需要用到近端梯度求解,proximal gradient descent.
第一步:把问题f(x)进行泰勒展开
这里
所以
坐标轴下降
求解步骤:
1.给定初始点(x1,x2,...,xn)
2.固定除xi以外其他维度的点,以xi为自变量获取最小值
3.换个维度,重复2
每次移动都是以坐标轴的方向进行的。
最小角回归法
引用:http://www.cnblogs.com/pinard/p/6018889.html
在介绍最小角回归算法前,我们需要了解两个相关算法,一个是前向选择算法(Foward Selection),一个是前向梯度算法(Forward Statgewise)。
1.前向选择算法(Foward Selection)
假设有Y=Xθ,X为m*n的矩阵,Y为m*1的矩阵,我们要找到一个θ,最大程度的拟合输入和输出。
这里把X看成n个m*1的的向量Xi。
第一步:选择和目标Y最为接近的Xi(余弦相似度),记为Xk。
过Y向Xk向量做投影,投影的长度便作为Xk对应的系数,记为θk。
第二步:定义(残差)Y‘=Y-Xk*θK
若Y‘把所有的自变量都投影完毕,或者Y'为0,结束算法。
否则投影后的Y‘被设为新的目标Y,重复第一步。
图示引荐如下:
上图为Y在X1,X2上的分解,对应的θ即为要求解的系数。
2.前向梯度算法(Forward Stagewise)
同前向选择方法不同的一点是,θk的取值是人为设定的,每次θk会有一个初始值设为w,
计算残差Y‘=Y-Xk*w,再根据Y’去找相似度最大的向量Xi。
引图如下:
如上图Y沿着x1方向,行走εx1时,就会停下来计算残差,再判断究竟与x1的相似度还是与x2的相似度大,然后继续走下去。
3.最小角回归(Least Angle Regression, LARS)算法
首先,还是找到与因变量Y最接近或者相关度最高的自变量Xk,使用类似于前向梯度算法中的残差计算方法,得到新的目标Y',此时不用和前向梯度算法一样小步小步的走。而是直接向前走直到出现一个Xt,使得Xt和Y'的相关度和Xk与Yyes的相关度是一样的,此时残差Y'就在Xt和Xk的角平分线方向上,此时我们开始沿着这个残差角平分线走,直到出现第三个特征Xp和Yyes的相关度足够大的时候,即Xp到当前残差Yyes的相关度和θt,θk与Yyes的一样。将其也叫入到Y的逼近特征集合中,并用Y的逼近特征集合的共同角分线,作为新的逼近方向。以此循环,直到Yyes足够的小,或者说所有的变量都已经取完了,算法停止。此时对应的系数θ即为最终结果。
引图如下:
L1 对应的是LASSO回归
L2对应的是ridge回归
那么L1+L2 就是elasticnet弹性网络
其中的L1正则项产生稀疏模型 L2正则项产生以下几个作用:
1 消除L1正则项中选择变量个数的限制(即稀疏性)
2 产生grouping effect(对于一组相关性较强的原子,L1会在相关的变量间***随机***的选择一个来实现稀疏)
3 稳定L1正则项的路径
整理后的正则项:
elasticnet 的几何结构:
其结构有如下两个特点: 1 在顶点具有奇异性(稀疏性的必要条件) 2 严格的凸边缘(凸效应的强度随着α而变化(产生grouping效应)) elastic net总结: 1 弹性网络同时进行正则化与变量选择 2 能够进行grouped selection 3 当p>>n,或者严重的多重共线性情况时,效果明显 4 当α接近0时,elastic net表现接近lasso,但去掉了由极端相关引起的退化或者奇怪的表现 5 当α从1变化到0时,目标函数的稀疏解(系数为0的情况)从0增加到lasso的稀疏解
L1 L2区别总结:
加入正则项是为了避免过拟合,或解进行某种约束,需要解保持某种特性
L1正则假设参数的先验分布是Laplace分布,可以保证模型的稀疏性,也就是某些参数等于0,L1正则化是L0正则化的最优凸近似,比L0容易求解,并且也可以实现稀疏的效果,
L1也称Lasso;
L2正则假设参数的先验分布是Gaussian分布,可以保证模型的稳定性,也就是参数的值不会太大或太小.L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。
L2正则化江湖人称Ridge,也称“岭回归”
在实际使用中,如果特征是高维稀疏的,则使用L1正则;如果特征是低维稠密的,则使用L2正则。
L2不能控制feature的“个数”,但是能防止模型overfit到某个feature上;相反L1是控制feature“个数”的,并且鼓励模型在少量几个feature上有较大的权重。
--参考https://blog.csdn.net/liyuan123zhouhui/article/details/51882926