MATLAB经典代码实现---LASSO和Elastic net

2023-11-03

     作为正则化约束或者变量稀疏筛选相关领域的经典分析方法,最小绝对收缩和选择方法(Least Absolute Shrinkage and Selection Operator, LASSO)和弹性网络(Elastic net)已被广泛应用到各行各业,其中较为常见的有食品、化工、医药及通信行业,两种的基本思路是在最小二乘的基础上添加变量约束实现特征筛选或变量稀疏。

   (注:前期认为正则化约束后的变量为特征变量,但是现在分析发现这个说法不一定正确,当分析对象变量维度远大于样本变量数时,LASSO只能选择样本大小的变量数,这个主要因为LASSO于1996年被Robert Tibshirani提出,当时的测量信号或检测信号维度较低,不存在现在所谓的“维度灾难”一说,结合岭回归和LASSO,Zou等于2005年提出Elastic nets算法(论文题目:Addendum: Regularization and variable selection via the elastic net  链接:http://stanford.edu/~hastie/Papers/B67.2%20(2005)%20301-320%20Zou%20%26%20Hastie.pdf),相比于LASSO,Elastic net分析性能更优)。

    MATLAB中通过参数Alpha来选择LASSO、岭回归和Elastic net三种算法,具体表示为:

[b,fitinfo] = lasso(x,y,'CV',10,'Alpha',0.2); % 参数初始化
axTrace = lassoPlot(b,fitinfo); 交叉验证训练轨迹
axCV = lassoPlot(b,fitinfo,'PlotType','CV');
lam = fitinfo.IndexMinMSE;  % 最小MSE对应lambda
mat = b(:,lam);             % 最优lambda对应的稀疏系数
[row, ] = find(b(:,lam)~=0);% 非零系数对应的行
Xla = X1(:, row');           % 筛选稀疏变量
  1. x:为输入自变量,y为因变量;CV表示交叉验证(Cross-Validation),Alpha表示惩罚参数 \alpha (0\leq \alpha\leq 1),当\alpha = 1 时,该代码表示LASSO, 当\alpha=0  时表示岭回归,其他值表示Elastic net;
  2. 对于稀疏系数的确定,主要有两个指标(MSE和SE),如果选择MSE作为最佳参数指标的话,那么稀疏系数的确定点在MinMSE,具体表现为第四至六行。

仿真结果:

训练轨迹,绿线上方表示最佳参数MinMSE对应的非零变量个数;

MSE变化曲线,其中绿色表示MinMSE点,蓝色表示MinSE,一般选择MinMSE。

(好累,晚上10点半,写不动了,撤了)

个人新建立的weixin公众号,光谱学与光谱分析,欢迎大家关注

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB经典代码实现---LASSO和Elastic net 的相关文章

  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • matlab 中的 for 或 while 循环

    我刚刚开始在编程课的 matlab 中使用 for 循环 基本的东西对我来说很好 但是我被要求 使用循环创建一个 3 x 5 矩阵 其中每个元素的值是其行号其列号除以行号和列号之和的幂 例如元素 2 3 的值为 2 3 2 3 1 6 那么
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • 一次分配多个字段的聪明方法?

    由于遗留函数调用 我有时被迫编写像这样的丑陋的包装器 function return someWrapper someField a someField a b someField b and so on realistically it
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • 如何在 MATLAB 中可视化球体的交集?

    似乎这个问题在一些地方被问过 包括SO https stackoverflow com questions 35130336 draws the intersecting volume of two spheres in matlab 我最
  • 如何在Matlab中自定义轮廓线?

    我正在准备一个等高线图 我应该在其中突出显示特定级别的等高线 例如 我的轮廓线值位于 1 和 1 之间 我想突出显示与值 0 相对应的线 我尝试使用以下过程来执行此操作 M c contourf longitude latitude del
  • 使用 GPU 进行 Matlab 卷积

    我用gpuArray尝试了matlab的卷积函数conv2 convn 例如 convn gpuArray rand 100 100 10 single gpuArray rand 5 single 并将其与 cpu 版本 convn ra
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • MATLAB:具有复数的 printmat

    我想使用 MATLAB 的printmat显示带有标签的矩阵 但这不适用于复数 N 5 x rand N 1 y rand N 1 z x 1i y printmat x y z fftdemo N 1 2 3 4 5 x y x iy O
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan

随机推荐

  • Vue(树表格分页)

    目录 1 准备工作 2 动态树 2 1 在配置请求路径 2 2 使用动态数据构建导航菜单 2 2 1 通过接口获取数据 2 2 3 通过后台获取的数据构建菜单导航 2 2 3 1 先构建一级导航菜单 2 2 3 2 构建二级导航菜单 2 3
  • 《因果学习周刊》第13期:ICLR 23因果推断高分论文

    No 13 智源社区 因果学习组 因 果 学 习 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息 因果学习周刊 已经开启 订阅功能 以后我们会向您自动推送最新版的 因果学习周刊 订阅方法 方式1 扫描下面二维码 进入 因果学习周刊 主
  • Unity—英雄无敌(前方高能)

    英雄无敌 VR Project 前方高能 敌人模块 武器模块 HTC VIVE 玩家模块 可以学习考参一下本文章的思想 思路甚至是细节呦 需求分析是重点 目录 敌人模块 敌人沿指定路线运动 受击后减血死亡 运动播放跑步动画 攻击播放攻击动画
  • 【hadoop】windows上hadoop环境的搭建步骤

    文章目录 前言 基础环境 下载hadoop安装包 下载hadoop在windows中的依赖 配置环境变量 Hadoop hdfs搭建 创建hadfs数据目录 修改JAVA依赖 修改配置文件 初始化hdfs namenode 启动hdfs 前
  • ubuntu用户添加adduser, useradd并给予sudo权限

    ubuntu和windows一样 可以任意创建或者删除新的用户 windows下比较简单 ubuntu下需要使用命令 不过操作起来不是很繁琐 所以我尽量写的详细一些 如何创建ubuntu新用户 首先打开终端 输入 sudo adduser
  • 【笔记】黑马程序员 MySQL数据库入门到精通 —— 基础篇_实践

    文章目录 SQL语法 SQL语法 DDL 操作数据库 表的定义 1 操作数据库 2 操作表 实践 设计一张员工信息表 SQL语法 DML 增删改 表中的数据 SQL语法 DQL 查询表中的数据 1 基本查询 不带任何条件 2 条件查询 WH
  • Umi + Dva (model数据使用教程demo)

    React 不多说 3大框架之一 Dva 是由阿里架构师 sorrycc 带领 team 完成的一套前端框架 在作者的 github 里是这么描述它的 dva 是 react 和 redux 的最佳实践 现在已经有了自己的官网 https
  • PostgreSQL备份与还原指定数据库数据和导出指定的数据表

    PostgreSQL备份与还原指定数据库数据 PostgreSQL备份与还原指定数据库数据 备份 pg dump 还原 psql Postgresql导出指定的数据表 PostgreSQL备份与还原指定数据库数据 备份 pg dump pg
  • vue获取当前时间并时时刷新

    vue获取当前时间并时时刷新 页面显示 div span nowDate span span class houertime hourDate span div 图片上传失败 我是分开年月日和时分秒 给时分秒加样式 2022 11 24 1
  • [windows优化]win10折腾过程

    2018 11 27更新 没固态硬盘 拯救者还不值3000 非常卡 双十一 终于忍不住买了块固态硬盘 刚好最近技术发展 固态硬盘降价了 入手三星750 M 2 250G 如果机子不能识别固态硬盘 请进入BIOS 设置启动模式为UEFI 进入
  • CPU眼里的: MMU

    一 MMU与空间独立性 内存管理单元 memory management unit P1P2为两个进程 它们之间存在空间独立性 p1与p2的a虽然同一虚拟内存 但经过MMU会映射在物理内存的不同地址 真正的物理内存空间就是天空 每个进程就是
  • adas记录仪app_4K旗舰丨盯盯拍MINI5智能行车记录仪荣耀新生!

    2020年5月19日 盯盯拍MINI5 4K旗舰行车记录仪正式发布 本次新品不仅在影像上实现再一次突破 在传输 存储及远程互联等功能上 也有更多创新升级 同时 盯盯拍MINI5作为畅连通话及AR导航视觉终端 也在最新的荣耀智慧生活新品发布会
  • 相机姿态估计

    目录 一 相机姿态估计原理 二 相机姿态估计实现 一 相机姿态估计原理 首先介绍一下什么是世界坐标系和相机坐标系 世界坐标系是自己定义的一个坐标系 这里我定义世界坐标系是X轴垂直屏幕指向人 Y轴水平向右 Z轴竖直向上 相机坐标系有统一的规定
  • 用matlab绘制幂函数

    用matlab绘制幂函数 下周轮到我做论文汇报了 刚好前两天看了网格水印的文章 就决定汇报前两天看到的那篇论文了 在准备ppt的过程中 绘制了一些幂函数 感觉matlab真的是很强大啊 可以绘制各种曲线 下面就简要介绍一下如何用matlab
  • Python错误笔记:NameError: name 'M' is not defined

    1 在使用name input 时报 NameError name M is not defined的错误 解决方式 使用raw input 代替input 资料 https blog csdn net dq dm article deta
  • iOS protobuf3.1.0使用

    Protobuf简介 Protocol Buffer是google 的一种数据交换的格式 已经在Github开源 目前最新版本是3 1 0 它独立于语言 独立于平台 google 提供了多种语言的实现 Java C C Go 和 Pytho
  • java ResultSet获得总行数

    在Java中 获得ResultSet的总行数的方法有以下几种 第一种 利用ResultSet的getRow方法来获得ResultSet的总行数 Statement stmt con createStatement ResultSet TYP
  • 扩散模型实战(一):基本原理介绍

    扩散模型 Diffusion Model 是 类 分先进的基于物理热 学中的扩散思想的深度学习 成模型 主要包括前向扩散和反向扩散两个过程 成模型除了扩散模型之外 还有出现较早的VAE Variational Auto Encoder 变分
  • pandas入门:导出数据的四种方式

    pandas导出数据到文件的四种方式 import pandas as pd import pymysql df pd DataFrame A 3 4 8 9 B 1 2 2 4 4 5 7 3 C aa bb cc dd def expo
  • MATLAB经典代码实现---LASSO和Elastic net

    作为正则化约束或者变量稀疏筛选相关领域的经典分析方法 最小绝对收缩和选择方法 Least Absolute Shrinkage and Selection Operator LASSO 和弹性网络 Elastic net 已被广泛应用到各行