1.1.3套索
套索回归是一个稀疏系数的线性回归。当参数值较少的时候,它很有用,有效的减少了给定方案所需要的变量的数量。由于这个原因,套索和变量是压缩感测领域的基础。在这种情况下,它可以恢复额外的非零权重(压缩感测,以下是它的简介)
这个例子展示了一组平行投影的图形重建,从不同角度获取。例如,这组数据是从CT中获得的。
没有事先样本的相关信息,重构图片所需的投影数量是图像的线性尺寸I的量级(以像素为单位)。为了简单起见,这里考虑一个稀疏的图像,只有对象边界上的像素具有非零值。这些数据可以对应于细胞材料。特别注意,大多数图像在不同的基础上是稀疏的,例如Haar wavelets(这个不知道是什么)。只有1/7的预测被获得,因此有必要使用可获得的样本(稀疏样本)。这是压缩感测的一个例子。
CT操作是线性转化。另外除了对应于线性回归的原始数据外,我们还要惩罚图像的L1范数用来说明其稀疏性。由此产生的优化问题被称为套索,我们使用类sklearn.linear_model.Lasso,它使用坐标下降算法。重要的是,这个实现在稀疏矩阵上比在这里使用的投影在计算上更加的有效。
具有L1惩罚的重建给出了零误差的结果(这里的所有像素点被标记为0或者1),即使噪音也被添加在了投影里。相比之下,L2的惩罚(sklearn.linear_model.Ridge)会产生大量的标记错误,与L1惩罚不同,L1可以重建的图像上观察到重要的投影,特别要注意的是分布在角落的像素的原型图像,比圆盘的中心的贡献值更少。
代码的链接在上面。
数学上,它由在正规化器训练过的线性模型组成,最小的目标函数是:
因此,套索估计解决了最小二乘法惩罚的最小化,其中是常数是参数的向量的范数。
套索采用坐标下账作为算法来拟合系数。有另外一种实现的方式,参考最小角度回归,在之后的翻译中会涉及到。
from sklearn import linear_model
reg=linear_model.Lasso(alpha=0.1)
print(reg.fit([[0,0],[1,1]],[0,1]))#Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,normalize=False, positive=False, precompute=False, random_state=None,selection='cyclic', tol=0.0001, warm_start=False)
print(reg.predict([[1,1]]))#[0.8]
同样函数lasso_path也可以用于较低的任务,它可以沿着可能值的完整路径计算系数。
例如
估计生成的稀疏信号上的lasso和Elastic-Net回归模型受到了噪音的影响。估计的系数和实际的比较
代码的链接:我是链接
注意使用套索功能选择
由于套索回归产生稀疏模型,因此可以用它来执行特征选择,之后会涉及到。
1.1.3.1设置正则化参数
alpha参数控制系数的稀疏程度。
1.1.3.1.1使用交叉验证
scikit-learn通过交叉验证公开了设置Lasso的alpha参数的对象:LassoCV和LassoLarsCV。LassoLarsCV基于下面解释的最小角度回归算法。
对于许多共线回归的高纬数据集,LassoCV通常是首先方案。但是LassoLarsCV具有更多探索更多相关alpha参数值的优势,就算样本数量特征与特征数量相比非常小,也比LassCV的速度快
1.1.3.1.2.基于信息标准的模型选择
另外,估计器LassoLarsIC建议使用Akaike信息准则(AIC)和贝叶斯信息准则(BIC)。这是一个更划算的代替方法,用来找到最佳的alpha值,因为在使用k-fold交叉验证时,正则化只用计算一次而不是k+1次。然而,这样的方法需要对解决方案的自由度进行适当的估计,用大样本(渐进结果)导出的,假设模型是正确的,数据实际上是由改模型生成的。但是当问题严重时,它们会GG(当样本的特征大于样本数的时候)。
套索模型选择:交叉验证/AIC/BIC
使用Akaike信息准则(AIC),贝叶斯准则(BIC)以及交叉验证来对Lasso估计器的正则化参数alpha进行最优值选择。
使用LassoLarsIC的结果基于AIC/BIC标准
基于信息准则的模型选择非常的快速,这样的方法需要对解决方案的自由度进行适当的估计,用大样本(渐进结果)导出的,假设模型是正确的,数据实际上是由改模型生成的,但是当问题严重时,它们会GG(当样本的特征大于样本数的时候)。
对于交叉验证,我们对2种算法使用20倍计算Lasso路径:由LassoCV类实现的坐标下降和由LassoLarsCV类实现的Lars(最小角度回归)。 两种算法都给出了大致相同的结果。 它们在执行速度和数值错误的来源方面有所不同。
Lars仅为路径中的每个扭结计算路径解决方案。 因此,当只有很少的扭结时效率非常高,如果功能或样本很少,则是这种情况。 此外,它能够计算完整路径而不设置任何元参数。 相反,坐标下降计算预先指定的网格上的路径点(这里我们使用默认值)。 因此,如果网格点的数量小于路径中的扭结数量,则效率更高。 如果特征的数量非常大并且有足够的样本来选择大量数据,那么这种策略可能会很有趣。 就数值误差而言,对于高度相关的变量,Lars将积累更多误差,而坐标下降算法将仅采样网格上的路径。
请注意alpha的最优值如何随着每次折叠而变化。 这说明了为什么在尝试评估通过交叉验证选择参数的方法的性能时,为什么需要嵌套交叉验证:对于看不见的数据,这种参数选择可能不是最佳的。