r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现-3

简介: r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现-2

https://developer.aliyun.com/article/1489395


系数上下限

假设我们要拟合我们的模型,但将系数限制为大于-0.7且小于0.5。这可以通过upper.limitslower.limits 参数实现 :

image.png

通常,我们希望系数为正,因此我们只能lower.limit 将其设置 为0。

惩罚因素

此参数允许用户将单独的惩罚因子应用于每个系数。每个参数的默认值为1,但可以指定其他值。特别是,任何penalty.factor 等于零的变量 都不会受到惩罚

image.png

在许多情况下,某些变量可能是重要,我们希望一直保留它们,这可以通过将相应的惩罚因子设置为0来实现:

image.png

我们从标签中看到惩罚因子为0的三个变量始终保留在模型中,而其他变量遵循典型的正则化路径并最终缩小为0。

自定义图

有时,尤其是在变量数量很少的情况下,我们想在图上添加变量标签。

我们首先生成带有10个变量的一些数据,然后,我们拟合glmnet模型,并绘制标准图。

image.png

我们希望用变量名标记曲线。在路径的末尾放置系数的位置。

image.png

多元正态

使用family = "mgaussian" option 获得多元正态分布glmnet

显然,顾名思义,y不是向量,而是矩阵。结果,每个λ值的系数也是一个矩阵。

在这里,我们解决以下问题:

image.png

这里,βj是p×K系数矩阵β的第j行,对于单个预测变量xj,我们用每个系数K向量βj的组套索罚分代替每个单一系数的绝对罚分。

我们使用预先生成的一组数据进行说明。

我们拟合数据,并返回对象“ mfit”。

mfit = glmnet(x, y, family = "mgaussian")

如果为 standardize.response = TRUE,则将因变量标准化。

为了可视化系数,我们使用 plot 函数。

image.png

注意我们设置了 type.coef = "2norm"。在此设置下,每个变量绘制一条曲线,其值等于ℓ2范数。默认设置为 type.coef = "coef",其中为每个因变量创建一个系数图。

通过使用该函数coef ,我们可以提取要求的λ值的系数, 并通过进行预测 。

## , , 1
## 
##           y1      y2      y3    y4
## \[1,\] -4.7106 -1.1635  0.6028 3.741
## \[2,\]  4.1302 -3.0508 -1.2123 4.970
## \[3,\]  3.1595 -0.5760  0.2608 2.054
## \[4,\]  0.6459  2.1206 -0.2252 3.146
## \[5,\] -1.1792  0.1056 -7.3353 3.248
## 
## , , 2
## 
##           y1      y2      y3    y4
## \[1,\] -4.6415 -1.2290  0.6118 3.780
## \[2,\]  4.4713 -3.2530 -1.2573 5.266
## \[3,\]  3.4735 -0.6929  0.4684 2.056
## \[4,\]  0.7353  2.2965 -0.2190 2.989
## \[5,\] -1.2760  0.2893 -7.8259 3.205

预测结果保存在三维数组中,其中前两个维是每个因变量的预测矩阵,第三个维表示因变量。

我们还可以进行k折交叉验证。

我们绘制结果 cv.glmnet 对象“ cvmfit”。

image.png

显示选定的λ最佳值

cvmfit$lambda.min
## \[1\] 0.04732
cvmfit$lambda.1se
## \[1\] 0.1317

逻辑回归

当因变量是分类的时,逻辑回归是另一个广泛使用的模型。如果有两个可能的结果,则使用二项式分布,否则使用多项式。

二项式模型

对于二项式模型,假设因变量的取值为G = {1,2} 。表示yi = I(gi = 1)。我们建模

image.png

可以用以下形式写

image.png

惩罚逻辑回归的目标函数使用负二项式对数似然

image.png

我们的算法使用对数似然的二次逼近,然后对所得的惩罚加权最小二乘问题进行下降。这些构成了内部和外部循环。

出于说明目的,我们 从数据文件加载预生成的输入矩阵 x 和因变量 y

对于二项式逻辑回归,因变量y可以是两个级别的因子,也可以是计数或比例的两列矩阵。

glmnet 二项式回归的其他可选参数与正态分布的参数 几乎相同。不要忘记将family 选项设置 为“ binomial”。

fit = glmnet(x, y, family = "binomial")

像以前一样,我们可以输出和绘制拟合的对象,提取特定λ处的系数,并进行预测。

image.png

逻辑回归略有不同,主要体现在选择上 type。“链接”和“因变量”不等价,“类”仅可用于逻辑回归。总之,*“链接”给出了线性预测变量

  • “因变量”给出合适的概率
  • “类别”产生对应于最大概率的类别标签。
  • “系数”计算值为的系数 s

在下面的示例中,我们在λ=0.05,0.01的情况下对类别标签进行了预测。

