岭回归和套索回归

岭回归和Lasso回归是解决线性回归中的多重共线性问题的方法。岭回归通过引入正则化项改善计算,但无法使系数为0。Lasso回归则能进行特征选择,通过L1范数惩罚项使不重要变量系数趋于0。在Stata中,lassopack提供了实现Lasso回归的子命令,如lasso2、cvlasso和rlasso。K折交叉验证用于选择最佳调整参数。在实际应用中,Lasso回归通常作为变量筛选的高级工具,适用于变量较多且可能存在多重共线性的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

岭回归
优点:有显式的解
缺点:对于影响很小的因子的值不能趋近到0

Lasso回归
优点:可以将影响很小的因子的值减到0,更加便于筛选
缺点:没有真实的解,只能逼近和估计解

Stata的使用
在 Stata 中,我们可以安装 lassopack 命令来实现 Lasso 回归,Lassopack 包含三个与 Lasso 相关的子命令(输入 help lassopack 可以查看详情): ‐ 子命令 lasso2 可进行 Lasso 估 计; ‐ 子命令 cvlasso 可进行 K 折交叉验证(k‐fold cross validation); ‐ 子命令 rlasso 可以估计惩罚项由数据决定或者高维情形(变量维度超过样本数)

K 折交叉验证
我们使用 K 折交叉验证的方法来选择最佳的调整参数。

所谓的 K 折交叉验证,是说将样本数据随机分为 K 个等分。将第 1 个子样本作为 “验证集”(validation set)而保留不用,而使用其余 K-1 个子样本作为 “训练集”(training set)来估计此模型,再以此预测第 1 个子样本,并计算第1个子样本的 “均方预测误差”(Mean Squared Prediction Error)。

其次,将第 2 个子样本作为验证集,而使用其余 K-1 个子样本作为训练集来预测第2个子样本,并计算第 2 个子样本的 MSPE。

以此类推,将所有子样本的 MSPE 加总,即可得整个样本的 MSPE。最后,选择调整参数 ,使得整个样本的 MSPE 最小,故具有最佳的预测能力

下面是如何在Python中使用`scikit-learn`库导入并应用**岭回归(Ridge Regression)** **套索回归(Lasso Regression)** 的示例代码。 ### 示例代码 #### 导入必要的库 ```python # 引入所需的包 import numpy as np from sklearn.linear_model import Ridge, Lasso from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error ``` #### 准备数据 这里我们生成一些随机数据来进行演示。 ```python # 创建虚拟数据集 np.random.seed(42) X = 2 * np.random.rand(100, 1) # 输入特征 X y = 4 + 3 * X + np.random.randn(100, 1) # 目标值 y 加上一点噪声 # 划分训练集测试集 X_train, X_test, y_train, y_test = train_test_split(X, y.ravel(), test_size=0.2, random_state=42) ``` #### 岭回归 (Ridge Regression) ```python # 初始化 Ridge 回归模型(alpha 是正则化强度) ridge_reg = Ridge(alpha=1.0) # 训练模型 ridge_reg.fit(X_train, y_train) # 预测 y_pred_ridge = ridge_reg.predict(X_test) # 输出均方误差 MSE mse_ridge = mean_squared_error(y_test, y_pred_ridge) print(f"Ridge 回归的均方误差: {mse_ridge}") ``` #### 套索回归 (Lasso Regression) ```python # 初始化 Lasso 回归模型(同样 alpha 控制正则化程度) lasso_reg = Lasso(alpha=0.1) # 训练模型 lasso_reg.fit(X_train, y_train) # 预测 y_pred_lasso = lasso_reg.predict(X_test) # 输出均方误差 MSE mse_lasso = mean_squared_error(y_test, y_pred_lasso) print(f"Lasso 回归的均方误差: {mse_lasso}") ``` --- 以上展示了如何快速实现这两种经典的带正则化的线性回归方法。通过调整 `alpha` 参数可以控制正则化的力度大小,进而影响最终的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值