矩阵表示多元线性回归

Y=BX+a

Q(B)=(Y-BX)T(Y-BX)达到最小时的B值。

也即是残差平方和最小时。B(Bi)的值。可以证明B的最小二乘估计=(XTX)-1XTy

其中(XTX)-1为广义逆。

如果X存在线性相关的话,XTX没有逆:

1.出现多重共线性2.当n<p,变量比样本多时,出现奇异

岭回归(Ridge Regression)---------共线性问题

先对数据做标准化

B(K)=(XTX+kI)XTY为B的岭回归估计,其中K为岭参数,I为单位矩阵,KI为扰动。

岭迹图帮助我们发现多重共线性,以及取那个K值。在图中,k很小时,B很大,k稍微增大,B迅速变小,肯定有多重共线性。多重共线性的岭迹图一般呈喇叭口状。选喇叭附近的k值。

岭迹图可以筛选变量,有个变量的系数长期很接近于0,可以剔除这些变量。

选择k或者lambda使得:

(1)各岭回归系数的岭基本稳定

(2)正负直接穿梭时,不合乎实际意义

(3)残差平方和增大不太多。

用R语言进行岭回归:

lm.ridge(y~.,longley)

R中的ridge包(需要下载安装)

LASSO回归

(Least absolute shrinkage and selectionator operaterator)

最小的绝对收缩通过构造一个一阶惩罚函数获得一个精炼的模型,通过最终确定一些指标(变量)的系数为0(岭回归估计系数等于0的机会微乎其微),解释力很强。擅长处理具有多重共线性的数据,与岭回归一样是有偏估计。

弹性网

LAR(最小角回归Least Angel Regression)

类似于逐步向前回归的形式

R语言中有lars的包

各个算法的区别

一、引 言

1、lasso族的功效

在建立模型之初,为了尽量减小因缺少重要自变量而出现的模型偏差,通常会选择尽可能多的自变量。然而,建模过程需要寻找对因变量最具有强解释力的自变量集合,也就是通过自变量选择(指标选择、字段选择)来提高模型的解释性和预测精度。指标选择在统计建模过程中是极其重要的问题。Lasso算法则是一种能够实现指标集合精简的估计方法。

Lasso(Least absolute shrinkage and selection operator, Tibshirani(1996))方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。

Lasso 的基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0 的回归系数,得到可以解释的模型。R的Lars 算法的软件包提供了Lasso编程,我们根据模型改进的需要,可以给出Lasso算法,并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。[]

lasso estimate具有shrinkage和selection两种功能,shrinkage这个不用多讲,本科期间学过回归分析的同学应该都知道岭估计会有shrinkage的功效,lasso也同样。关于selection功能,Tibshirani提出,当t值小到一定程度的时候,lasso estimate会使得某些回归系数的估值是0,这确实是起到了变量选择的作用。当t不断增大时,选入回归模型的变量会逐渐增多,当t增大到某个值时,所有变量都入选了回归模型,这个时候得到的回归模型的系数是通常意义下的最小二乘估计。从这个角度上来看,lasso也可以看做是一种逐步回归的过程。[]

模型选择本质上是寻求模型稀疏表达的过程,而这种过程可以通过优化一个“损失”十“惩罚”的函数问题来完成。

2、与普通最小二乘法的区别

使用最小二乘法拟合的普通线性回归是数据建模的基本方法。其建模要点在于误差项一般要求独立同分布(常假定为正态)零均值。t检验用来检验拟合的模型系数的显著性,F检验用来检验模型的显著性(方差分析)。如果正态性不成立,t检验和F检验就没有意义。

对较复杂的数据建模(比如文本分类,图像去噪或者基因组研究)的时候,普通线性回归会有一些问题:

(1)预测精度的问题 如果响应变量和预测变量之间有比较明显的线性关系,最小二乘回归会有很小的偏倚,特别是如果观测数量n远大于预测变量p时,最小二乘回归也会有较小的方差。但是如果n和p比较接近,则容易产生过拟合;如果n

(2)模型解释能力的问题 包括在一个多元线性回归模型里的很多变量可能是和响应变量无关的;也有可能产生多重共线性的现象:即多个预测变量之间明显相关。这些情况都会增加模型的复杂程度,削弱模型的解释能力。这时候需要进行变量选择(特征选择)。

