LASSO算法

news/2024/12/22 13:12:12/

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法,它能够同时进行变量选择和正则化,以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。

基本概念

在一个线性回归模型中,我们通常寻找权重向量 x x x,使得 ∥ A x − b ∥ 2 2 \|Ax - b\|_2^2 Axb22 (二范数平方,即平方误差) 尽可能小,其中 A A A 是特征矩阵, b b b 是观察值向量。在LASSO回归中,我们求解的优化问题变为:

min ⁡ x { ∥ A x − b ∥ 2 2 + λ ∥ x ∥ 1 } \min_x \left\{ \|Ax - b\|_2^2 + \lambda\|x\|_1 \right\} xmin{Axb22+λx1}

这里 ∥ x ∥ 1 \|x\|_1 x1 表示 x x x 的L1范数(俗称为曼哈顿距离,即系数的绝对值之和), λ \lambda λ 是正则化系数,它决定了添加到模型中的惩罚的严重程度。

LASSO算法的关键特点是,在参数 λ \lambda λ 足够大时,一些系数可以被缩减为零,即模型可以排除一些特征对输出的影响。这可以解释为模型自动进行特征选择。

示例

以下是一个简单的例子和用MATLAB实现的过程:

首先创建一些合成数据,如用户之前的输入所示。我们使用 randn 函数生成正态分布的随机数,创建了一个100x10的矩阵 A A A 作为特征矩阵,以及一个有两个非零项的系数向量 x x x。然后我们计算观察值向量 b b b,并添加一些噪声。

使用MATLAB内置的 lasso 函数,我们可以拟合一个LASSO模型。lasso 函数还允许我们进行交叉验证(通过参数 'CV', 10)来选择合适的 λ \lambda λlassoPlot 函数用于可视化交叉验证结果。最后,我们选取最佳的系数向量,并且对选取的系数再进行一次普通最小二乘回归,即所谓的"去偏置"步骤。

MATLAB代码

这是用MATLAB实现的步骤展示:

% 创建特征矩阵和观察值
A = randn(100,10);
x = [0; 0; 1; 0; 0; 0; -1; 0; 0; 0];
b = A*x + 2*randn(100,1);% L2-正则化(最小二乘)
xL2 = pinv(A)*b;% LASSO回归
[XL1, FitInfo] = lasso(A, b, 'CV', 10);% LASSO交叉验证结果可视化
lassoPlot(XL1, FitInfo, 'PlotType', 'CV');% 选择1标准误差规则下的系数
xL1 = XL1(:, FitInfo.Index1SE);% 去偏置
xL1DeBiased = pinv(A(:, abs(xL1) > 0)) * b;

在这个例子中,最后的步骤是进行去偏置(De-Biasing)。由于LASSO倾向于收缩系数,为了获得无偏的预测,通常会在LASSO选择的特征上运行一个没有正则化的线性回归。通过选择那些在LASSO模型下非零的系数作为特征,我们可以再次使用普通的最小二乘估计(也就是 pinv(A(:, abs(xL1) > 0)) * b)来获得去偏的系数估计 xL1DeBiased

运行结果

在这里插入图片描述

相关博文

理解并实现OpenCV中的图像平滑技术

OpenCV中的边缘检测技术及实现

OpenCV识别人脸案例实战

入门OpenCV:图像阈值处理

我的图书

下面两本书欢迎大家参考学习。

OpenCV轻松入门

李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。

在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。

本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。
在这里插入图片描述

计算机视觉40例

李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。

在这里插入图片描述


http://www.ppmy.cn/news/1364164.html

相关文章

019 Spring Boot+Vue 电影院会员管理系统(源代码+数据库+文档)

部分代码地址: https://github.com/XinChennn/xc019-cinema 一、系统介绍 cinema项目是一套电影院会员管理系统,使用前后端分离架构开发包含管理员、会员管理、会员卡管理、电影票、消费记录、数据统计等模块 二、所用技术 后端技术栈: …

STL常用容器(vector容器)---C++

STL常用容器目录 2.vector容器2.1 vector基本概念2.2 vector构造函数2.3 vector赋值操作2.4 vector容量和大小2.5 vector插入和删除2.6 vector数据存取2.7 vector互换容器2.7.1 vector互换容器收缩内存空间 2.8 vector预留空间 2.vector容器 2.1 vector基本概念 功能&#xf…

Linux之安装jdk,tomcat,mysql,部署项目

目录 一、操作流程 1.1安装jdk 1.2安装tomcat(加创建自启动脚本) 1.3 安装mysql 1.4部署项目 一、操作流程 首先把需要用的包放进opt文件下 1.1安装jdk 把jdk解压到/usr/local/java里 在刚刚放解压包的文件夹打开vim /etc/profile编辑器&#xff0c…

TensorRT及CUDA自学笔记004 内核函数以及两个简单的内核函数demo

TensorRT及CUDA自学笔记004 内核函数以及两个简单的内核函数demo 内核函数是能够在GPU上被线程并发执行的函数 CUDA程序中的函数修饰符 修饰符执行位置调用注意global在设备(device)上执行主机和compute capabilitiy 3(计算能力三级&#…

2024-02-26(Spark,kafka)

1.Spark SQL是Spark的一个模块,用于处理海量结构化数据 限定:结构化数据处理 RDD的数据开发中,结构化,非结构化,半结构化数据都能处理。 2.为什么要学习SparkSQL SparkSQL是非常成熟的海量结构化数据处理框架。 学…

关于python的数据可视化与可视化:数据读取

带着问题寻找答案可以使自己不再迷茫或者不知所措! 了解什么python的数据可视化? 数据的读取(一般伴随着课程文件中会进行提供和利用) 数据可视化是将Python应用于大气海洋科学中数据处理及分析过程的重要环节,它可以…

ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

《嵌入式工程师自我修养/C语言》系列——ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么? 一、ARM处理器的工作模式及寄存器1.1 ARM处理器的工作模式1.2 ARM处理器中的寄存器 二、ARM 异常中断处理2.1 什么是异常?异常向量表是什么&…

认识AJAX

一、什么是Ajax? 有跳转就是同步,无跳转就是异步 Asynchronous Javascript And XML(异步JavaScript和XML) Ajax 异步 JavaScript 和XML。Ajax是一种用于创建快速动态网页的技术通过在后台与服务器进行少量数据交换,Ajax可以使网…