LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (2023)

最近一位客户要求我们写一份关于 LASSO 的研究报告,包括一些图形和统计结果。

Glmnet 是一个通过最大惩罚概率拟合广义线性模型的包。在正则化 lambda 参数的值网格上针对 LASSO 或 Elastic Net 惩罚计算正则化路由。该算法非常快并且可以利用输入矩阵中的方差。X.适合线性、逻辑和多项式、泊松和 Cox 回归模型。可以从拟合模型做出若干预测。您还可以自定义多元线性回归。

环球网解决以下问题

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (1)

在覆盖整个范围的 lambda 值网格中。其中 l(y, η) 是观测值 i 的负对数概率贡献;例如对于高斯分布LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (2)弹力网惩罚由α、LASSO(α=1,默认)、Ridge(α=0)控制。 λ 参数设置控制惩罚的整体强度。

众所周知,comb penalty 导致相关预测变量的系数相互减小,而 lasso 倾向于选择其中一个并丢弃其他。弹力网然后混合两者。

环球网该算法采用循环坐标下降法,在每个参数固定的情况下不断优化目标函数,如此循环直至收敛。我们的算法可以非常快速地计算出解决方案。

该代码可以处理稀疏输入矩阵格式和系数的范围约束,还包括用于预测和绘图的方法,以及用于执行 K 折交叉验证的函数。

快速开始

使用的标准模型是线性高斯或“最小二乘”模型。为了说明,我们加载了一个现成的数据集。用户可以上传自己的数据或使用工作区中保存的数据。

该命令从保存的 R 数据加载输入数组X求和向量j

我们适应模型环球网

可以被引导阴谋系数显示功能:

跟踪(调整)

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (3)

每条曲线对应一个变量。它显示了随着 λ 的变化,其系数相对于整个系数向量的 ℓ1 范数的路径。上轴表示当前λ中非零系数的个数,即循环的有效自由度(去向).用户还可以对曲线进行注释。这可以通过标签 = 真在 plot 命令中设置它来完成它。

环球网如果我们只是写或使用对象的名称功能,为每个步骤显示路线摘要:

打印(定制)
## ## 调用:glmnet(x = x, y = y) ## ## Df %Dev Lambda## [1,] 0 0.0000 1.63000## [2,] 2 0.0553 1.49000 ## [3,] 2 0.1460 1.35000## [4,] 2 0.2210 1.23000## [5,] 2 0.2840 1.12000## [6,] 2 0.3350 1 .02000## [7,] 4 0.3900 0.93300## [8,] 5 0.4560 0.85000## [ 9, ] ,] 5 0.5150 0.77500## [10,] 6 0 .5740 0.70600##[11,]6 0.6260 0.64300##[12,]6 0.6690 0.58600###[13,]6 0.7050 0.53400## [14.73 0 0.47 46##[15,] 7 0.7620 0.44300##[16,] 7 0.7860 0.40400###[17,] 7 0.8050 0.36800##[18,] 7 0.8220 0.33500## [19, ] 7 0.8350 0.30600## [20, ] 7 0.8460 0.27800

返回从左到右非零系数的个数 (测向仪),解释的(零)偏差百分比(%dv) 与 λ (拉姆达)勇敢。

我们可以得到序列域中一个或多个 λ 的实系数:

系数(拟合,s=0.1)
## 21 x 1 类“dgCMatrix”的稀疏矩阵## 1## (Intercepción) 0.150928## V1 1.320597## V2 。 ## V3 0.675110 ## V4。 ## V5 -0.817412 ## V6 0.521437 ## V7 0.004829 ## V8 0.319416 ## V9。 ##V10。 ## V11 0.142499 ## V12。 ##V13。 ## V14 -1.059979 ## V15。 ##V16。 ##V17。 ##V18。 ##V19。 ## V20 -1.021874

也可以使用新的输入数据对给定的 λ 进行预测:

预测(适合,neux=nx,s=c(0.1,0.05))
## 1 2## [1] 4,4641 4,7001## [2] 1,7509 1,8513## [3] 4,5207 4,6512## [4] -0,6184 -0,6764 ## [5] 1,7302 1,8451## [6 ,] 0,3565 0,3512## [7,] 0,2881 0,2662## [8,] 2,7776 2,8209## [ 9,] -3,7016 -3,7773## [10,] 1,1546 1.1067

功能环球网返回一组模板供用户选择。交叉验证可能是这项任务最简单、使用最广泛的方法。

简历.glmnet是交叉验证的主要功能。

简历.glmnet还一个简历.glmnet对象,此处为 cvfit,包含交叉验证拟合的所有组件的列表。

我们可以画物体。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (4)

包括 lambda 系列的交叉验证曲线(红色虚线)和上下标准差曲线(误差线)。垂直虚线表示两个选定的 λ。

我们可以查看所选的 λ 和相应的系数。例如,

cvfit$lambda.min
## [1] 0,08307

λ.min是表示最小平均交叉验证误差的 lambda 值。另一个存储的 lambda 是lambda.1se,它提供了一个模型,其中误差在最小标准误差范围内。我们只需要更换λ.min到达lambda.1se就这样。

系数(cvfit,s =“lambda.min”)
## 21 x 1 类“dgCMatrix”的稀疏矩阵## 1## (Intercepción) 0.14936## V1 1.32975## V2 。 ## V3 0.69096 ## V4。 ## V5 -0.83123 ## V6 0.53670 ## V7 0.02005 ## V8 0.33194 ## V9。 ##V10。 ## V11 0.16239 ## V12。 ##V13。 ## V14 -1.07081 ## V15。 ##V16。 ##V17。 ##V18。 ##V19。 ## V20 -1.04341

请注意,系数以稀疏矩阵格式呈现。这是因为正则化路径上的解通常是稀疏的,因此使用稀疏格式可以节省时间和空间。

之后可以组装简历.glmnet预测对象。让我们看一个例子。

## 1## [1,] -1,3647## [2,] 2,5686## [3,] 0,5706## [4,] 1,9682## [5,] 1,4964

新的使用新的输入矩阵小号与之前相同的是预测的 lambda 值。

线性回归

这里的线性回归指的是两组模型。一个和高夏诺普通的分散式, 另一个是高斯亚诺多元正态分散式

普通的分散式

假设我们有观测值 xi ∈ Rp 和 yi ∈ R, i = 1,...,N。目标函数是

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (5)

其中 λ≥0 是复杂性参数,0≤α≤1 位于岭回归 (α=0) 和 LASSO 循环 (α=1) 之间。

使用协调下降法来解决这个问题。特别是βj=β~j处的梯度计算,简单计算就是update

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (6)

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (7)

如果X当变量被标准化为具有单位方差(默认值)时,上述公式适用。

环球网各种选项可用于定制。在这里,我们描述了一些常用的选项环球网在函数中指定。

  • 埃斯巴托表示弹性网络α的混合参数,在区间α∈[0,1]中。 α=1 是套索(默认),α=0 是毛刺。

  • 重量它用于观察重量。每个观察值的默认值为 1。

  • 恩拉姆达是字符串中lambda值的个数。默认值为 100。

  • 拉姆达它可以提供,但通常不提供,程序会构建一个序列。通过自动生成,lambda 序列由下式给出λmax没关系λ.Min.Ratio

  • 标准化模拟器X在拟合模型系列之前标准化变量的逻辑指示器。

例如,我们设置 α = 0.2 并对后半部分的观察结果给予双倍权重。为了不在这里逗留太久,我们定义为恩拉姆达20。但是,在实践中,建议将 lambda 的数量设置为 100(默认)或更多。

然后我们可以生产环球网目的。

