Lasso regression(稀疏学习,R)
这一讲呢,给大家讲解一下lasso回归。目前这个方法还没有一个正规的中文名,如果从lasso这个单词讲的话,叫套索。那么套索是啥呢,就是套马脖子的东西,见下图:
就是拿这个东西把动物脖子套住,不要它随便跑。lasso 回归就是这个意思,就是让回归系数不要太大,以免造成过度拟合(overfitting)。所以呢,lasso regression是个啥呢,就是一个回归,并且回归系数不要太大。这个思想如果拿数学语言表达的话,就是下面的样子
\mathop{minmize}_{\beta_0\in R,\beta \in R^p} \frac{1}{n}\sum_{i=1}^{n}(y_i-\beta_0-x_i^T\beta)^2 ~~subject~~to~~\|\beta\|_1 \le t
其实就是在普通回归的损失函数的基础上增加了个 β\beta的约束。那么 β\beta的约束为什么要使用这种形式,比如,下面形式这种约束也能使得 β\beta不是太大。
\|\beta\|^2 \le t.
妙处就在这个地方,在第一范数的约束下,一部分回归系数刚好可以被约束为0.这样的话,就达到了特征选择的效果。至于为什么大家可以看看下图
图中的红色线圈表示,损失函数的等值线,我们可以看到,第一范数约束下, β1\beta_1可以被约束成0。而右边第二范式约束下, β1\beta_1可以被约束的接近0.但是没有达到0.
既然lasso回归可以看成是约束优化问题,因此可以进行求解了。实际上lasso回归的意义远不止这个,lasso回归可以适应的情况是:样本量比较小,但是指标非常多,即小N大P问题。适用于高维统计,传统的方法无法应对这样的数据。并且lasso可以进行特征选择。现在的话,lasso家族已经发展出好多模型了,这个模型是由1996年Robert Tibshirani提出的。他和斯坦福的Bradley Efron等几个人,厉害的不得了,见证了整个统计学在计算机学科的影响下发展。
基于R的lasso回归
为什么要拿R做lasso,因为斯坦福统计系的几位大师最早都是拿R开发了几个lasso包。我们最好还是用R,毕竟是大师写的包。为了对比,我们做三个回归,一个是传统的均值回归,一个是ridge regression,一个是lasso回归,我们看看效果如何。
rm(list=ls())
dat<-read.csv("D:/Rdata/lasso_dat.csv")
head(dat)Y X1 X2 X3 X4 X5 X6
1 14.9607083 1.5953295 2.9141118 2.9490906 2.3531784 1.0412069 0.8151355
2 -0.3579434 -0.5584693 -1.1981533 1.2275879 0.3332272 0.5569235 -1.9695117
3 0.8765146 -0.6689517 0.9050208 1.1657989 1.3203673 -0.7263651 0.3727694
4 1.8098995 0.2648723 -1.0164312 -0.2752811 1.6298845 0.5185340 0.4962158
5 3.0404683 -0.4606268 0.3767176 0.9498028 1.2291411 1.6759266 -1.6201224
6 -4.4359221 -0.1008654 -0.9888361 0.4612514 1.1799055 -0.6183934 -1.7610674#下面做三个回归
# (1) 最小二乘回归
model.ols <- lm(Y~.-1, data=dat)
summary(model.ols)
Call:
lm(formula = Y ~ . - 1, data = dat)Residuals:Min 1Q Median 3Q Max
-4.3885 -1.1771 0.6464 1.9832 6.4057 Coefficients:Estimate Std. Error t value Pr(>|t|)
X1 3.61142 0.63931 5.649 8.13e-06 ***
X2 1.68079 0.64137 2.621 0.0150 *
X3 -0.33011 0.63780 -0.518 0.6095
X4 1.33792 0.76541 1.748 0.0933 .
X5 0.08907 0.81004 0.110 0.9134
X6 -0.34500 0.52378 -0.659 0.5164
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 2.914 on 24 degrees of freedom
Multiple R-squared: 0.8087, Adjusted R-squared: 0.7608
F-statistic: 16.91 on 6 and 24 DF, p-value: 1.485e-07
#提取回归系数
coef.ols <- coef(model.ols)
#查看不等于0的回归系数
coef.ols[coef.ols!=0] X1 X2 X3 X4 X5 X6 3.61141743 1.68079404 -0.33010639 1.33792406 0.08907369 -0.34499781 # (2) ridge regression(岭回归)
model.rid <- linearRidge(Y~.-1, data=dat)
#查看结果
summary(model.rid)
Call:
linearRidge(formula = Y ~ . - 1, data = dat)Coefficients:Estimate Scaled estimate Std. Error (scaled) t value (scaled) Pr(>|t|)
X1 3.34326 18.15297 3.02490 6.001 1.96e-09 ***
X2 1.55602 9.33877 3.24737 2.876 0.00403 **
X3 -0.16886 -1.14619 3.43476 0.334 0.73860
X4 1.18625 6.86298 3.47735 1.974 0.04842 *
X5 0.01244 0.05443 3.09414 0.018 0.98596
X6 -0.22464 -1.33800 2.84413 0.470 0.63804
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Ridge parameter: 0.07890282, chosen automatically, computed using 5 PCsDegrees of freedom: model 5.315 , variance 4.744 , residual 5.886
#提取系数
coef.rid <- coef(model.rid)
#查看不等于0的系数
coef.rid[coef.rid!=0] X1 X2 X3 X4 X5 X6 3.34325841 1.55601878 -0.16886083 1.18625138 0.01243652 -0.22464097
# (3) 做 lasso regression
#模型设定
model.lasso <- lars(X, Y, type='lasso')
#画个图
plot(model.lasso)
下面继续
#查看模型详细信息
summary(model.lasso)
LARS/LASSO
Call: lars(x = X, y = Y, type = "lasso")Df Rss Cp
0 1 980.27 84.1817
1 2 595.57 42.1569
2 3 371.22 18.4827
3 4 208.56 1.8672
4 5 205.15 3.4768
5 6 201.10 5.0131
6 7 200.98 7.0000
set.seed(12345)
#做交叉验证
CV.lasso <- cv.lars(X, Y, K=10)
产生如下效果图
(best <- CV.lasso$index[which.min(CV.lasso$cv)])0.6969697
#选择最好的效果
(coef.lasso <- coef.lars(model.lasso, mode='fraction', s=best))
#命名
names(coef.lasso) <- colnames(dat)[-1]
#查看结果
coef.lasso[coef.lasso!=0] X1 X2 X4
3.213401 1.231145 0.741892
结论
通过上面的实验,我们可以看到,传统线性回归,岭回归都没有把一部分回归系数约束为0,只有lasso 回归做到了。实际上,这个只是一个很简单的例子,在实际当中,lasso处理的数据往往是DNA数据,变量非常多,我们目的是通过lasso把对某种疾病有明显影响的DNA片段找出来。那么在这种情况下,传统回归不要说选择了,就是运行都无法运行了。因为维度太大,这个矩阵XTXX^TX是不可逆了。如果用ridge regression也不行。lasso是我们最佳选择,在金融当中,lasso可以用来选择资产组合。
Lasso regression(稀疏学习,R)相关推荐
- 深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression)
深度学习R语言 mlr3 建模,训练,预测,评估(随机森林,Logistic Regression) 本文主要通过使用mlr3包来训练German credit数据集,实现不同的深度学习模型. 1. ...
- 特征选择与稀疏学习(Feature Selection and Sparse Learning)
本博客是针对周志华教授所著<机器学习>的"第11章 特征选择与稀疏学习"部分内容的学习笔记. 在实际使用机器学习算法的过程中,往往在特征选择这一块是一个比较让人模棱两可 ...
- Chapter 11 特征选择和稀疏学习
Chapter 11 特征选择和稀疏学习 1 子集搜索与评价 一个样本通常有多个属性,如西瓜有色泽,根蒂,颜色等.将属性称之为特征,对一个学习任务而言,有用的特征称之为"相关特征" ...
- 《机器学习》阅读心得——十一、特征选择和稀疏学习
十一.特征选择和稀疏学习 11.1 子集搜索和评价 对一个学习任务来说,给定属性集,其中有些属性可能很关键,另一些属性可能没什么用,我们将属性称为"特征",对当前学习任务有用的 ...
- 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
目录 1. Lasso回归 1.1 概念 1.2 正则化 1.3 Lasso回归模型 1.4 为什么Lasso Regression可以做降维? 1.5 参数求解 (1)坐标轴下降法 (2)最小角回归 ...
- 特征选择与稀疏学习。
特征选择与稀疏学习 最近在看论文的过程中,发现对于数据集的行和列叫法多有不同,故在介绍本章之前,决定先将最常用的术语罗列一二,以后再见到了不管它脚扑朔还是眼迷离就能一眼识破真身了~对于数据集中的一个对 ...
- Lasso Regression
Lasso Regression 标签(空格分隔): 监督学习 在数据挖掘和机器学习算法的模型建立之初,为了尽量的减少因缺少重要变量而出现的模型偏差问题,我们通常会尽可能的多的选择自变量.但是在实际建 ...
- 机器学习(周志华) 第十一章特征选择与稀疏学习
关于周志华老师的<机器学习>这本书的学习笔记 记录学习过程 本博客记录Chapter11 文章目录 1 子集搜索与评价 2 过滤式选择 3 包裹式选择 4 嵌入式选择与L1正则化 5 稀疏 ...
- 【2022新书】深度学习R语言实战,第二版
来源:专知 本文为书籍介绍,建议阅读5分钟使用R和强大的Keras库从头开始进行深度学习! R深度学习,第二版 使用R和强大的Keras库从头开始进行深度学习! 在R深度学习第二版中,您将学习: 从基 ...
最新文章
- 基础矩阵,本质矩阵,单应性矩阵讲解
- [2008.06.10 23:20:00] 心智成熟的旅程
- linux 发行版 suse opensuse 区别
- python爬取资料_Python爬取FLASH播放器中的资料
- Scala import导包用法
- 最新综述:用于组合优化的强化学习
- python的for循环语句怎么写_python中的for循环语句怎么写
- mysql hex函数性能_mysql hex与unhex 函数的妙用
- 电脑开机3秒就重启循环_U盘如何变成万能维修工具?分享3款PE制作软件,小白秒变电脑高手...
- IAT 注入ImportInject(dll)
- 伍德里奇计量经济学第三章课后计算机作业,伍德里奇---计量经济学第7章部分计算机习题详解(STATA)...
- 面试题系列(三)-socket
- 致那些徘徊在测试界的屌丝——也致给我自己这个苦逼屌丝
- 全国第三次土壤普查实验室筛选开始 实验室要求理化检测指标仪器一览
- 笔记——Tensorflow: The Confusing Parts (2)
- 2015(毕业)秋季校园招聘各种企业笔试面试心得
- 家乡菜之回锅茄子_wizard_新浪博客
- Android 获取摄像头像素,个数
- Oracle 错误总结及解决方法
- 2023系统分析师软考资料大礼包(e赛内部版)
热门文章
- 免费为网站配置ssl证书, 使网站变成https.半小时搞定
- python的matplotlib.pyplot绘制甘特图
- Java毕设项目桌游店会员管理系统(java+VUE+Mybatis+Maven+Mysql)
- 【学习分享】2、创龙 TMS320C6748开发板程序加载和烧写(一)
- Office文档在线预览
- China-pub迎新春 100万图书免费送
- 通过JS判断浏览器类型,详细区分IE各版本浏览器
- pertII型管和pertI型管的区别
- 小学生护眼台灯哪个品牌好?眼医生分享的护眼灯品牌
- sftp 路径、文件及文件夹的操作小记