嵌入式选择

有没有可能将特征选择过程与学习器训练过程融为一体。

以前我们设计学习器是希望均方误差达到最小值----min E(x;w)

但是如果我们希望把不需要的特征变为0呢?

我们可以把

lasso回归缺点 lasso回归分析_elastic

但是这是一个NP-hard问题。(NP-HARD问题可以理解为容易算出任何一种情况的结果值,但是要计算所有结果值然后统计出最小最大值会很难。)

 

所以怎么办呢?

两个办法,办法一:

 

L2正则化

二范数是把所有权重的平方和加起来,如果维度是二就是一个圆,维度是三就是一个球。如果想二范数变小,可以把不需要的特征接近0。

我们开始推导吧。

lasso回归缺点 lasso回归分析_lasso回归缺点_02

这里解释一下怎样寻找最优w

lasso回归缺点 lasso回归分析_正则_03

从上图看,如果点在w这里。如果沿着圆的向量的方向走的话,会离开圆,约束条件就不成立了。所以只能沿着j的方向走。而-E是想着最优解的方向,如果-E的方向在j的方向有分量,则会扯着-E跟圆的方向了平行的时候停止。(就是走到那个黑色点点那里。)

因为平行,这样我们可以有如下公式:

lasso回归缺点 lasso回归分析_elastic_04

λ跟C的关系,就是λ大,C越小~

但是λ的取值也要很讲究~

lasso回归缺点 lasso回归分析_正则化_05

 

办法二:

 

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范数。

lasso回归缺点 lasso回归分析_lasso回归缺点_06

---参考

 

它的寻解过程:其实跟L2寻解过程很像,也是拉到两向量平行位置,然后会发现,其实都会拉到棱角的地方。

lasso回归缺点 lasso回归分析_lasso回归缺点_07

终于找到为什么一定会去顶点了。--摘自

https://zhuanlan.zhihu.com/p/32134351

lasso回归缺点 lasso回归分析_lasso回归缺点_08

lasso回归缺点 lasso回归分析_lasso回归缺点_09

 

 

正则化分三种类型

 

(1)特殊目标驱动正则化:比如,缩减偶次项Wq²

 

(2)为了平滑( 尽量少够到一些stochastic/deterministic noise ):例如 L1 regularizer

 

  1. 易于优化:如L2 regularizer

lasso回归缺点 lasso回归分析_elastic_10

 

 

 

然后怎样求解???

L1正则化问题的求解,可以使用近端梯度下降(Proximal Gradient Descent,简称PGD)、坐标轴下降、最小角回归法;L2正则化问题的求解,可以使用梯度下降(随机梯度下降、批量梯度下降)、牛顿法、拟牛顿法等等。

 

PGD近端梯度下降

因为L1在顶点位置是不可导的。为了解决这个问题,需要用到近端梯度求解,proximal gradient descent.

第一步:把问题f(x)进行泰勒展开

lasso回归缺点 lasso回归分析_正则化_11

这里

lasso回归缺点 lasso回归分析_elastic_12

所以

lasso回归缺点 lasso回归分析_正则化_13

 

 

 

坐标轴下降

求解步骤:

  1.给定初始点(x1,x2,...,xn)

  2.固定除xi以外其他维度的点,以xi为自变量获取最小值

  3.换个维度,重复2

每次移动都是以坐标轴的方向进行的。

 

最小角回归法

引用:

在介绍最小角回归算法前,我们需要了解两个相关算法,一个是前向选择算法(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,重复第一步。

  图示引荐如下:

lasso回归缺点 lasso回归分析_正则化_14

上图为Y在X1,X2上的分解,对应的θ即为要求解的系数。

2.前向梯度算法(Forward Stagewise)

  同前向选择方法不同的一点是,θk的取值是人为设定的,每次θk会有一个初始值设为w,

  计算残差Y‘=Y-Xk*w,再根据Y’去找相似度最大的向量Xi。

  引图如下:

lasso回归缺点 lasso回归分析_lasso回归缺点_15

如上图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足够的小,或者说所有的变量都已经取完了,算法停止。此时对应的系数θ即为最终结果。

引图如下:

lasso回归缺点 lasso回归分析_正则_16

 

L1 对应的是LASSO回归

L2对应的是ridge回归

那么L1+L2 就是elasticnet弹性网络

 

lasso回归缺点 lasso回归分析_正则化_17

 

其中的L1正则项产生稀疏模型 L2正则项产生以下几个作用:

1 消除L1正则项中选择变量个数的限制(即稀疏性)

2 产生grouping effect(对于一组相关性较强的原子,L1会在相关的变量间***随机***的选择一个来实现稀疏)

3 稳定L1正则项的路径

 

整理后的正则项:

lasso回归缺点 lasso回归分析_正则_18

elasticnet 的几何结构:

lasso回归缺点 lasso回归分析_lasso回归缺点_19

其结构有如下两个特点: 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;

lasso回归缺点 lasso回归分析_正则化_20

 

L2正则假设参数的先验分布是Gaussian分布,可以保证模型的稳定性,也就是参数的值不会太大或太小.L2范数是各参数的平方和再求平方根,我们让L2范数的正则项最小,可以使W的每个元素都很小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

lasso回归缺点 lasso回归分析_正则_21

 

L2正则化江湖人称Ridge,也称“岭回归”

 

在实际使用中,如果特征是高维稀疏的,则使用L1正则;如果特征是低维稠密的,则使用L2正则。

L2不能控制feature的“个数”,但是能防止模型overfit到某个feature上;相反L1是控制feature“个数”的,并且鼓励模型在少量几个feature上有较大的权重。

--参考