lasso的今世前身

引言
年关将至,少不了写年终总结。自己也绞尽脑汁对研读的统计文献做一个总结。我们来聊聊20年前诞生的lasso。lasso理论文章由统计学家Tibshirani, R在于1996年提出,并获得了里程碑式的影响。简单概述,lasso的目的就是选择合适的自变量。茫茫变量中怎么遇见合适的它。

此处说明下我们为什么要进行选变量这个动作?
-变量维数多并且变量之间存在相关关系,所以剔除不重要的变量,选择合适的变量成为了统计学习里面的一个重点。

传统选变量方法

(1). Cp C_p统计量
数学公式为: Cp=RSSqδ2−(n−2q) C_p=\dfrac{RSS_q} {\delta^2}-(n-2q)

(2). AIC AIC准则
数学公式为:AIC= nln(RSSq)+2q n\ln(RSS_q)+2q

(3). BIC BIC准则
数学公式: BIC=−2ln(RSSq)+ln(n)∗k BIC=-2\ln(RSS_q) + \ln(n)*k

其中 RSSq RSS_q是在该模型下的残差平方和,q是模型的变量个数。
R语言中有AIC,BIC函数。

lm1 <- lm(Fertility ~ . , data = swiss)
lm2 <- update(lm1, . ~ . -Examination)
AIC(lm1, lm2)
BIC(lm1, lm2)

注意这些规则只是刻画了用某个模型之后相对“真实模型”的信息损失【因为不知道真正的模型是什么样子,所以训练得到的所有模型都只是真实模型的一个近似模型】。

这些规则理论上是比较漂亮的,但是实际在模型选择中应用起来还是有些困难的,
(1).茫茫变量中这种枚举的方式,计算量太大,典型的NP问题。
(2).通过这种离散的方式选择变量,模型并不稳定。即数据有许变化,模型就会有所改变。
所以上述方法更适合于模型之间的比较。

岭估计

针对变量之间存在相关性,引入岭的概念,使得 XTX X^TX的均逆可得,避免病态矩阵的情况。

这有效避免了逆的问题,但是岭估计是在全体集合上进行计算,不能选择合适的子集。
在高维统计中,基于岭的惩罚会存在大量的非0变量,而且相对于其他估计方法系数偏小。
R语言中岭估计调用的函数:

lm.ridge(y ~ ., longley)
plot(lm.ridge(y ~ ., longley, lambda = seq(0,0.1,0.001)))

非负代理(Non-negative Garrote)

追溯到1993年,Breiman, L老先生提出了Non-negative Garrote方法进行选择更好的子集。这是lasso的前身。

解释:给予变量系数一定的权重,但是对于权重的和有约束。

lasso(least absolute shrinkage and selection operato)

96年Tibshirani, R在Non-negative Garrote方法的基础上,直接对于变量的系数进行L1正则化。

t t 值控制了收缩情况。tt 值越大,变量收缩较小; t t 值越小,变量收缩越大,部分变量系数变成0。所以lasso具有重要的稀疏性质。

图片展示了p=2情况下,岭估计和lasso估计的几何图解。图中我们可以发现lasso估计的置信椭球和约束菱形的交点在坐标轴上,说明另一变量系数可以为0,而岭估计交点不会出现在坐标轴上。

根据 Lagrangian对偶方法,我们将上面的函数形式转化为:

所以lasso问题是一个非线性、不可微函数优化问题,求解过程不容易。

lasso求解

FU(1998)提出shooting优化算法。Lagrangian对偶问题可以对满足KKT条件的问题用导数形式进行求解。 针对xjx_j求导:

2 xpj x_j^p xj x_j βj \beta_j+ ∑i≠j \sum_{i\not=j}2 xpj x_j^p xj x_j βj \beta_j-2 xpj x_j^p y y=-λ\lambdasign( βj \beta_j)

所以左式是 βj \beta_j的线性函数,右式是 λ \lambda的分段函数。

由图可知左式截距在- λ \lambda于 λ \lambda之间无解,位于[- ∞ \infty ,- λ \lambda]和[ λ \lambda, ∞ \infty ]两端有解。

那么 βj \beta_j的解为:

此处 S0 S_0为截距项 ∑i≠j \sum_{i\not=j}2 xpj x_j^p xj x_j βj \beta_j-2 xpj x_j^p y y。从β1\beta_1至 βp \beta_p循环,循环多次直至所有变量系数收敛。
这种方法其实就是我们在处理类似lasso及其广义lasso中常用的坐标下降算法。P. TSENG在论文中证明了其中的收敛性问题。2007年Jerome Friedman在论文中将归纳坐标下降算法在lasso、elastic net、group lasso等广义lasso中的运用情况,给出了相应的解析解表达形式。

lasso:

elastic net:

S S在这里是一个软阀值算子。


其中这里的变量xx先进行标准化处理, y^ji \hat{y}_i^{j}= β0 \beta_0+ ∑i≠j \sum_{i\not=j} xj x_j βj \beta_j。每个变量迭代算法如同上述表示,p个变量均不断循环遍历直至均收敛。

2010年Jerome Friedman的文章中拓展了2007年的工作,针对高维广义线性模型提出了更加快捷的算法,并提供了R包glmnet。
这里只介绍迭代过程中的小技巧。针对表达形式中的 1N∑Ni=1xij(yi−y^ji) \dfrac{1}{N}\sum_{i=1}^{N}x_j^i(y_i-\hat{y}_i^{j}),文章中提供了两种迭代方法。

