R语言做LASSO 回归
时间: 2023-10-23 19:25:52 浏览: 110
LASSO(Least Absolute Shrinkage and Selection Operator)回归是一种用于特征选择和参数估计的线性回归方法。在R语言中,可以使用glmnet包来实现LASSO回归。
下面是一个使用glmnet包进行LASSO回归的示例:
```R
# 加载glmnet包
library(glmnet)
# 生成示例数据
set.seed(123)
n <- 100
p <- 10
x <- matrix(rnorm(n * p), n, p)
y <- x[,1] + 2 * x[,2] + 3 * x[,3] + rnorm(n)
# 将数据集分为训练集和测试集
train <- sample(1:n, n/2)
test <- setdiff(1:n, train)
# 使用glmnet进行LASSO回归
fit <- glmnet(x[train,], y[train], alpha=1)
# 绘制LASSO路径图
plot(fit, xvar="lambda", label=TRUE)
# 选择最优的lambda值
cv.fit <- cv.glmnet(x[train,], y[train], alpha=1)
best.lambda <- cv.fit$lambda.min
# 使用最优的lambda值进行预测
pred <- predict(fit, newx=x[test,], s=best.lambda)
mse <- mean((pred - y[test])^2)
cat("Test MSE:", mse, "\n")
```
在上面的代码中,我们首先使用`glmnet`函数来拟合LASSO回归模型,并使用`plot`函数绘制LASSO路径图。然后,我们使用`cv.glmnet`函数进行交叉验证,并选择最优的lambda值。最后,我们使用最优的lambda值对测试集进行预测,并计算测试集的均方误差(MSE)。
需要注意的是,LASSO回归通常需要对特征进行标准化处理,以避免特征之间的差异影响模型的结果。可以使用`scale`函数对特征进行标准化,例如:
```R
x <- scale(x)
```
以上是一个简单的LASSO回归的例子,实际应用中可能需要更复杂的模型和更大规模的数据集。
阅读全文