r ridge回归_手把手带你画高大上的lasso回归模型图

本文深入讲解Lasso回归算法,从线性回归引入正则化概念,对比L1和L2范数的区别,并介绍如何利用R语言glmnet包实现Lasso Cox回归分析,包括安装包、构建生存分析对象、选择λ值等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各位芝士好友,今天我们来聊一聊lasso回归算法。与预后有关的文章,传统的做法一般会选择多变量cox回归,高级做法自然就是我们今天的lasso分析。

首先我们先来几篇文献,看一下lasso最近发的两篇文章,如下:                            c52ca9072b741690931a1b16e3700cd5.png3ea6b00259617b445a34e49aa7bf09dc.png

这两篇文章均是采用了lasso回归的范文。感兴趣的可以自行下载学习,当然今天我们主要是和大家探讨lasso回归的细枝末节,具体体会这个算法的精妙和思想。

Lasso回归本质上就是一种回归分析,我们见到最多的或许就是线性回归,方程如下:

8bac1a9428247319564e5b9bd9d53b0f.png

其中x为自变量,y为因变量,线性回归采用一个高维的线性函数来尽可能的拟合所有的数据点,最简单的想法就是最小化函数值与真实值误差的平方,比如假设我们构建一个函数H。

3408340d0e367f7205a318006a132253.png

这个时候我们需要保证函数J达到最小,就可以了。

Lasso回归则是在一般线性回归基础上加入了正则项,在保证最佳拟合误差的同时,使得参数尽可能的“简单”,使得模型的泛化能力强。正则项一般采用一,二范数,使得模型更具有泛化性,同时可以解决线性回归中不可逆情况。这个时候你可能不淡定了,你是魔鬼吗?什么是正则项???

正则项:正则化就是通过对模型参数进行调整(数量和大小),降低模型的复杂度,以达到可以避免过拟合的效果。正则化是机器学习中的一种叫法,其它领域内叫法各不相同,统计学领域叫惩罚项,数学领域叫范数。而正则项又包括两种,即一范数和二范数,就是L1和L2范数。

重点来了:采用L1范数则是lasso 回归,L2范数则是岭回归了。那么函数有啥区别呢?如下:

40097b62273f9b3bc7d92a68b726d066.gif

L1范数

40097b62273f9b3bc7d92a68b726d066.gif

9998a009b026155cd4fab75752d753d4.png

40097b62273f9b3bc7d92a68b726d066.gif

L2范数

40097b62273f9b3bc7d92a68b726d066.gif

14a8fe7dc9f82b2c9c2533ea2542f6fe.png

红框标记的就是正则项,L1范数是所有参数绝对值之和,对应的回归方法叫做Lasso回归。

L2范数是所有参数的平方和,对应的回归方法叫做Ridge回归,岭回归需要注意的是,正则项中的回归系数为每个自变量对应的回归系数,不包含回归常数项

L1和L2各有优劣,L1是基于特征选择的方式,有多种求解方法,更加具有鲁棒性;L2则鲁棒性稍差,只有一种求解方式,而且不是基于特征选择的方式。我们在大多数signature文章中主要是基因挑选,自然就是今天的主题lasso cox回归,接下来我们看一下,如何采用R语言glmnet来实现。

1|安装glmnet包,操作很简单,直接install,接着加载进来就行,接着我们还需要加载示例数据。

19a6b58c7bf6d2633ca7143da37e2763.png

这个cox数据共包含两个数据,但都是矩阵,我们需要给其整理成一个是包含30个基因在1000个病人样本中的表达,另一个是每个患者的生存状态和生存时间,生存时间以年为单位,如下:

68c676fda608b9bf5b53b5cd3f1c59dd.png

2|构建生存分析对象,以进行下一步构建lasso回归:

d85207c8c6d6a9e466ad6b61bb5a8515.png

3|通过glmnet函数中的设置family参数定义采用的算法模型,比如设置cox,则如下:

62b58a95f9254dbfd08c0ca360c0c7a7.png

包自带的绘图如下:

df462dcc59bb59c47f7540b07263a2b0.png

4|Lasso回归最重要的就是选择合适的λ值,可以通过cv.glmnet函数实现

d65e95d5d08a41944de1ac03547a8198.png

结果如下:

3e7bbcdfb8f87c2ca24ec3910640621e.png

基于该图选择最佳的λ,一般可以采用两个内置函数实现cvfit$lambda.min和 cvfit$lambda.1se 。

5|基因筛选,采用coef函数即可,有相应参数的gene则被保留,采用λ使用的是lambda.min:

bafc5c67e4c90f4da42b4db56ccbae34.png结果如下:040910415f497cc0c9d14964fc7eda1a.png

第二列有数值是非点号的则代表被选择的基因。

6|美化lasso图,产生如下的图:

f7a960b34cbe7024019e923e3bb6071d.png

代码如下,我们将代码封装在plot_lasso.r里面,只需要source即可,如下:

31b02379f6b797807dd4340da04d4c5c.png

Ok,今天就和大家分享到这,后台回复“lasso”获取源文件及代码。

公众号最近改版,以防失联,加个星标吧!

5da17d17affd47d47a776670575824af.gif

课程推荐e231a7dbf817aa29ba9fbfef5953e0c2.png

7c7fcbecedb791a487cc2f91e403f6f7.png

ae0f9148e38df67c4c7a1f472d1c8576.png

5ef7511898f45263c9320bfc8b203bd1.png

e7dd961185f2164f3c72cca408bbbd56.png

11c89c81d6927cdb2956e536ae5f75ef.png

6f6932785fa0125e7cd1fde299712c9a.png

b7768b269d78faf6c98537505124f85e.png

多点好看,少点脱发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值