首页 > 其他分享 >LASSO线性回归模型

LASSO线性回归模型

时间:2022-10-03 22:00:48浏览次数:58  
标签:sum beta ij tilde 线性 LASSO 模型 lambda

LASSO线性回归模型

LASSO是1996年由Tibshirani提出的一种惩罚方法,可以同时进行变量选择和参数估计,适用于高维数据。
特点:稀疏性,不具有无偏性和一致性,不具有Oracle属性

1. 研究背景

例如研究基因对某个生物表征的影响,假定共有p个基因的n次观测值(p>>n),因变量是连续型变量。我们想要筛选与因变量强相关的基因,直接建立线性回归模型会造成过拟合,可以通过对系数施加惩罚,如L1范数,即增加LASSO惩罚项,将大量冗余变量的系数收缩到0,以此达到变量筛选的目的。
具有LASSO惩罚项的线性回归模型要求解的目标函数为:

\[min_{\beta\in R^{p}}L(\beta)=min_{\beta\in R^{p}} \left\{\frac{1}{2n}\left\Vert Y-X\beta\right\Vert_{2}^{2}+\lambda\Vert \beta\Vert_{1}\right\} \ \ \ (1) \]

其中,第一项的L2范数是用误差平方和表示的损失函数,第二项是LASSO惩罚项,使得所有系数绝对值之和小于某个较小的正常数。

2. 通过坐标下降法求解

坐标下降法

基本思想:在每步迭代中沿一个坐标的方向进行搜索,通过循环使用不同的坐标方向来达到目标函数的局部极小值,属于非梯度优化方法。适用于线性回归模型求解,可广泛用于不可导的优化问题。

具体过程:
假设目标函数为\(f(x_1,x_2,⋯,x_p )\)

  1. 选取\(x_2,x_3,⋯,x_p\)的初始值;
  2. 在每轮迭代中:
    固定\(x_2,x_3,⋯,x_p\),将\(x_1\)当作自变量,最小化\(f(x_1)\),得到\(x_1^{*}\);
    将\(x_1^{∗}\)代入目标函数,同时固定\(x_3,⋯,x_p\),最小化\(f(x_2)\),得到\(x_2^{∗}\);
    将\(x_1^{∗},x_2^{∗}\)代入目标函数,同时固定\(x_4,⋯,x_p\),最小化\(f(x_3)\),得到\(x_3^{∗}\);
    ……
    得到本轮迭代的一组值\(x_1^{∗},x_2^{∗},⋯,x_p^{∗}\);
    若满足迭代终止条件则终止迭代,否则进行下一轮迭代。

LASSO线性回归求解过程

将目标函数(1)对\(\beta_j\)求导,令导数等于零,即:

\[\frac{\partial L(\beta)}{\partial \beta}=-\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}+\frac{1}{n}\sum_{i=1}^n x_{ij}^2\beta_j+\lambda sign{\beta_j}=0, \]

其中\(\tilde{y}_i^{(-j)}=\sum_{k=1,k\neq j}^p x_{ik}\beta_k\)。

求解上式时分情况讨论,可以得到\(\beta\)的估计值\(\hat{\beta}\):

当\(\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}>0\),且\(\lambda<\left|\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}\right|\)时,有:

\[\hat{\beta}=\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}-\lambda \]

当\(\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}<0\),且\(\lambda<\left|\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}\right|\)时,有:

\[\hat{\beta}=\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}+\lambda \]

当\(\lambda\ge\left|\frac{1}{n}\sum_{i=1}^n (y_i-\tilde{y}_i^{(-j)})x_{ij}\right|\)时,有:

\[\hat{\beta}=0 \]

该解析解也可以用软阈值函数表示

3. Matlab代码

通过glmnet包求解

clear;
clc;
load data;   #加载数据,包括数据矩阵x,因变量y
x=zscore(x);
fold = 10;    #10折交叉验证
m = 10;       #参数lambda的个数
options = glmnetSet;
options.alpha = 1;
options.nlambda = m;
fit = glmnet(x,y,'gaussian',options);
CVerr = cvglmnet(x,y,fold,[],'response','gaussian',glmnetSet,0);
beta_path = fit.beta;    #得到对应于所有lambda的系数矩阵
intercept_path = fit.a0;   #截距项
lambda_path = fit.lambda;   #lambda的取值
opt_index = find(CVerr.glmnetOptions.lambda == CVerr.lambda_min); #最优lambda所在位置
beta = beta_path(:,opt_index);
selectedgene = find(beta~=0);   #模型筛选出来的变量所在位置

标签:sum,beta,ij,tilde,线性,LASSO,模型,lambda
From: https://www.cnblogs.com/DYDNyang/p/16751394.html

相关文章

  • 使用flask入门一个测试平台01-模型设计
    前言​ 在去年的年中,我一时冲动写了一个基于flask开发的测试平台,然后把服务托管在了腾讯云上,本来想是写文章分享的怎么开发的,但是一直没有写。如今一年已经过去了,服务器也......
  • 仿真之路-模型建立1-jcmaxx33
    信念:输入能力磁性材料特性和熟练的建模输出电磁仿真之路的拦路虎,实体模型建立,重新拾起SOLIDWORKS,每日一练!今日阅读物联网近场干硬通信原理欲建模型(螺柱式线圈)-jcma......
  • ContextCapture中的模型航拍方法和技巧
    在进行实景建模之前,获取被拍摄物体的照片是很重要的一项工作,因为如果没有按照规则拍摄或者拍摄相片质量不佳,将会直接影响我们后期建模,甚至无法建模。我们建议使用ContextC......
  • 02 线性表 | 数据结构与算法
    1.线性表线性表的定义特点:存在唯一一个被称为第一个的数据元素存在唯一一个被称为最后一个的数据元素除了第一个元素之外,其他的数据元素都有唯一一个直接前驱除......
  • DAP数仓模型及数据集成过程说明
    科技飞速发展的时代,企业信息化建设会越来越完善,越来越体系化,当今数据时代背景下更加强调、重视数据的价值,以数据说话,通过数据为企业提升渠道转化率、改善企业产品、实现精准......
  • 数字三角形模型
    数字三角形模型以数字三角形这个题为原型的所有题型。AcWing898.数字三角形原题链接:https://www.acwing.com/problem/content/900/解题思路将这个数字三角形看成一......
  • java网络编程--1 网络模型、网络协议
    java网络编程--1网络模型、网络协议javaweb指的是网页编程B/S网络编程指的是面向TCP/IP相关C/S1.1、概述两种不同的通信模式:实时通信:打电话连接---接了--......
  • [数值分析]解线性方程组的迭代法
    解线性方程组的迭代法前言本文主要用两个简单的例子来介绍了解线性方程组的三种迭代法的原理和实现方法:第一个例子供我们去学习,而第二个例子供我们去验证。还另外介绍......
  • Redis的线程模型
      我觉得这个图就非常清晰,如果是懂BIO/Netty的人看起来应该很容易,是的没错Redis的线程模型就是基于多路复用器做的,采用非阻塞的IO模型,当前是6.x之前的版本,6.......
  • 05_MVVM模型
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>理解MVVM</title><!--引入Vue--><scripttype="text/javascr......