打印(定制)
## ## 调用:glmnet ( x = x , y = y , weights = c ( rep ( 1 , 50 ) , rep ( 2 , 50 ) ) , alpha = 0.2 , nlambda = 20 ) ## ## Df %Dev Lambda## [1,] 0 0.000 7.94000## [2,] 4 0.179 4.89000## [3,] 7 0.444 3.01000## [4,] 7 0.657 1.85000## [5, 2]。 ] 8 0.785 1.14000##[6,] 9 0.854 0.70300## [7,] 10 0.887 0.43300## [8,] 11 0.902 0.26700## [9,] 14 0.910 0.16400 ## [10,] 17 0.914 0.10# # [11.9157 0.9157 0.9157 0.9100## ## [12,] 17 0.916 0.03840## [13,] 19 0.916 0.9160 .02360## [14,] 20 0.916 0.01##460## [15,] 20 0.916 69 [ 0.008 .91] 2 0.00552## [17, ] 20 0.916 0.00340

这将显示生成对象的调用。调整和柱子测向仪(非零系数的数量),%dv(解释方差的百分比)和拉姆达(对应λ的值)一个三列的矩阵。

我们可以绘制拟合对象。

让我们通过标记每条曲线与对数 lambda 值来表示“拟合”。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (8)

这是训练数据中偏差的百分比。我们在这里看到的是,在路径的末端,值变化不大,但系数“膨胀”了一点。这使我们能够专注于重要的调整部分。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (9)

我们可以提取系数并根据一些特定值进行预测。两个常用的选项是:

  • 小号指定要提取的 lambda 值。

  • 确切地指示系数是否需要精确值。

一个简单的例子是:

## 21 x 2 Matrix esparsa da classe "dgCMatrix"## 1 1## (Intercepción) 0.19657 0.199099## V1 1.17496 1.174650## V2 。 . ## V3 0.52934 0.531935 ## V4。 . ## V5 -0.76126 -0.760959## V6 0.46627 0.468209## V7 0.06148 0.061927## V8 0.38049 0.380301## V9 。 . ##V10。 . ## V11 0.14214 0.143261 ## V12。 . ##V13。 . ## V14 -0.91090 -0.911207## V15。 . ##V16。 . ##V17。 . ##V18。 0.009197##V19。 . ## V20 -0.86099 -0.863117

左栏是完全=真右栏是不正确.上面我们可以看到 0.01 不是连续的,所以有差异但不大。如果没有特殊要求,线性插值就足够了。

用户可以根据拟合的对象进行预测。除了里面的选项系数,这是最重要的参数新的新的值数组为X典型值选项允许用户选择预测类型: *“链接”提供调整后的值

  • 因变量与正态分布的“项”相同。

  • 计算值的系数小号

例如,

## 1## [1,] -0,9803## [2,] 2,2992## [3,] 0,6011## [4,] 2,3573## [5,] 1,7520

报告前 5 个观测值在 λ=0.05 时的拟合值。如果指定了多个值,小号生成预测矩阵。

用户可以自定义 K 折交叉验证。除了所有环球网在参数之外,简历.glmnet还有一些特殊参数包括恩多布尔(频率),折叠(用户指定的次数),类型.测量(交叉验证丢失):*“偏差”或“mse”

  • “mae”使用平均绝对误差

例如,

cvfit = cv.glmnet(x, y, type.measure = "mse", nfolds = 20)

根据均方根误差准则进行 20 倍交叉验证。

并行计算也受到影响简历.glmnet.这里给我们举个简单的对比例子。

系统时间(cv.glmnet(X,Y))
## 用户系统过期## 3.591 0.103 3.724
system.time(cv.glmnet(X, Y, paralelo = TRUE))
## 用户系统过期## 4.318 0.391 2.700

从上面的提示中可以看出,并行计算可以显着加快计算过程。

  • “lambda.min”:达到最小 MSE 的 lambda。
cvfit$lambda.min
## [1] 0,08307
## 21 x 1 类“dgCMatrix”的稀疏矩阵## 1## (Intercepción) 0.14936## V1 1.32975## V2 。 ## V3 0.69096 ## V4。 ## V5 -0.83123 ## V6 0.53670 ## V7 0.02005 ## V8 0.33194 ## V9。 ##V10。 ## V11 0.16239 ## V12。 ##V13。 ## V14 -1.07081 ## V15。 ##V16。 ##V17。 ##V18。 ##V19。 ## V20 -1.04341