##      1   2  
## \[1,\] "0" "0"
## \[2,\] "1" "1"
## \[3,\] "1" "1"
## \[4,\] "0" "0"
## \[5,\] "1" "1"

对于逻辑回归,type.measure

  • “偏差”使用实际偏差。
  • “ mae”使用平均绝对误差。
  • “class”给出错误分类错误。
  • “ auc”(仅适用于两类逻辑回归)给出了ROC曲线下的面积。

例如,

它使用分类误差作为10倍交叉验证的标准。

我们绘制对象并显示λ的最佳值。

image.png

cvfit$lambda.min
## \[1\] 0.01476
cvfit$lambda.1se
## \[1\] 0.02579

coef 并且 predict 类似于正态分布案例,因此我们省略了细节。我们通过一些例子进行回顾。

## 31 x 1 sparse Matrix of class "dgCMatrix"
##                    1
## (Intercept)  0.24371
## V1           0.06897
## V2           0.66252
## V3          -0.54275
## V4          -1.13693
## V5          -0.19143
## V6          -0.95852
## V7           .      
## V8          -0.56529
## V9           0.77454
## V10         -1.45079
## V11         -0.04363
## V12         -0.06894
## V13          .      
## V14          .      
## V15          .      
## V16          0.36685
## V17          .      
## V18         -0.04014
## V19          .      
## V20          .      
## V21          .      
## V22          0.20882
## V23          0.34014
## V24          .      
## V25          0.66310
## V26         -0.33696
## V27         -0.10570
## V28          0.24318
## V29         -0.22445
## V30          0.11091

如前所述,此处返回的结果仅针对因子因变量的第二类。

##       1  
##  \[1,\] "0"
##  \[2,\] "1"
##  \[3,\] "1"
##  \[4,\] "0"
##  \[5,\] "1"
##  \[6,\] "0"
##  \[7,\] "0"
##  \[8,\] "0"
##  \[9,\] "1"
## \[10,\] "1"


r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现-4

https://developer.aliyun.com/article/1489397

相关文章
|
18天前
|
机器学习/深度学习 Python
弹性网(Elastic Net)正则化
弹性网(Elastic Net)正则化
|
13天前
|
网络架构
.NET 网络唤醒
【9月更文挑战第5天】在网络管理中,.NET 可以实现 Wake-on-LAN,即通过发送特定数据包(魔术包)唤醒睡眠或关机状态的计算机。首先需引入命名空间(System.Net, System.Net.Sockets),然后编写 WakeUpComputer 方法,构造并发送含有目标计算机 MAC 地址的魔术包,最后调用此方法即可。使用前,请确认目标计算机及网络设备支持此功能。
18 12
|
1月前
|
人工智能 文字识别
通义语音AI技术问题之LCB-net模型对幻灯片中文本信息的使用如何解决
通义语音AI技术问题之LCB-net模型对幻灯片中文本信息的使用如何解决
13 0
|
3月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
48 3
|
3月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
115 0
|
3月前
|
开发框架 .NET 对象存储
【.NET Core】深入理解异步编程模型(APM)
【.NET Core】深入理解异步编程模型(APM)
77 1
|
3月前
|
SQL 开发框架 .NET
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
(20)ASP.NET Core EF创建模型(必需属性和可选属性、最大长度、并发标记、阴影属性)
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
使用PyTorch实现L1, L2和Elastic Net正则化
本文介绍了机器学习中的正则化技术,包括L1、L2和Elastic Net,用于防止过拟合。L1正则化产生稀疏模型,适合特征选择;L2正则化使参数接近零但不为零,减少过拟合。Elastic Net结合L1和L2优点,适用于特征相关情况。在Python的sklearn库中,可使用Lasso、Ridge和ElasticNet类实现这些正则化。此外,文中提供PyTorch代码示例,展示了如何在多层感知机上应用L1、L2和Elastic Net正则化。
71 0
|
4月前
|
JSON API 定位技术
.NET集成DeveloperSharp实现http网络请求&与其它工具的比较
该内容介绍了一个支持.NET Core 2.0及以上和.NET Framework 4.0及以上的HTTP请求调用方法,主要讨论了POST和GET两种形式。POST请求较为常见,涉及调用地址、发送参数、HTTP请求头和编码格式设置。文中提供了一个使用DeveloperSharp库发送POST请求的C#代码示例,用于发送短信,其中`IU.HttpPost`方法用于执行POST请求。此外,还提到了`HttpPost`方法的参数和返回值说明。最后简要提及了GET请求,通常用于URL带有查询参数的情况,并给出一个简单的GET请求示例。
|
4月前
|
机器学习/深度学习 数据可视化
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析
R语言lasso协变量改进Logistic逻辑回归对特发性黄斑前膜因素交叉验证可视化分析

热门文章

最新文章