系数路径——岭、套索和弹性网络回归的比较

机器算法验证 r 多重回归 造型 正则化
2022-02-26 23:16:45

我想比较使用脊、套索和弹性网选择的模型。下图显示了使用所有 3 种方法的系数路径:脊(图 A,alpha=0)、套索(图 B;alpha=1)和弹性网(图 C;alpha=0.5)。最佳解决方案取决于 lambda 的选定值,该值是基于交叉验证选择的。

岭 (A, alpha=0)、套索 (B, alpha=1) 和弹性网 (C, alpha=0.5) 回归的系数分布。 图顶部的数字表示模型的大小。最佳解决方案取决于所选的 lambda 值。 lambda 的选择基于交叉验证。

在查看这些图时,我预计弹性网(图 C)会表现出分组效应。然而,在本案中尚不清楚。套索和弹性网的系数路径非常相似。这可能是什么原因?这只是一个编码错误吗?我在 R 中使用了以下代码:

library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net 
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)

用于绘制弹性网络系数路径的代码与 ridge 和 lasso 完全相同。唯一的区别在于 alpha 的值。基于相应 lambda 值的最低 MSE(均方误差)选择弹性网络回归的 Alpha 参数。

感谢您的帮助 !

1个回答

在里面p<n案子 (p系数的数量,n样本数量,根据您在图中显示的系数数量,我猜这里就是这种情况),套索模型唯一真正的“问题”是,当多个特征相关时,它往往会随机选择其中一个.

如果原始特征不是很相关,我会说 Lasso 在系数路径方面表现类似于 Elastic Net 是合理的。查看glmnet包的文档,我在您的代码中也看不到任何错误。