📜  R 编程中的弹性网络回归

📅  最后修改于: 2022-05-13 01:55:08.048000             🧑  作者: Mango

R 编程中的弹性网络回归

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

它在两阶段过程中找到一个估计器,即首先对每个固定的λ 2找到岭回归系数,然后进行套索回归类型的收缩,该收缩量会增加一倍,最终导致偏差增加和预测不佳。通过将估计的系数乘以(1 + λ 2 )来重新调整弹性网络的朴素版本的系数以提高预测性能。弹性网络回归用于:

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

弹性网络回归始终旨在最小化以下损失函数:

配方弹力网

Elastic Net 还允许我们调整 alpha 参数,其中 alpha = 0 对应于 Ridge 回归,而 alpha = 1 对应于 Lasso 回归。类似地,当 alpha = 0 时,惩罚函数简化为 L1(ridge) 正则化,当 alpha = 1 时,惩罚函数简化为 L2(lasso) 正则化。因此,我们可以选择 0 到 1 之间的 alpha 值来优化 Elastic Net,这将缩小一些系数并将一些系数设置为 0 以进行稀疏选择。在 Elastic Net 回归中,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)

输出:
输出

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

通过使用数据集中的特征或变量训练模型,对数据集使用 Elastic Net 回归算法。

# 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")

输出:

  • Elastic Net Regression 模型的训练:
    输出

    训练 Elastic Net 回归模型以找到最佳 alpha 和 lambda 值。

  • 模型弹性模型:
    输出

    Elastic Net 回归模型使用 alpha 值作为 0.6242021 和 lambda 值作为 1.801398。 RMSE用于使用最小值选择最佳模型。

  • 模型预测:
    输出

    使用 Y 数据集预测模型并显示值。

  • 多重 R 平方:
    输出

    disp 的多个 R 平方值为 0.9514679。

  • 阴谋:
    输出

    混合百分比用具有不同正则化参数值的 RMSE 分数绘制。

    因此,Elastic Net 回归应用程序被用于许多行业领域,并且满负荷运行。