1、原始迭代方法:

y^i \hat{y}^{i}是现在 i i观测值模型拟合值,利用现在模型的残差进行下一次迭代的计算。

2、协方差迭代:

利用内积的方式进行计算,我们需要计算每个变量与yy的内积 <xj,y> <script type="math/tex" id="MathJax-Element-229"> </script>,当有变量进入模型时我们需要计算它与其他变量之间的内积 <xj,xk> <script type="math/tex" id="MathJax-Element-230"> </script>。当 βj \beta_j改变时,我们进行一次迭代运算。

参考:

lasso的今世前身相关推荐

  1. lasso变形(一)----group lasso

    一.引言 在现实生活中,协变量之间存在一些组结构,那么在进行变量选择时都应该同时选入模型中. 例1:在分类数据中,我们通常处理方式是将其变成哑变量.如地域:江苏.浙江.上海.这时需要设置2个哑变量(n ...

  2. 余文波:区块链在九大领域的应用

    文章目录 前言 金融行业 支付 清算与结算 保险 供应链管理 知识产权 产品的防伪溯源 医疗数据的管理 身份管理 公共管理 审计 物联网.AI大数据的数据安全 结语 今天一番给大家推荐一个讲座录音,给 ...

  3. 计算机主板外频,电脑装机小知识,了解外频和倍频的前身今世,掌握超频进阶小技巧...

    进阶的超频小知识分享 喜欢超频的小伙伴一定对外频和倍频这两个概念并不陌生,CPU频率=外频X倍频.这些内容我在前面的超频小分享中已经基本谈到过. 但是你知道吗?在开始的时候,其实CPU频率和外频是一样 ...

  4. 一文读懂线性回归、岭回归和Lasso回归

    (图片由AI科技大本营付费下载自视觉中国) 作者 | 文杰 编辑 | yuquanle 本文介绍线性回归模型,从梯度下降和最小二乘的角度来求解线性回归问题,以概率的方式解释了线性回归为什么采用平方损失 ...

  5. R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数及可视化、lasso回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合lasso回归模型实战:lasso回归模型的模型系数(lasso regression coefficients)及可视化.lasso回归模型分类评估计算(混淆矩阵.accura ...

  6. Python使用sklearn构建lasso回归模型并指定样本权重:即构建带样本权重(sample_weight)的回归模型

    Python使用sklearn构建lasso回归模型并指定样本权重:即构建带样本权重(sample_weight)的回归模型 目录

  7. R语言基于LASSO进行特征筛选(feature selection)

    R语言基于LASSO进行特征筛选(feature selection) 对一个学习任务来说,给定属性集,有些属性很有用,另一些则可能没什么用.这里的属性即称为"特征"(featur ...

  8. R构建lasso回归模型并获得最佳正则化系数

    R构建lasso回归模型并获得最佳正则化系数 目录 R构建lasso回归模型并获得最佳正则化系数 数据加载 拟合LASSO回归模型

  9. python包Yellowbrick可视化lasso模型的最佳alpha值及误测误差

    Yellowbrick可视化lasso模型的最佳alpha值及误测误差 目录 Yellowbrick可视化lasso模型的最佳alpha值及误测误差 最佳alpha值选择

最新文章

  1. 计算机考研我该如何准备,计算机考研该如何准备呢-考研初试
  2. java实现随机验证码的图片
  3. 做python自动化得时候怎么添加断言_在编写Web自动化测试用例的时候,如何写断言使新手不解,严格意义上来讲,没有断言的自动化脚本不能叫测试用例。就像功能测试一样,当测试人员做了一些操作...
  4. Android 条码扫描程序源码
  5. SAP WebIDE登录时,有时会发生超时现象
  6. 通用时区:你应该知道的数据库时区知识
  7. 2021牛气新年素材模板,你真的不来看一看吗?
  8. 张一鸣在字节跳动7周年庆典上的演讲
  9. MATLAB从入门到精通-Matlab读取fnl.grib2文件
  10. AWT绘图工具Graphics
  11. 【数据结构】字符串 模式匹配算法的理解与实现 Brute Force算法(BF算法)与KMP算法 (C与C++分别实现)
  12. redis 底层数据结构详解
  13. 【练习】面向对象系列(002)——双色球
  14. 面试时谈得很好,事后没有电话给通知,这个时候应该怎么办?
  15. 三年经验前端社招——众安保险
  16. 计算机 屏幕卡住,电脑屏幕突然卡死应该怎么办?
  17. 香港特首林郑月娥:希望阿里巴巴能够回香港上市
  18. Chrome谷歌浏览器最小化和页面遮挡后JS代码不稳定和功能失效的解决思路
  19. AI算法工程师岗位职责解析
  20. Android 贝塞尔曲线解析

热门文章

  1. HTML5标签canvas制作平面图
  2. 周杰伦 jay《最长的电影》mp3 下载/试听/MV/在线播放
  3. 泰语7个元音变形_泰语元音的三种拼合方式
  4. Node安装教程(超详细图解)
  5. 常用javascript大全
  6. thymeleaf th:each根据整数循环
  7. K8S -- kubernetes集群权限之Cluster、 User和Context
  8. 张小龙近4年微信公开课演讲视频
  9. 电影推荐算法---HHR计划
  10. python可视化框架英文论文_使用Python打造 基于Spacy的在线英文依存语法可视化器v0...