使用R语言glmnet包进行正则化lasso回归

  正则化的原理是尽可能多的将数据中的特征塞进最终模型,特征越多越可以更好地解释数据集的错综复杂。在应用正则化后,每个特征对模型部分的解释程度可能完全不同。通过使用正则化可以减少数据集的噪声,这些噪声可能来对最终模型几乎没有形象的特征。为了利用这种正则化技术,可以调用特定类型的回归模型,称为套索回归(lasso regression),此处使用的R语言自带的数据集mtcars数据集。

  原书(Introduction to Machine Learning with R)使用的是lasso2包的l1ce()函数,此包已弃用,采用从历史文档手动安装的方式无法与现在的R版本匹配,故改用glmnet包的cv.glmnet函数。

library(glmnet)  

# 选择特征和设置响应变量
#可改成(mpg ~ wy + cyl)
x <- model.matrix(mpg ~ ., data = mtcars)[, -1]
y <- mtcars$mpg

# 执行Lasso交叉验证
cv_fit <- cv.glmnet(x, y, alpha = 1)  
# 根据最小MSE选择lambda值
optimal_lambda <- cv_fit$lambda.min  
# 拟合最终Lasso模型  
lasso_model <- glmnet(x, y, alpha = 1, lambda = optimal_lambda)  

print(coef(lasso_model)) 
print(cv_fit)

输出:

11 x 1 sparse Matrix of class "dgCMatrix"
                     s0
(Intercept) 36.44441107
cyl         -0.89269853
disp         .         
hp          -0.01282277
drat         .         
wt          -2.78337592
qsec         .         
vs           .         
am           0.01364372
gear         .         
carb         .         

Call:  cv.glmnet(x = x, y = y, alpha = 1) 

Measure: Mean-Squared Error 

    Lambda Index Measure    SE Nonzero
min 0.6648    23   9.718 3.588       4
1se 1.6854    13  13.302 6.501       3

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
glmnet是一个用于实施Lasso回归R语言软件。从名称可以看出,Lasso回归是一种利用L1正则化方法的线性回归技术。L1正则化方法通过在目标函数中引入L1范数惩罚项,从而实现变量选择和模型简化的目的。 使用glmnet进行回归分析可以得到一些重要的结果和信息。首先是模型选择结果,该结果显示了Lasso回归所选择的变量。值得注意的是,由于L1正则化的存在,Lasso回归可以将某些系数压缩到零,因此只选择了与响应变量相关的最重要的预测变量。这对于变量选择和解释模型非常有用。 其次,glmnet提供了用于评估模型拟合程度的指标,例如R平方(R2)和均方根误差(RMSE)。R2指标表示模型对观测值变异性的解释程度,取值范围为0到1,越接近1表示模型拟合程度越好。RMSE指标表示模型预测误差的平均值,数值越小表示模型预测准确度越高。 此外,glmnet还提供了绘制结果的功能。可以使用内的函数绘制模型的系数路径图,该图展示了在不同正则化参数下,各个系数的值随之变化的情况。这有助于我们理解Lasso回归模型在不同参数设定下的变量选择与稀疏性表现。 总的来说,glmnet提供了一个强大的工具,用于实施Lasso回归分析,并为我们提供了模型选择结果、评估指标和结果可视化等多方面的信息,帮助我们更好地理解和解读模型结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值