网站建设二次开发怎么样,怎么网络推广,个人养老金制度,小程序模板网 凡平台一、Lasso回归
Lasso 回归#xff08;Least Absolute Shrinkage and Selection Operator Regression#xff09;是一种用于线性回归和特征选择的统计方法。它在回归问题中加入了L1正则化项#xff0c;有助于解决多重共线性#xff08;多个特征高度相关#xff09;和特征选…一、Lasso回归
Lasso 回归Least Absolute Shrinkage and Selection Operator Regression是一种用于线性回归和特征选择的统计方法。它在回归问题中加入了L1正则化项有助于解决多重共线性多个特征高度相关和特征选择问题。以下是关于 Lasso 回归的重要信息
**1. 回归问题** Lasso 回归用于解决回归问题其中目标是根据一组特征来预测一个连续的数值输出。它是线性回归的扩展可以用于估计线性关系中的系数。
**2. L1 正则化项** Lasso 回归的关键特点是它在损失函数中添加了L1正则化项这是模型系数的绝对值之和。这个正则化项的存在使得一些模型系数变为零从而实现了特征选择的效果。L1 正则化的数学形式如下
这里Wi 表示模型的系数λlambda) 是控制正则化程度的超参数。
**3. 特征选择** Lasso 回归通过将一些系数压缩为零来选择最相关的特征。这意味着在建模过程中一些特征被剔除从而减少了模型的复杂性和过拟合的风险。这对于高维数据集中的特征选择非常有用。
**4. 模型复杂性控制** 通过调整正则化参数 λlambda) 的值可以控制模型的复杂性。较大的 λlambda) 会导致更多的系数变为零从而降低模型的复杂性而较小的 λlambda) 允许更多的非零系数使模型更复杂。
**5. 优点** Lasso 回归有助于解决多重共线性问题减少了过拟合风险提供了特征选择的功能可以处理高维数据集。
**6. 适用领域** Lasso 回归广泛应用于数据挖掘、机器学习、统计建模和各种领域的数据分析中特别是在需要自动选择最重要特征的情况下。
二、Lasso回归对多维数据模型进行降维处理和复杂性控制
下面我们以一个例子进行Lasso回归对多维数据模型进行降维处理和复杂性控制
随机生成一个样本量为100特征变量为10的模拟数据并将10个特征变量形成矩阵形式第一列是我们对应的结局变量其他的10列是我们的特征变量。总共有100行代表100个样本在实际中可能是100个病人的数据。
# 生成模拟数据set.seed(123) # 设置随机种子以获得可重现的结果n - 100 # 样本数量p - 10 # 特征数量# 创建自变量矩阵 xx - matrix(rnorm(n * p), n, p)
# 创建因变量 ytrue_coef - c(2, 3, -1, 0, 0, 0, 1, 0, 0, 0) # 真实的系数epsilon - rnorm(n, mean 0, sd 1) # 随机误差项y - x %*% true_coef epsilon
# 将数据放入一个数据框data - data.frame(y, x)
这里的数据集data是我们接下来要进行lasso回归的模拟数据接下来进行lasso回归。
#################安装和加载glmnet包install.packages(glmnet)library(glmnet)
# 将数据拆分为自变量和因变量x - as.matrix(data[, -1]) # 自变量矩阵y - data$y # 因变量
# 执行Lasso回归fit - glmnet(x, y, family gaussian, alpha 1, maxit 1000) # alpha 1 表示Lasso回归 maxit 1000代表拉索回归的迭代次数为1000次
# 使用交叉验证选择最佳lambdacvfit - cv.glmnet(x, y, family gaussian, alpha 1, maxit 1000)
# 打印最佳lambda的交叉验证结果print(cvfit)
# 查看最佳lambda值best_lambda - cvfit$lambda.mincat(Best lambda:, best_lambda, \n# 可视化交叉验证误差随lambda的变化plot(cvfit) 交叉验证误差路径图
plot(cvfit)生成的图形是交叉验证过程中均方误差Mean-Squared ErrorMSE随正则化参数 logλ 的变化图通常称为“交叉验证误差路径”图。这个图可以帮助你选择最佳的正则化参数 λ以获得最适合你的 Lasso 回归模型。
在这个图中你会看到横坐标是 logλ 的值纵坐标是均方误差MSE。图中通常有两条线
1. **MSE曲线红色线** 这条曲线显示了在不同 λ 值下的均方误差。曲线通常呈现 U 形最低点对应着最佳的 λ 值。这个 λ 值产生了具有良好泛化性能的 Lasso 模型。
2. **垂直线竖直的虚线或实线** 这条线标记了交叉验证过程中选择的最佳 λ 值。如果使用一种特定的标准来选择最佳 λ例如1se 或 min 标准那么这条线将标记该标准下的最佳 λ。
图表主要关注以下几点
- 寻找 MSE 曲线的最低点这个点对应着最佳的 λ 值。
- 查看最佳 λ 值所在的位置以确定选择模型时使用的 λ。
- 如果存在 1se 标准的竖直线可以根据这个标准来选择一个更稀疏更简化的模型即选择一个 λ 值使模型具有较少的非零系数。
我们可以看到最佳lambda的交叉验证结果 Lambda Index Measure SE Nonzero
min 0.06832 41 1.243 0.1621 8
1se 0.20863 29 1.392 0.1479 4
这是 cv.glmnet 函数的输出结果用于交叉验证 Lasso 回归模型L1 正则化线性回归。
1. Measure: Mean-Squared Error这一部分指示了用于评估模型性能的指标这里使用的是均方误差Mean-Squared Error通常用于回归问题的性能度量它衡量了模型的预测值与实际观测值之间的平均平方误差。
2. Lambda这一列列出了不同的正则化参数 λlambda的值。正则化参数控制了模型的复杂性λ 越大模型的系数越趋向于零模型更加简单。
3. Index这一列是与每个 λ 值关联的模型索引。它表示在执行交叉验证时哪个模型被选择为最佳模型。在这里Index 列显示了最佳模型对应的 λ 的索引。
4. Measure这一列是每个 λ 值下使用交叉验证计算得到的性能度量均方误差。
5. SE这一列是均方误差的标准误差Standard Error它表示均方误差的置信区间。
6. Nonzero这一列显示了在最佳模型中非零系数的数量。在 Lasso 回归中正则化会将某些系数收缩为零因此这一列显示了最佳模型中有多少个非零系数。
总结来说这个输出结果提供了在不同正则化参数 λ 下模型的性能度量均方误差并指示了最佳模型所对应的 λ 值、均方误差和非零系数的数量。在实际应用中通常会选择具有最小均方误差的模型作为最佳模型以用于进一步的预测或分析。
那么结合这个输出的结果还有可视化的结果我们可以看出非零系数数量为8个时回归模型最优。也就是对应的图中左侧的曲线。 # 绘制Lasso路径plot(fit, xvar lambda, label TRUE) 系数轨迹Coefficient Path图
plot(fit, xvar lambda, label TRUE) 绘制的是 Lasso 回归路径图通常也称为系数轨迹Coefficient Path图。这个图有助于可视化在不同正则化参数 λ 的情况下Lasso 回归模型的系数回归系数如何变化。这里是如何解释这个图的关键点
1. **横坐标 Lambdaλ** 这是正则化参数 λ 的值它代表了模型复杂性的程度。λ 越大模型的正则化程度越强系数越趋向于零。图中横坐标从右到左逐渐减小代表 λ 逐渐增大。
2. **纵坐标 Coefficients** 这是模型中每个特征的系数值。每个特征在图上都有一条路径线显示了在不同 λ 值下其系数如何变化。系数可以是正数、负数或零。
3. **颜色** 每条路径线的颜色通常不同以区分不同的特征。
4. **标签 Label** 如果在 plot() 函数中设置了 label TRUE则路径图上会标记每个特征的名称或索引。
在解释路径图时可以关注以下几点
- **非零系数的特征** 对于每个特征从左到右的路径线表示了在 λ 增大的情况下系数的变化。当 λ 较大时系数通常会逐渐减小并有些系数会变为零。从左到右的路径线显示了特征是否被选择进入模型以及它们的权重。
- **稀疏性** 路径图的右侧表示 λ 较大模型较为稀疏只有少数非零系数。左侧表示 λ 较小模型较为复杂更多系数不为零。
- **特征比较** 通过比较不同特征的路径线可以看出哪些特征对于模型的预测具有重要影响哪些特征的影响较小。
- **最佳 λ 值** 在路径图上你可以根据模型选择的标准来选择最佳 λ 值。这通常是通过交叉验证来确定的通常在路径图上标记。
总之Lasso 路径图有助于理解模型在不同正则化参数下的变化情况帮助我们选择适当的 λ 值以构建具有合适复杂性的模型。 那么让我们看一下最佳模型的系数
coefcoef(fit, s cvfit$lambda.min)indexwhich(coef !0)actCoefcoef[index]lassoGenerow.names(coef)[index]geneCoefcbind(GenelassoGene,CoefactCoef)geneCoef #查看模型的相关系数 有八个特征变量被筛选出来这也与我们在前面两个可视化的系数轨迹Coefficient Path图和交叉验证误差路径图中看到的相符。