R语言 弹性网回归

R语言 弹性网回归

弹性网回归是一种分类算法,它克服了lasso(最小绝对收缩和选择算子)方法的局限性,该方法在其L1正则化中使用了一个惩罚函数。弹性网回归是一种混合方法,它融合了套索和山脊方法的L2和L1正则化的惩罚。

它在一个两阶段的过程中找到一个估计值,即首先对于每个固定的λ^2,它找到山脊回归系数,然后做一个套索回归类型的收缩,它做了双倍的收缩,最终导致偏差的增加和不良预测。通过将估计的系数乘以 **(1 + λ^2 ) **,对天真的弹性网版本的系数进行重新缩放,以提高预测性能。弹性网回归被用于。

  • 度量衡学习
  • 投资组合优化
  • 癌症预后

弹性网回归总是以最小化以下损失函数为目标。

R编程中的弹性网回归

弹性网还允许我们调整α参数,其中α=0对应于Ridge回归,α=1对应于Lasso回归。同样,当α=0时,惩罚函数降低为L1(Ridge)正则化,而当α=1时,惩罚函数降低为L2(Lasso)正则化。因此,我们可以选择一个介于0和1之间的α值来优化Elastic Net,这将缩小一些系数,并将一些系数设置为0,以便进行稀疏选择。在弹性网回归中,lambda超参数主要和严重依赖于alpha超参数。现在让我们在R编程中实现弹性网回归。

在R中实现

数据集

mtcars (motor trend car road test)包括32辆汽车的油耗、性能和汽车设计的10个方面。它预装了R中的dplyr包。

# Installing the package
install.packages("dplyr")
    
# Loading package
library(dplyr)
    
# Summary of dataset in package
summary(mtcars)
R

输出:

R编程中的弹性网回归

对数据集进行弹性网络回归

通过使用数据集中的特征或变量训练模型,在数据集上使用弹性网回归算法。

# Installing Packages
install.packages("dplyr")
install.packages("glmnet")
install.packages("ggplot2")
install.packages("caret")
  
# X and Y datasets
X <- mtcars %>% 
     select(disp) %>% 
     scale(center = TRUE, scale = FALSE) %>% 
     as.matrix()
Y <- mtcars %>% 
    select(-disp) %>% 
    as.matrix()
  
# Model Building : Elastic Net Regression
control <- trainControl(method = "repeatedcv",
                              number = 5,
                              repeats = 5,
                              search = "random",
                              verboseIter = TRUE)
  
# Training ELastic Net Regression model
elastic_model <- train(disp ~ .,
                           data = cbind(X, Y),
                           method = "glmnet",
                           preProcess = c("center", "scale"),
                           tuneLength = 25,
                           trControl = control)
  
elastic_model
  
# Model Prediction
x_hat_pre <- predict(elastic_model, Y)
x_hat_pre
  
# Multiple R-squared
rsq <- cor(X, x_hat_pre)^2
rsq
  
# Plot
plot(elastic_model, main = "Elastic Net Regression")
R

输出

  • 弹性网回归模型的训练:

    R编程中的弹性网回归

弹性网回归模型的训练是为了找到最佳的alpha和lambda值。

  • 模型elastic_model:

    R编程中的弹性网回归

弹性网回归模型使用alpha值为0.6242021,lambda值为1.801398。RMSE被用来选择使用最小值的最佳模型。

  • 模型预测:

    R编程中的弹性网回归

使用Y数据集对模型进行预测,数值显示。

  • 多重R-Squared:

    R编程中的弹性网回归

disp的多重R-Squared值为0.9514679。

  • 绘图:

    R编程中的弹性网回归

混合百分比与不同正则化参数值的RMSE分数一起绘制。

所以,弹性网回归的应用在很多行业领域都有充分的能力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册