LARS 最小角回归算法简介
最近开始看Elements of Statistical Learning, 今天的内容是线性模型(第三章。。这本书东西非常多,不知道何年何月才能读完了),主要是在看变量选择。感觉变量选择这一块领域非常有意思,而大三那门回归分析只是学了一些皮毛而已。过两天有空,记一些ESL这本书里讲的各种变量选择方法在这里。
先讲一下今天看到的新方法,所谓的LARS(Least Angle Regression)。
LARS是大神Efron他们搞出来做变量选择的一套算法,有点像Forward Stepwise(向前逐步回归),但和Forward Stepwise不同点在于,Forward Stepwise每次都是根据选择的变量子集,完全拟合出线性模型,计算出RSS,再设计统计量(如AIC)对较高的模型复杂度作出惩罚,而LARS是每次先找出和因变量相关度最高的那个变量, 再沿着LSE的方向一点点调整这个predictor的系数,在这个过程中,这个变量和残差的相关系数会逐渐减小,等到这个相关性没那么显著的时候,就要选进新的相关性最高的变量,然后重新沿着LSE的方向进行变动。而到最后,所有变量都被选中,估计就和LSE相同了。
LARS的算法实际执行步骤如下:
1. 对Predictors进行标准化(去除不同尺度的影响),对Target Variable进行中心化(去除截距项的影响),初始的所有系数都设为0,此时残差 r 就等于中心化后的Target Variable
2. 找出和残差r相关度最高的变量X_j
3. 将X_j的系数Beta_j 从0开始沿着LSE(只有一个变量X_j的最小二乘估计)的方向变化,直到某个新的变量X_k与残差r的相关性大于X_j时
4. X_j和X_k的系数Beta_j和Beta_k,一起沿着新的LSE(加入了新变量X_k的最小二乘估计)的方向移动,直到有新的变量被选入
5. 重复2,3,4,直到所有变量被选入,最后得到的估计就是普通线性回归的OLS
从上面这个算法可以看出,LARS这个东西明显和OLS, Ridge Regression等给出了Closed-form solutions的模型不同,而是给出了一套对计算机来说非常友好的算法。这也说明了随着计算机能力的强大,现代统计基本上越来越靠近算法,而和模型无关。
这个算法看完以后,我就试图用R实现这套算法,最后还没有美化过的效果图如下,左边是后来找到的Efron他们写的lars包做出来的效果,乍看之下还是很像,但是我发现有一些地方貌似有出入(我的程序似乎有一些变量过早地被选入了。。),目前还不知道哪里出了错,回头仔细看看。至于代码神马的,由于写的太乱了,过两天写的好看一点再发上来.
参考文献:
http://blog.sina.com.cn/s/blog_61f1db170101ca8i.html
LARS 算法简介:https://cosx.org/2011/04/an-introduction-to-lars
热门数据挖掘模型应用入门(一): LASSO 回归,https://cosx.org/2016/10/data-mining-1-lasso/
LARS 最小角回归算法简介的更多相关文章
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- 机器学习方法:回归(三):最小角回归Least Angle Regression(LARS),forward stagewise selection
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 希望与志同道合的朋友一起交流,我刚刚设立了了一个技术交流QQ群:433250724,欢迎对算法.技术.应用感 ...
- A-06 最小角回归法
目录 最小角回归法 一.举例 二.最小角回归法优缺点 2.1 优点 2.2 缺点 三.小结 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等 ...
- 最小角回归 LARS算法包的用法以及模型参数的选择(R语言 )
Lasso回归模型,是常用线性回归的模型,当模型维度较高时,Lasso算法通过求解稀疏解对模型进行变量选择.Lars算法则提供了一种快速求解该模型的方法.Lars算法的基本原理有许多其他文章可以参考, ...
- 从最小角回归(LARS)中学到的一个小知识(很短)
[转载请注明出处]http://www.cnblogs.com/mashiqi (居然有朋友说内容不接地气,那么我就再加一段嘛,请喜欢读笑话的同学直接看第二段)假设这里有一组向量$\left\{ x_ ...
- Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
Spark MLlib回归算法------线性回归.逻辑回归.SVM和ALS 1.线性回归: (1)模型的建立: 回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多 ...
- Gradient Boosting算法简介
最近项目中涉及基于Gradient Boosting Regression 算法拟合时间序列曲线的内容,利用python机器学习包 scikit-learn 中的GradientBoostingReg ...
- webrtc 的回声抵消(aec、aecm)算法简介(转)
webrtc 的回声抵消(aec.aecm)算法简介 webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) ...
- 机器学习之logistic回归算法与代码实现原理
Logistic回归算法原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10033567.html ...
随机推荐
- JavaScript字符串字节长度
var txt2="He中!!";var t = txt2.replace(/[^\u0000-\u00ff]/g,"aa").length;//值是7
- Angular4 管道
- 命令行创建cocos2d-x的工程
1. 命令行创建cocos lua工程cocos new MyGame -p com.your_company.mygame -l lua2. 进入工程目录, 编译运行时库cocos compile ...
- C#winform窗体利用系统抓取关闭按钮事件
const int WM_SYSCOMMAND = 0x112; const int SC_CLOSE = 0xF060; const int SC_MINIMIZE = ...
- 深入浅出Java探针技术2---java字节码生成框架ASM、Javassist和byte buddy的使用
目前Java字节码生成框架大致有ASM.Javassist和byte buddy三种 ASM框架介绍及使用 1.ASM介绍 ASM是一种Java字节码操控框架,能够以二进制形式修改已有的类或是生成类, ...
- Oracle免安装绿色版-PLSQL连接报12154
在环境变量添加 TNS_ADMIN 值是你的免安装客户端中sqlnet.ora tnsnames.ora 所在的目录 参考地址:https://blog.csdn.net/feng_na/art ...
- Genymotion-Android模拟器提示"Unable to connect to the Genymotion server. Please check your Internet connection."解决方法
昨天刚装的Genymotion,昨晚还用得好好的. 今晚开机,重新打开Genymotion,却提示:"Unable to connect to the Genymotion server. ...
- 移动端js调试工具:eruda
通常写前端页面都在Chrome浏览器的开发模式下进行调试,但是写放在移动端的H5页面时,有时候会遇到在Chrome上调试没有问题,但是在手机的浏览器上有问题的情况:或者有些功能只能在特定的容器中才能其 ...
- MySQL-ISNULL()、IFNULL()和NULLIF()函数
以下三个函数都可以用于where子条件,作为数据删除.更新的记录定位依据. 如: SELECT * FROM usergrade WHERE ISNULL(USERNAME); 一.ISNULL(ex ...
- LeetCode数组查找问题
简单的二分查找法:(Leetcode704): 注意条件(low<=high) public int search(int[] nums, int target) { int low=0; in ...