r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
原文:http://tecdat.cn/?p=3795
介绍
Glmnet是一个通过惩罚最大似然来拟合广义线性模型的包。正则化路径是针对正则化参数λ的值网格处的套索或弹性网络罚值计算的。该算法速度极快,可以利用输入矩阵中的稀疏性x。它符合线性,逻辑和多项式,泊松和Cox回归模型。可以从拟合模型中做出各种预测。它也可以适合多响应线性回归。
glmnet算法采用循环坐标下降法,它连续优化每个参数上的目标函数并与其他参数固定,并反复循环直至收敛。该软件包还利用强大的规则来有效地限制活动集。由于高效的更新和技术,如热启动和主动集合收敛,我们的算法可以非常快地计算解决方案路径。
该代码可以处理稀疏的输入矩阵格式,以及系数的范围约束。其核心glmnet是一组Fortran子程序,它们使执行速度非常快。
该软件包还包括用于预测和绘图的方法以及执行K倍交叉验证的功能。
首先,我们加载glmnet包:
library(glmnet)
包中使用的默认模型是高斯线性模型或“最小二乘”,我们将在本节中演示。我们加载一组预先创建的数据用于说明。用户可以加载自己的数据,也可以使用保存在工作区中的数据。
load("QuickStartExample.RData")
该命令从该保存的R数据档案中加载输入矩阵x和响应向量y。
我们使用最基本模型glmnet。
fit=glmnet(x,y)
“适合”是类的一个对象,glmnet它包含拟合模型的所有相关信息以供进一步使用。我们不鼓励用户直接提取组件。相反,提供对象,如各种方法plot,print,coef和predict,使我们能够更优雅执行这些任务。
我们可以通过执行plot函数来显示系数:
MSE 测试集
我们看到lasso(alpha=1)在这里做的最好。我们也看到,使用的lambda的范围与alpha不同。
系数上限和下限
这些是最近添加的增强模型范围的功能。假设我们想要拟合我们的模型,但将系数限制为大于-0.7且小于0.5。这是很容易通过实现upper.limits和lower.limits参数:
惩罚因素
该参数允许用户对每个系数应用单独的惩罚因子。其每个参数的默认值为1,但可以指定其他值。特别是,任何penalty.factor等于零的变量都不会受到惩罚!让[ 数学处理错误]vĴ表示[ 数学处理错误]的惩罚因子Ĵ变量。罚款期限变为[ 数学处理错误] 请注意,惩罚因子在内部重新调整为与nvars相加。
当人们对变量有先验知识或偏好时,这非常有用。在很多情况下,一些变量可能非常重要,以至于一直想要保持这些变量,这可以通过将相应的惩罚因子设置为0来实现:
- 如何节省 1TB 图片带宽?解密极致图像压缩
- Redis快速入门
- 王者荣耀未来新版本的环境优化计划,人工智能技术将引入
- Jquery遍历数组之$.inArray()方法介绍
- [原创图解]Win2003证书服务配置/客户端(服务端)证书申请/IIS站点SSL设置
- JavaScript之firstChild属性、lastChild属性、nodeValue属性学习
- JavaScript之获取和设置元素属性
- JavaScript之childNodes属性、nodeType属性学习
- JavaScript之怎样获取元素节点
- JavaScript之对象学习
- 快速入门系列--MVC--07与HTML5移动开发的结合
- JavaScript之数组学习
- JavaScript之字符串引号的使用技巧
- 快速入门系列--CLR--03泛型集合
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于vue的title标签中出现的htmlWebpackPlugin.options.title
- dotnet tool 工具安装提示 Could not find a part of the path 安装失败
- dotnet core 进行 XML 序列化抛出 XmlSerializers dll 文件找不到
- C# dotnet 高性能多线程工具 ExecuteOnceAwaiter 只执行一次的任务
- 一道Postgresql递归树题
- 突击并发编程JUC系列-JDK1.8 扩展类型 LongAdder
- 利用tensorflow训练简单的生成对抗网络GAN
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.7):运算符(基本算数运算符、原码、反码、补码)
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.6):基本数据类型及字符集编码(字符编码和char型)
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.6):基本数据类型及字符集编码(整型、浮点型、布尔型)
- 多图详解Spring框架的设计理念与设计模式
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.2-3.5):标识符、关键字、注释、变量及常量
- 《Java从入门到失业》第三章:基础语法及基本程序结构(3.1):一个简单的例子
- 详解Java解析XML的四种方法
- 《Java从入门到失业》第四章:类和对象(4.6):类路径