暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

R语言如何和何时使用glmnet岭回归

拓端数据部落 2022-12-02
1173

原文链接:http://tecdat.cn/?p=4103


本文向您展示如何在R中使用glmnet包进行岭回归(使用L2正则化的线性回归),并使用模拟来演示其相对于普通最小二乘回归的优势点击文末“阅读原文”获取完整代码数据


岭回归

当回归模型学习参数时,岭回归使用L2正则化来加权/惩罚残差。在线性回归的背景下,它可以与普通最小二乘法(OLS)进行比较。OLS定义了计算参数估计值(截距和斜率)的函数。它涉及最小化平方残差的总和。L2正则化是OLS函数的一个小增加,以特定的方式对残差进行加权以使参数更加稳定。结果通常是一种适合训练数据的模型,不如OLS更好,但由于它对数据中的极端变异(例如异常值)较不敏感,所以一般性更好。

软件包

我们将在这篇文章中使用以下软件包:

library(broom)
library(glmnet)

 

glmnet的岭回归

glmnet软件包提供了通过岭回归的函数glmnet()。

它不需要公式和数据框,而需要一个矢量输入和预测矩阵。

你必须指定alpha = 0岭回归。

岭回归涉及调整超参数lambda。glmnet()会为你生成默认值。另外,通常的做法是用lambda参数来定义。因为,与OLS回归不同,岭回归涉及调整超参数,lambda,glmnet()为不同的lambda值多次运行模型。

我们可以自动找到最适合的lambda值,cv.glmnet() 使用交叉验证来计算每个模型的误差,cv.glmnet()如下所示:

cv_fit <- cv.glmnet(x, y, alpha =0, lambda = lambdas)

以下是使用mtcars数据集的示例:

plot(cv_fit)

 

曲线中的最低点指示最佳的lambda:使交叉验证中的误差最小化的lambda的对数值。


点击标题查阅往期内容


PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化


左右滑动查看更多


01

02

03

04



我们可以将这个值提取为:

opt_lambda <- cv_fit$lambda.minopt_lambda#
> [1] 3.162278

我们可以通过以下方式提取所有拟合的模型:

summary(fit)
#> Length Class Mode
#> a0 51 -none- numeric
#> beta 153 dgCMatrix S4
#> df 51 -none- numeric
#> dim 2 -none- numeric
#> lambda 51 -none- numeric
#> dev.ratio 51 -none- numeric
#> nulldev 1 -none- numeric
#> npasses 1 -none- numeric
#> jerr 1 -none- numeric
#> offset 1 -none- logical
#> call 5 -none- call
#> nobs 1 -none- numeric

预测值并计算我们训练的数据的R 2值:


# 平方和总误差
sst <- sum((y - mean(y))^2)
sse <- sum((y_predicted - y)^2)# R方
rsq <-1- sse sstrsq
#>
[1] 0.9318896



最优模型已经在训练数据中占93%的方差。

Ridge 和 OLS模拟

通过产生比OLS更稳定的参数,岭回归不容易过度拟合训练数据。因此,岭回归可能预测训练数据不如OLS好,但更好地推广到新数据。当训练数据变化极端大时尤其如此,当样本大小较低和/或特征的数量相对于观察次数较多时会发生。

下面是我创建的一个模拟实验,用于比较岭回归和OLS在训练和测试数据上的预测准确性。

我首先运行模拟:

针对不同数量的训练数据和特征的比例运行模拟:


d <- cross_d(list(n_train = seq(20,200,20),p_features = seq(.55,.95,.05
d <- d %>%mutate(results = map2(n_train, p_features,



 

可视化结果

对于不同数量的训练数据(对多个特征进行平均),两种模型对训练和测试数据的预测效果如何?

根据假设,OLS更适合训练数据,但Ridge回归更好地预测新的测试数据。此外,当训练观察次数较少时,这些影响更为明显。

对于不同的相对特征比例(平均数量的训练数据),两种模型对训练和测试数据的预测效果如何?

 

OLS在训练数据上表现稍好,但Ridge在测试数据上更好。当特征的数量相对于训练观察的数量相对较高时,效果更显着。

下面的图有助于将Ridge对OLS的相对优势(或劣势)可视化为观察值和特征的数量:

这显示了综合效应:当训练观察数量较低和/或特征数目相对于训练观察数目较高时,Ridge回归更好地预测测试数据。OLS在类似条件下的训练数据上表现略好,表明它比使用Ridge正则化时更容易过拟合数据。




点击文末“阅读原文”

获取全文完整代码数据资料


本文选自《R语言如何和何时使用glmnet岭回归》。


点击标题查阅往期内容

PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化
R语言贝叶斯广义线性混合(多层次/水平/嵌套)模型GLMM、逻辑回归分析教育留级影响因素数据
Python中的Lasso回归之最小角算法LARS
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
R使用LASSO回归预测股票收益
广义线性模型glm泊松回归的lasso、弹性网络分类预测学生考试成绩数据和交叉验证
贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
R语言RSTAN MCMC:NUTS采样算法用LASSO 构建贝叶斯线性回归模型分析职业声望数据
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
R语言高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据(含练习题)
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
R语言Bootstrap的岭回归和自适应LASSO回归可视化
R语言Lasso回归模型变量选择和糖尿病发展预测模型
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
基于R语言实现LASSO回归分析
R语言用LASSO,adaptive LASSO预测通货膨胀时间序列
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
Python中的Lasso回归之最小角算法LARS
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R语言实现LASSO回归——自己编写LASSO回归算法
R使用LASSO回归预测股票收益
python使用LASSO回归预测股票收益
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
R语言Bootstrap的岭回归和自适应LASSO回归可视化
R语言Lasso回归模型变量选择和糖尿病发展预测模型
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
基于R语言实现LASSO回归分析
R语言用LASSO,adaptive LASSO预测通货膨胀时间序列
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
Python中的Lasso回归之最小角算法LARS
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R语言实现LASSO回归——自己编写LASSO回归算法
R使用LASSO回归预测股票收益
python使用LASSO回归预测股票收益
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC
MATLAB随机森林优化贝叶斯预测分析汽车燃油经济性
R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言中贝叶斯网络(BN)、动态贝叶斯网络、线性模型分析错颌畸形数据
R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
Python贝叶斯回归分析住房负担能力数据集
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
Python用PyMC3实现贝叶斯线性回归模型
R语言用WinBUGS 软件对学术能力测验建立层次(分层)贝叶斯模型
R语言Gibbs抽样的贝叶斯简单线性回归仿真分析
R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究
R语言贝叶斯线性回归和多元线性回归构建工资预测模型
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言stan进行基于贝叶斯推断的回归模型
R语言中RStan贝叶斯层次模型分析示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
WinBUGS对多元随机波动率模型:贝叶斯估计与模型比较
R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化
视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型
R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化



文章转载自拓端数据部落,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论