关于Lasso回归的一个例子
转载自:http://site.douban.com/182577/widget/notes/10567181/note/285262818/
#给一位朋友做的例子。
Lasso,套索。一种变量选择方法,使用罚约束来筛掉拟合模型中的系数。 可参考统计学习巨著ESL第2版(ESL这本书的主线可以说就是线性模型加罚约束)。
这个例子来自吴喜之老师《复杂数据统计方法》p29。第一种方案采用lars包(吴老师书里的方法,细节略有修正)。这个包的方法包括:Least Angle Regression, Lasso 和 Forward Stagewise,作者是两位大牛:Trevor Hastie和 Brad Efron。
library(lars)
data(diabetes)
attach(diabetes)
w <- cbind(diabetes$x, diabetes$y, diabetes$x2)
x <- as.matrix(w[, 1:10])
y <- as.matrix(w[, 11])#响应变量
x2 <- as.matrix(w[, 12:75])
laa <- lars(x2, y) #lars函数默认方法为lasso
plot(laa)
summary(laa) #共104步
cva <- cv.lars(x2, y, K = 10, plot.it = TRUE) #10折交叉验证,并绘制cv的变化图
best <- cva$index[which.min(cva$cv)]
coef <- coef.lars(laa, mode = "fraction", s = best) #使得CV最小时的系数
coef[coef != 0] #通过CV选择的变量
## sex bmi map hdl ltg glu bmi^2 glu^2
## -92.967 502.356 241.632 -174.935 465.399 10.829 33.919 62.356
## age:sex age:map age:ltg age:glu bmi:map
## 97.308 28.427 4.497 13.780 79.712
laa$Cp[which.min(laa$Cp)] #最小的Cp值及其步数
## 15
## 18.2
coef1 <- coef.lars(laa, mode = "step", s = 15) #使得Cp最小时的系数(s=15)
coef1[coef1 != 0] #通过CV选择的变量
## sex bmi map hdl ltg glu age^2 bmi^2
## -112.313 501.617 251.792 -187.828 467.779 18.130 7.609 38.748
## glu^2 age:sex age:map age:ltg age:glu bmi:map
## 69.810 107.728 30.045 8.613 11.600 85.688
第2种方案采用glmnet包。这个包的方法是Lasso and elastic-net regularized generalized linear models。这个包的作者是erome Friedman, Trevor Hastie, Rob Tibshiran。对,就是ESL的三位作者。
library(glmnet)
gla <- cv.glmnet(x2, y, nfolds = 10) #cv做交叉验证来确定模型,nfolds=10其实是默认值
plot(gla) #绘制cv变化图
左边线对应最佳lamda,右侧线对应一个SE内最佳模型
|
gla$lambda.1se #最佳lambda值
## [1] 6.401
gla.best <- gla$glmnet.fit #对应的最佳模型
gla.coef <- coef(gla$glmnet.fit, s = gla$lambda.1se) #系数
gla.coef[which(gla.coef != 0)] #选择的变量
## [1] 152.133 500.895 184.880 -108.360 443.883 6.644 25.214
## [8] 38.632 5.620 1.060 46.970
最终输出的模型系数,对应图三中有两条线,右侧线,就是最佳的lambda值一个标准误之内的最简洁(系数最少)的模型。
关于Lasso回归的一个例子相关推荐
- Lasso回归算法: 坐标轴下降法与最小角回归法小结
前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge回归,以及线程回归的L1正则化-Lasso回归.但是对 ...
- 机器学习 Lasso回归算法
Lasso回归算法: 坐标轴下降法与最小角回归法小结 前面的文章对线性回归做了一个小结,文章在这: 线性回归原理小结.里面对线程回归的正则化也做了一个初步的介绍.提到了线程回归的L2正则化-Ridge ...
- 回归问题-Lasso回归
Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法.它通过构造一个惩罚函数,可以将变量的系数进行 ...
- 线性回归、lasso回归、岭回归以及弹性网络的系统解释
线性回归.lasso回归.岭回归以及弹性网络的系统解释 声明 背景介绍 概述 线性回归模型函数及损失函数 线性回归算法 多项式回归(线性回归的推广) 广义线性回归(线性回归的推广) 岭回归(Ridge ...
- python回归模型 变量筛选_如何进行高维变量筛选和特征选择(一)?Lasso回归
01模型简介 随着海量电子病历的挖掘,影像学.基因组学等数据进入医学统计分析,经常会面临对高维变量特征选择的问题,Lasso回归是在线性回归模型的代价函数后面加上L1范数的约束项的模型,它通过控制参数 ...
- 从LASSO回归到结构性稀疏:线性回归的正则项都带来了什么?
©作者 | 黄秋实 单位 | 香港中文大学(深圳) 研究方向 | 智能电网 本文我们主要关注于以下问题: 1. LASSO Regression 是什么? 2. 稀疏性的意义是什么?(从数学上证明) ...
- sklearn 中的线性回归、岭回归、Lasso回归参数配置及示例
文章目录 线性回归 引入 重要参数 重要属性 重要方法 例子 岭回归 引入 重要参数 重要属性 重要方法 示例 Lasso 回归 引入 重要参数 重要属性 重要方法 示例 本文主要讲一些sklearn ...
- [机器学习-原理篇]学习之线性回归、岭回归、Lasso回归
线性回归.岭回归.Lasso回归 前言 一,线性回归--最小二乘 二,Lasso回归 三,岭回归 四, Lasso回归和岭回归的同和异 五, 为什么 lasso 更容易使部分权重变为 0 而 ridg ...
- 基于Python的岭回归与LASSO回归模型介绍及实践
基于Python的岭回归与LASSO回归模型介绍及实践 这是一篇学习的总结笔记 参考自<从零开始学数据分析与挖掘> [中]刘顺祥 著 完整代码及实践所用数据集等资料放置于:Github 岭 ...
最新文章
- pandas里面已经是sort_values()啦
- 五大地形等高线特征_高考复习地形特征描述专题
- linux学习教程(一)(安装篇)centos7没有安装ifconfig命令的解决方法
- 前端学习(3104):react-hello-react案例
- VS2017——50G超豪华IDE套餐酸爽体验!
- 《Hierarchical Attention Network for Document Classification》—— 用于文本分类的层次注意力网络
- 学习笔记2—MATLAB的copyfile技巧
- Python Flask Web 第三课 —— 模板
- Istio Proxy【Envoy扩展】详解
- html文件怎么转换为swf文件,在html里怎么添加flash视频格式(flv、swf)文件
- 利用阿里云虚拟机作为跳板机实现内网穿透
- 十人拼团一人得产品幸运【拼够够】我们来看具体的模式吧
- 游戏BI数据统计分析相关
- 一个TCP长连接设备管理后台工程(四)---jtt808协议解析
- vue3项目源码汇集
- 1.1 OpenFlow 概述
- Orangepi 5 Unixbench基准测试结果
- chrome硬件加速_如何在Chrome中打开和关闭硬件加速
- java课程设计atm机_java课程设计报告-自动取款机模拟程序.doc
- JAVA中的糕富帅技术——反射(一)
热门文章
- OpenGL之显卡(二十六)
- FFmpeg的模块介绍(一)
- Android7.0以上增加(/system/lib/libtest.so)系统库文件
- Ubuntu下emacs使用搜狗输入法
- Mac升级emacs26
- Android/Java面试题,边面试边成长,为了应试而应试
- vue-meta-info动态设置meta标签
- xml标签里有rownum_rownum和order by以及index的关系
- linux学习笔记:vim编辑器的各种用法操作命令
- Python求梅森尼数