这里我们使用相同的 k-folds 并为 α 选择一个值。

把它们都放在同一层楼:

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (10)

我们看到循环(阿尔法 = 1) 在这里工作得最好。

假设我们想要拟合我们的模型,但我们将系数限制为大于 -0.7 且小于 0.5。这可以通过上限下限执行参数:

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (11)

通常我们希望系数为正,所以我们只能下限将其设置为 0。

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (12)

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (13)

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

有时,尤其是当变量数量较少时,我们想在图表中添加变量标签。

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (14)

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (15)

多元正态

使用familia = "mgaussiano"能够获得多元正态分布环球网

当然,顾名思义,它不是向量,而是矩阵。因此,每个 lambda 值的系数也是一个数组。

在此过程中,我们解决了以下问题:

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (16)

这里 βj 是系数矩阵 p × K β 的第 j 行,对于单个预测变量 xj,我们将每个单独系数的绝对惩罚替换为每个系数向量 K βj 的组循环惩罚。

为了说明,我们将使用之前生成的数据集。

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

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

我知道标准化.response = TRUE, 因变量是标准化的。

为了可视化系数,我们使用阴谋功能。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (17)

注意我们定义type.coef = "2范数".使用此配置,每个变量绘制一条曲线,其值等于范数ℓ2。默认是tipo.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,29,189# 2,5 -1,2760 0,2893 -7,220205 3.

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

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

我们记录结果简历.glmnet'cvmfit' 对象。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (18)

显示选定的理想 lambda 值

cvmfit$lambda.min
## [1] 0,04732
cvmfit$lambda.1se
## [1] 0,1317

逻辑回归

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

二项式模型

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (19)

可以写成形式

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (20)

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (21)

我们的算法使用对数似然的二次近似,然后下降到由此产生的惩罚加权最小二乘问题。这些形成了内环和外环。

为了说明,我们将从数据文件加载先前生成的输入矩阵X和因变量j

在二项逻辑回归中,因变量 y 可以是两水平因子或频率或比例的两列矩阵。

环球网二项式回归的其他可选参数与正态分布几乎相同。别忘了放家庭该选项设置为“二项式”。

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

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (22)

逻辑回归略有不同,主要在选择上典型值. Link 和 Dependent Variable 不等价,Class 仅适用于逻辑回归。简而言之,*“链接”指定线性预测器

  • “因变量”给出相应的概率

  • “类”产生对应于最高概率的类标签。

  • 计算值的系数小号

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

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

对于逻辑回归类型.测量

  • “偏移量”使用实际偏移量。

  • “mae”使用平均绝对误差。

  • “类”给出了错误分类。

  • auc(仅适用于二分类逻辑回归)指定 ROC 曲线下的面积。

例如,

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

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

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (23)

cvfit$lambda.min
## [1] 0,01476
cvfit$lambda.1se
## [1] 0,02579

系数预测与正态分布类似,所以我们省略细节。我们用一些例子来验证。

## 31 x 1 矩阵 der Klasse“dgCMatrix”## 1## (Intercepción) 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”

对于多项式模型,假设因变量的 K 个水平为 G = {1,2,...,K}。我们在这里建模

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (24)

设 Y 为依赖于指标 N×K 的变量矩阵,元素 yiℓ=I(gi=ℓ)。那么净弹性惩罚的负对数似然函数

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (25)

β 是 p×K 个系数的矩阵。 βk 指的是第 k 列(对于结果类别 k),βj 指的是第 j 行(变量 j 的系数向量 K)。最后一个惩罚项是||βj|| q,对此我们有两种可能性:q ∈ {1,2}。如果 q = 1,这是每个参数的循环惩罚。当 q = 2 时,这是对给定变量的所有 K 个系数的集中循环惩罚,使它们为零或非零。

