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 回归应用程序被用于许多行业领域,并且满负荷运行。