针对OLS的问题,在变量选择方面有三种扩展的方法: (1)子集选择 这是传统的方法,包括逐步回归和最优子集法等,对可能的部分子集拟合线性模型,利用判别准则 (如AIC,BIC,Cp,调整R2 等)决定最优的模型。 (2)收缩方法(shrinkage method) 收缩方法又称为正则化(regularization)。主要是岭回归(ridge regression)和lasso回归。通过对最小二乘估计加入罚约束,使某些系数的估计为0。 (3)维数缩减 主成分回归(PCR)和偏最小二乘回归(PLS)的方法。把p个预测变量投影到m维空间(m

3、岭回归、lasso回归和elastic net三种正则化方法[]

(1)岭回归[]

最小二乘估计是最小化残差平方和(RSS):

岭回归在最小化RSS的计算里加入了一个收缩惩罚项(正则化的l2范数)

这个惩罚项中lambda大于等于0,是个调整参数。各个待估系数越小则惩罚项越小,因此惩罚项的加入有利于缩减待估参数接近于0。重点在于lambda的确定,可以使用交叉验证或者Cp准则。

岭回归优于最小二乘回归的原因在于方差-偏倚选择。随着lambda的增大,模型方差减小而偏倚(轻微的)增加。

岭回归的一个缺点:在建模时,同时引入p个预测变量,罚约束项可以收缩这些预测变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大)。这个缺点对于模型精度影响不大,但给模型的解释造成了困难。这个缺点可以由lasso来克服。(所以岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

(2)lasso

lasso是在RSS最小化的计算中加入一个l1范数作为罚约束:

l1范数的好处是当lambda充分大时可以把某些待估系数精确地收缩到0。

关于岭回归和lasso,在[3]里有一张图可以直观的比较([3]的第三章是个关于本文主题特别好的参考):[]

关于岭回归和lasso当然也可以把它们看做一个以RSS为目标函数,以惩罚项为约束的优化问题。

(3)调整参数lambda的确定

交叉验证法。对lambda的格点值,进行交叉验证,选取交叉验证误差最小的lambda值。最后,按照得到的lambda值,用全部数据重新拟合模型即可。

(4)elastic net

elastic net融合了l1范数和l2范数两种正则化的方法,上面的岭回归和lasso回归都可以看做它的特例:

elastic net对于p远大于n,或者严重的多重共线性情况有明显的效果。 对于elastic net,当alpha接近1时,elastic net表现很接近lasso,但去掉了由极端相关引起的退化化或者奇怪的表现。一般来说,elastic net是岭回归和lasso的很好的折中,当alpha从0变化到1,目标函数的稀疏解(系数为0的情况)也从0单调增加到lasso的稀疏解。

LASSO的进一步扩展是和岭回归相结合,形成Elastic Net方法。[]

(5)岭回归与lasso算法[]

这两种方法的共同点在于,将解释变量的系数加入到Cost Function中,并对其进行最小化,本质上是对过多的参数实施了惩罚。而两种方法的区别在于惩罚函数不同。但这种微小的区别却使LASSO有很多优良的特质(可以同时选择和缩减参数)。下面的公式就是在线性模型中两种方法所对应的目标函数:

公式中的lambda是重要的设置参数,它控制了惩罚的严厉程度,如果设置得过大,那么最后的模型参数均将趋于0,形成拟合不足。如果设置得过小,又会形成拟合过度。所以lambda的取值一般需要通过交叉检验来确定。

岭回归的一个缺点:在建模时,同时引入p个预测变量,罚约束项可以收缩这些预测变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大)。这个缺点对于模型精度影响不大,但给模型的解释造成了困难。这个缺点可以由lasso来克服。(所以岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

4、LARS算法对lasso的贡献[]

LAR把Lasso (L1-norm regularization)和Boosting真正的联系起来,如同打通了任督二脉。LAR结束了一个晦涩的时代:在LAR之前,有关Sparsity的模型几乎都是一个黑箱,它们的数学性质(更不要谈古典的几何性质了)几乎都是缺失。

近年来兴起的Compressed sensing(Candes & Tao, Donoho)也与LAR一脉相承,只是更加强调L1-norm regularization其他方面的数学性质,比如Exact Recovery。我觉得这是一个问题的多个方面,Lasso关注的是构建模型的准确性,Compressed sensing关注的是变量选择的准确性。

5、变量选择

当我们使用数据训练分类器的时候,很重要的一点就是要在过度拟合与拟合不足之间达成一个平衡。防止过度拟合的一种方法就是对模型的复杂度进行约束。模型中用到解释变量的个数是模型复杂度的一种体现。控制解释变量个数有很多方法,例如变量选择(feature selection),即用filter或wrapper方法提取解释变量的最佳子集。或是进行变量构造(feature construction),即将原始变量进行某种映射或转换,如主成分方法和因子分析。变量选择的方法是比较“硬”的方法,变量要么进入模型,要么不进入模型,只有0-1两种选择。但也有“软”的方法,也就是Regularization类方法,例如岭回归(Ridge Regression)和套索方法(LASSO:least absolute shrinkage and selection operator)。

6、展望

将Lasso应用于时间序列。将Lasso思想应用于AR(p)、ARMA(p)等模型,利用Lasso方法对AR(p)、ARMA(p)等模型中的变量选择,并给出具体的算法。

将Lasso方法应用到高维图形的判别与选择以及应用于线性模型的变量选择中,以提高模型选择的准确性。

二、文献综述

在做LASSO,他们都是大牛,你可以直接GOOGLE他们的主页,看他们在这块发了什么文章。yu bin, zhu ji, zhang tong, hui zou, yuan ming, Nicolai Meinshausen, Peter Bühlmann, Martin J. Wainwright, jianqing fan, Liza Levina, Peter Bickel,Tibshirani(Lasso的提出者)。

三、R语言包——glmnet和lars

1、glmnet包与算法

glmnet包是关于Lasso and elastic-net regularized generalized linear models。 作者是Friedman, J., Hastie, T. and Tibshirani, R这三位。

这个包采用的算法是循环坐标下降法(cyclical coordinate descent),处理的模型包括 linear regression,logistic and multinomial regression models, poisson regression 和 the Cox model,用到的正则化方法就是l1范数(lasso)、l2范数(岭回归)和它们的混合 (elastic net)。

坐标下降法是关于lasso的一种快速计算方法(是目前关于lasso最快的计算方法),其基本要点为: 对每一个参数在保持其它参数固定的情况下进行优化,循环,直到系数稳定为止。这个计算是在lambda的格点值上进行的。 关于这个算法见[5][]。 关于glmnet包的细节可参考[4],这篇文献同时也是关于lasso的一个不错的文献导读。[]

cv.glmnet函数利用交叉检验,分别用不同的lambda值来观察模型误差。

左边线对应最佳lamda,右侧线对应一个SE内最佳模型。上图横轴是lambda值的对数,纵轴是模型误差。从上面的图可以看到,最佳的lambda取值就是在红色曲线的最低点处,对应着变量个数是11个。它右侧的另一条虚线是在其一倍SE内的更简洁的模型(变量个数为9)。由于这两个lambda对应的模型误差变化不大,而我们更偏好于简洁的模型,选择对应的lambda值为0.025。

回归,岭回归。LASSO回归相关推荐

  1. 岭回归和lasso回归_正则化(2):与岭回归相似的 Lasso 回归

    Lasso回归与ridge回归有很多相似之处,但是二者之间有一些显著的区别.如果你不太清楚岭回归,请参考前一章节推文:通俗易懂的岭回归. 1 lasso回归 与 ridge 回归的相同点 1.1 la ...

  2. R语言(三)——多重共线性情况(岭回归、[适应性]lasso回归、偏最小二乘回归)

    目录 一.数据 二.共线性检查 三.岭回归 四.lasso回归 五.适应性lasso回归 六.偏最小二乘回归 一.数据 糖尿病数据(diabetes.csv)包含在R程序包的lars中,是关于糖尿病的 ...

  3. 【读书笔记】数据出现多重共线性情况:岭回归,lasso回归,适应性lasso回归,偏最小二乘回归

    # 2.2.3 数据出现多重共线性情况:岭回归,lasso回归,适应性lasso回归,偏最小二乘回归 # 有一些关于多重共线性的度量,其中之一是容忍度(tolerance)或(等价的)方差膨胀因子(v ...

  4. 岭回归(ridge回归)、lasso回归、ElasticNet回归

    作者:离散梦 欢迎大家给出宝贵的建议! 岭回归(ridge回归).lasso回归.ElasticNet回归 为了防止过拟合的现象出现,引入以上优化方法.(正则化) 岭回归就是引入L2正则化项 lass ...

  5. [机器学习-原理篇]学习之线性回归、岭回归、Lasso回归

    线性回归.岭回归.Lasso回归 前言 一,线性回归--最小二乘 二,Lasso回归 三,岭回归 四, Lasso回归和岭回归的同和异 五, 为什么 lasso 更容易使部分权重变为 0 而 ridg ...

  6. 机器学习总结(一):线性回归、岭回归、Lasso回归

    机器学习总结(一):线性回归.岭回归.Lasso回归 参考网址:https://blog.csdn.net/hzw19920329/article/details/77200475 主要是岭回归(脊回 ...

  7. 线性回归、lasso回归、岭回归以及弹性网络的系统解释

    线性回归.lasso回归.岭回归以及弹性网络的系统解释 声明 背景介绍 概述 线性回归模型函数及损失函数 线性回归算法 多项式回归(线性回归的推广) 广义线性回归(线性回归的推广) 岭回归(Ridge ...

  8. 解读正则化 LASSO回归 岭回归

    在机器学习的学习过程中,我们会经常听到正则化这个词,在开始入门学习的时候还经常与标准化混淆.到底什么是正则化呢?本篇我们将由浅入深详细解读什么是正则化,以及LASSO回归和岭回归的介绍. 在正式开始之 ...

  9. 基于Python的岭回归与LASSO回归模型介绍及实践

    基于Python的岭回归与LASSO回归模型介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 岭 ...

  10. 机器学习——线性回归衍生(过拟合、正则化、岭回归和LASSO回归)

    过拟合.正则化.岭回归.LASSO回归 为什么会出现线性回归的衍生方法--正规方程法的局限 过拟合 模型复杂度 过拟合的概念 防止过拟合的办法 正则化 岭回归(Ridge Regression) 1. ...

最新文章

  1. python 中cookie_详解Python中的Cookie模块使用
  2. 不妨对苹果保持一点宽容
  3. [cocoapods]cocoapods问题解决
  4. Debian8.8解决双系统访问windows磁盘时,有时能成功挂载,有时不能成功挂载的情况...
  5. 70 Zabbix自定义监控项
  6. 倾斜模型精细化处理_推荐一款好用的倾斜摄影精细化单体建模软件——OSketch...
  7. epoll反应堆模型代码
  8. (pytorch-深度学习系列)正向传播与反向传播-学习笔记
  9. 途牛 “特产频道”上线 深化目的地服务网络
  10. win7修复计算机无法修复工具栏,WIN7多系统启动引导修复工具BCDautofix v1.3
  11. 我的编程之路——VB篇
  12. 计算机网络故障检测,计算机网络故障处理
  13. 读研规划,准研究生们看看哦!!!!!!!!!!!!!
  14. 计算机四级大一能考吗,大一新生不让报考四六级?凭什么啊!!!
  15. ubuntu服务器配置php,Ubuntu下配置PHP服务器
  16. python文字处理dummy_python – 使用’dummy’变量创建数学函数,以便稍后进行评估...
  17. 老外网络语言缩写总结
  18. ToB产品第一性原理的思考
  19. python微博评论情感分析_用python对鹿晗、关晓彤微博进行情感分析
  20. 制作自己的微信小程序要怎么做?

热门文章

  1. 【转帖】POV LED基于51单片机的旋转LED电子钟
  2. eyoucms flink 友情链接
  3. 通用mapper的使用
  4. python开源web项目-30 个惊艳的Python开源项目
  5. wordpress创建_在WordPress网站上创建论坛的利弊
  6. html超链接点不了_HTML制作超级链接点下去没反应
  7. 坐标系转换--二维四参数大地坐标系转换模型变换关系理解
  8. 读书笔记:python+vue实战派
  9. 推荐一些vue实战项目
  10. 实锤!长沙智博美术培训学校