对于多项情况,用法类似于逻辑回归,我们加载生成的数据集。

环球网多项逻辑回归中的可选参数与二项回归中的可选参数非常相似,只有少数例外。

多项式回归的一个特殊选项是多项式.typ,如果允许,它允许捆绑套索惩罚type.multinomial = "分组".这确保变量的所有多项式系数以及多变量因变量一起输入或生成。

我们以图形方式呈现结果。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (26)

我们还可以交叉验证并绘制返回的对象。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (27)

预测最佳选项的 λ:

## 1 ## [1,] "3"## [2,] "2"## [3,] "2"## [4,] "1"## [5,] "1"## [6、]“3”## [7、]“3”## [8、]“1”## [9、]“1”## [10、]“2”

毒液模型

泊松回归用于模拟计数数据,假设泊松误差或均值和方差成正比的非负数据。泊松也是指数分布家族的一员。我们通常对数建模:LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (28)
给予观察LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (29)对数概率

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (30)

和以前一样,让我们​​优化对数惩罚:

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (31)

Glmnet 使用外部牛顿循环和内部加权最小二乘循环(如逻辑回归)优化此标准。

首先我们加载泊松数据集。

再次绘制系数。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (32)

和以前一样,我们可以使用每个系数并提取和预测给定 λ 处的系数预测

例如,我们可以

. ##V7。 ##V8。 ##V9。 ##V10。 ##V11。 ## V12 0.01816 ## V13。 ##V14。 ##V15。 ##V16。 ##V17。 ##V18。 ##V19。 ##V20。
## 1 2## [1,] 2,4944 4,4263## [2,] 10,3513 11,0586## [3,] 0,1180 0,1782## [4,] 0,9713 1 ,6829## [5,] 1,1133 1,9935

我们还可以使用交叉验证来找到用于推理的最佳 λ。

除此之外,选项几乎与普通家庭相同类型.测量*,“mse”表示均方误差*,“mae”表示平均绝对误差。

我们可以画简历.glmnet目的。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (33)

我们还可以显示最佳 λ 和相应的系数。

## 21 x 2 Matrix esparsa da classe "dgCMatrix"## 1 2## (Intercepción) 0.031263 0.18570## V1 0.619053 0.57537## V2 -0.984550 -0.93212## V3 1.525234 1.47057## V4 0.24 .596 ## V7 -0.012830 。 ##V8。 . ##V9。 . ## V10 0.015983。 ##V11。 . ## V12 0.030867 0.02585 ## V13 -0.027971 。 ## V14 0.032750。 ## V15 -0.005933 。 ## V16 0.017506。 ##V17。 . ## V18 0.004026。 ## V19 -0.033579 。 ## V20 0.012049 0.00993

考克斯模型

Cox 比例风险模型通常用于研究预测变量与生存时间之间的关系。

Cox 比例风险回归模型,不直接检验LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (34)与 X 的关系,但与LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (35)作为因变量,模型的基本形式为:

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (36)

在公式LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (37)是自变量的偏回归系数,是要从样本数据中估计出来的参数;LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (38)是当向量X为0时,LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (39)基准风险率,i。 H。根据样本数据估计的数量。称为舵手回来归一化模型

基于 Cox 回归模型LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (40)没有做出任何假设,因此 Cox 回归模型在处理问题时提供了更大的灵活性。另一方面,在很多情况下我们只需要估计参数LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (41)(如因子分析等),即使在LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (42)在参数未知的情况下,仍然可以估计参数LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (43).即 Cox 回归模型包含LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (44),所以不是全参数化模型,但仍可按式(1)进行参数化。LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (45)的估计,那么Cox回归模型就是其中的一部分半参数模型

该公式可以转化为:LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (46)

我们将使用之前生成的样本数据集。用户可以上传自己的数据并遵循类似的过程。在这种情况下,x 必须是协变量值的 n×p 矩阵:每一行对应一个患者,每一列对应一个协变量。 y 是一个 n×2 矩阵。

