数据分析师应该知道的16种回归技术:Lasso回归

2018 年 8 月 13 日 数萃大数据

岭回归通过添加L2损失函数收缩回归系数,使回归系数的估计值更加稳定,但它不能把任意回归系数收缩到0,因此不能用来进行变量选择,从而不能给出一个易于解释的模型(对于具体的多变量数据,我们总希望通过尽量少的变量描述数据的特征)。今天学习的lasso(least absolute shrinkage and selection operator)可以很好地解决这个问题


Lasso回归的目标函数和岭回归类似,只不过把岭回归中的L2损失函数替换为L1损失函数,于是对于下列回归模型:

Lasso回归的目标函数为

上述目标函数的解析解,除非是正交阵。

,则

这里表示回归模型的最小二乘估计,表示当

,则对L1损失函数做如下近似

然后带入lasso的目标函数,可得

解上述目标函数,可得

其中

上述迭代过程将收敛到lasso的估计值,另外对于非正则的情形也可以采用梯度下降和LARS(Least Angular Regression),LARS算法由Efron和Hastie在2004年提出,该算法能在很短的速度算出最优解,算法的基本思路是寻找y和xi(x的某个分量)的最小夹角,这样的话只要n(n表示x的维数)步就可以找到最优解。


最后一个问题是设置参数控制惩罚度。如果设置得过大,模型参数均将趋于0,造成欠拟合。如果设置得过小,如,则退回线性回归,从而不能对回归参数进行收缩,也不能进行变量选择,造成估计方差增大。所以一般通过交叉验证的方法确定值。


案例

前列腺癌是一种恶性男科病,PSA(某种前列腺抗原)数是用来判断病人是否患前列腺癌的重要指标。现有一批PSA诊断数据,包含8项诊断指标。我们希望用尽量少的指标来预测病人的PSA数量,进而判断病人是否得了前列腺癌。

下面我们采用LASSO回归来分析PSA数据

对于PSA数据,利用交叉验证寻找最优lambda,然后求解最优lambda下的回归系数

  
  
    
  1. data(Prostate, package = 'lasso2')

  2. x<-(apply(Prostate[,-9],2,as.numeric))

  3. y<-(Prostate[,9])

  4. library(glmnet)

  5. set.seed(123)

  6. model <- cv.glmnet(x, y,lambda = 10^seq(4,-1,-0.1),keep = T)

  7. best_lambda <- model$lambda.min

  8. lasso_coeff <- predict(model,s = best_lambda,type = "coefficients")

  9. best_lambda ;lasso_coeff

 绘制不同lambda下回归系数的变化曲线,以及MSE的变化情况。

  
  
    
  1. op=par(mfrow=c(1,2))

  2. plot(model)

  3. hatbeta <- as.matrix(model$glmnet.fit$beta)

  4. lambda = log(10^seq(4,-1,-0.1))

  5. plot(1,type = 'n',xlim = c(-2.3,1.5),ylim = c(-0.15,0.8),

  6.     xlab = 'log(lambda)',ylab = 'coefficients')

  7. colrs = RColorBrewer::brewer.pal(8,"Set1")

  8. for (i in 1:8) {

  9.  lines(lambda,hatbeta[i,],col=colrs[i],lwd=2)

  10. }

  11. abline(v=log(best_lambda),lty=3,lwd=3,col='gray30')

  12. legend('topright',rownames(hatbeta),lty = 1,lwd=2,

  13.       col=colrs,bty = 'n',cex = 0.75)

  14. par(op)


推荐阅读

数据分析师应该知道的16种回归技术:分位数回归

数据分析师应该知道的16种回归技术:岭回归

从零开始深度学习第8讲:利用Tensorflow搭建神经网络

从零开始深度学习第7讲:Tensorflow入门

谈谈大数据的那点事 (12)——如何理解大数据和分析大数据

爬取R语言会议视频


长按二维码关注“数萃大数据”

登录查看更多
16

相关内容

【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
专知会员服务
139+阅读 · 2020年5月19日
【大规模数据系统,552页ppt】Large-scale Data Systems
专知会员服务
60+阅读 · 2019年12月21日
【新书】贝叶斯网络进展与新应用,附全书下载
专知会员服务
120+阅读 · 2019年12月9日
一文读懂线性回归、岭回归和Lasso回归
CSDN
34+阅读 · 2019年10月13日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
博客 | 回归类算法最全综述及逻辑回归重点讲解
AI研习社
13+阅读 · 2018年11月29日
数据分析师应该知道的16种回归方法:负二项回归
数萃大数据
74+阅读 · 2018年9月16日
数据分析师应该知道的16种回归技术:弹性网络回归
数萃大数据
91+阅读 · 2018年8月16日
数据分析师应该知道的16种回归技术:分位数回归
数萃大数据
29+阅读 · 2018年8月8日
机器学习者都应该知道的五种损失函数!
数盟
5+阅读 · 2018年6月21日
已删除
将门创投
4+阅读 · 2018年6月12日
Arxiv
22+阅读 · 2019年11月24日
A General and Adaptive Robust Loss Function
Arxiv
8+阅读 · 2018年11月5日
Feature Selection Library (MATLAB Toolbox)
Arxiv
7+阅读 · 2018年8月6日
Arxiv
3+阅读 · 2015年5月16日
VIP会员
相关资讯
一文读懂线性回归、岭回归和Lasso回归
CSDN
34+阅读 · 2019年10月13日
目标检测中边界框的回归策略
极市平台
17+阅读 · 2019年9月8日
博客 | 回归类算法最全综述及逻辑回归重点讲解
AI研习社
13+阅读 · 2018年11月29日
数据分析师应该知道的16种回归方法:负二项回归
数萃大数据
74+阅读 · 2018年9月16日
数据分析师应该知道的16种回归技术:弹性网络回归
数萃大数据
91+阅读 · 2018年8月16日
数据分析师应该知道的16种回归技术:分位数回归
数萃大数据
29+阅读 · 2018年8月8日
机器学习者都应该知道的五种损失函数!
数盟
5+阅读 · 2018年6月21日
已删除
将门创投
4+阅读 · 2018年6月12日
Top
微信扫码咨询专知VIP会员