## Tempozustand## [1,] 1.76878 1## [2,] 0.54528 1## [3,] 0.04486 0## [4,] 0.85032 0## [5, ] 0 ,61488 1

存活包装中的功能存活可以创建这样的数组。

我们使用默认设置计算解决方案路径。

绘制系数。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (47)

在给定的 λ 值处提取系数。

## 30 x 1 矩阵分散类“dgCMatrix”## 1## V1 0.37694## V2 -0.09548## V3 -0.13596## V4 0.09814## V5 -0.11438## V6 -0.38899## V7 0.24291## V8 0,03648## V9 0,34740## V10 0,03865## V11 。 ##V12。 ##V13。 ##V14。 ##V15。 ##V16。 ##V17。 ##V18。 ##V19。 ##V20。 ##V21。 ##V22。 ##V23。 ##V24。 ##V25。 ##V26。 ##V27。 ##V28。 ##V29。 ##V30。

功能简历.glmnet它可用于计算 Cox 模型的 k 折交叉验证。

拟合后,我们可以看到最佳 lambda 值和交叉验证误差图,以帮助评估我们的模型。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (48)

如上所述,图中左侧的垂直线向我们展示了 CV 误差曲线达到最小值的位置。右边的垂直线向我们展示了正则化模型,其 CV 误差在最小值的 1 个标准差内。我们还提取了最优的 λ。

cvfit$lambda.min
## [1] 0,01594
cvfit$lambda.1se
## [1] 0,04869

我们可以查看模型中的协变量及其系数。

指数.min
## [1] 0,491297 -0,174601 -0,218649 0,175112 -0,186673 -0,490250 0,335197 ## [8] 0,091587 0,450169 0,115922
最小系数
## 30 x 1 矩阵分散类“dgCMatrix”## 1## V1 0.491297## V2 -0.174601## V3 -0.218649## V4 0.175112## V5 -0.186673## V6 -0.490250## V7 0.335197## V8 0,091587## V9 0,450169## V10 0,115922## V11 。 ##V12。 ## V13 0.017595 ## V14。 ##V15。 ##V16。 ## V17 -0.018365 ## V18。 ##V19。 ##V20。 ## V21 -0.002806## V22 -0.001423## V23 。 ##V24。 ## V25 -0.023429 ## V26。 ## V27 0.001688 ## V28。 ##V29。 ## V30 -0.008236

稀疏矩阵

我们的包支持稀疏输入矩阵,它可以有效地存储和操作只有几个非零条目的大型矩阵。

我们加载现成的示例数据集。

加载一个 100*20 的稀疏矩阵和j因为向量。

## [1] "dgCMatrix"## attr(,"Paket")## [1] "矩阵"

我们可以像以前一样调整模型。

适合 = glmnet(x, y)

交叉验证并绘制结果对象。

LASSO、Ridge Regression和Elastic Net模型在r-Language中的实现_Topian Research Lab TRL-Blog-CSDN-Blog (49)

新输入数组的预览。例如,

## 1## [1] 0,3826## [2] -0,2172## [3] -1,6622## [4] -0,4175## [5] -1,3941

参考

杰罗姆·弗里德曼、特雷弗·哈斯蒂和罗伯·蒂布希拉尼。 (2008)。
坐标下降后广义线性模型的正则化路径

Top Articles
Latest Posts
Article information

Author: Dean Jakubowski Ret

Last Updated: 01/26/2023

Views: 6575

Rating: 5 / 5 (50 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Dean Jakubowski Ret

Birthday: 1996-05-10

Address: Apt. 425 4346 Santiago Islands, Shariside, AK 38830-1874

Phone: +96313309894162

Job: Legacy Sales Designer

Hobby: Baseball, Wood carving, Candle making, Jigsaw puzzles, Lacemaking, Parkour, Drawing

Introduction: My name is Dean Jakubowski Ret, I am a enthusiastic, friendly, homely, handsome, zealous, brainy, elegant person who loves writing and wants to share my knowledge and understanding with you.