1、最小二乘回归、Lasso、岭回归

回归算法实践:Lasso与Ridge对比分析
本文介绍了回归算法中的最小二乘回归、Lasso回归、Ridge岭回归和ElasticNet弹性网,并通过sklearn库进行了数据集上的代码演示,包括数据预处理、模型训练和预测。针对工具钢和模具钢数据集,应用Lasso和Ridge进行硬度性能预测,展示了初步的结果图,分析了两种回归模型的MSE损失和特征系数。尽管损失较大,但为后续调参和结果优化提供了基础。

理论知识

1、最小二乘回归

假设有m个特征,n个样本点,则输入数据为:
在这里插入图片描述
于是可以得到:
在这里插入图片描述
由此我们计算得到的损失为:
在这里插入图片描述
优化w,对w求偏导得:
在这里插入图片描述
在这里插入图片描述
由此可以得到:
在这里插入图片描述
上述公式共包含有逆矩阵,而逆矩阵存在得前提是该矩阵为满秩矩阵。但实际中得特征矩阵往往不是满秩矩阵,此时可利用加正则化的数学方法进行改进。

2、Lasso回归

加上一个L1范数惩罚:
在这里插入图片描述

3、Ridge岭回归

加上一个L2范数惩罚:
在这里插入图片描述

4、Elastic Net 弹性网

加上一个L1和L2范数惩罚:
在这里插入图片描述

代码演示

利用机器学习库sklearn进行代码演示与调参,编译器选择jupyter notebook。

1、数据集的获取

想要获取数据集请点击这。选择工具钢和模具钢相关的数据集,部分截图见下图:
在这里插入图片描述
共360行20列数据,我们首先以硬度性能指标,对该数据进行Lasso回归和Ridge回归。

2、代码实操

第一步:导入相关库并从数据集中提取自己需要的特征列和标签列

import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso,Ridge
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
X = data.iloc[:,3:16]
X

显示结果如下:
在这里插入图片描述

y1 = data.loc[:,['Hardness']]
y1

在这里插入图片描述
第二步:对数据进行标准化处理

scaler = StandardScaler()
X = scaler.fit_transform(X)
X

特征标准化后的显示结果如下:
在这里插入图片描述

y1 = scaler.fit_transform(y1)
y1 

标签标准化后的显示结果如下:
在这里插入图片描述
第三步:划分训练集和测试集并查看大小

X_train, X_test, y_train, y_test = train_test_split(X, y1,test_size=0.3)

在这里插入图片描述
第四步:利用Lasso算法进行回归分析

lasso = Lasso(alpha=0.001)
lasso.fit(X_train,y_train)
y_lasso = lasso.predict(X_test)
np.savetxt('lasso_predict.csv',y_lasso,delimiter=',')
plt.scatter(y_test,y_lasso)
plt.show()

初步显示结果图如下:
在这里插入图片描述
第五步:利用Ridge算法进行回归分析

ridge = Ridge(alpha=0.3)
ridge.fit(X_train,y_train)
y_ = ridge.predict(X_test)
np.savetxt('ridge_predict.csv',y_,delimiter=',')
plt.scatter(y_test,y_)
plt.show()

初步显示结果图如下:
在这里插入图片描述
第六步:MSE损失与特征系数分析
Lasso回归的MSE损失:
在这里插入图片描述
Lasso回归的各特征系数和截距:
在这里插入图片描述

Ridge回归的MSE损失:
在这里插入图片描述
Ridge回归的各特征系数和截距:
在这里插入图片描述

总结

损失还是挺大的,回归预测的结果并不是特别好,上文仅仅是给了一个大致流程,下面还需要进行Lasso回归和Ridge回归中的参数调节,即调参,我会在以后的学习中进行逐步更新的。同时还要对回归预测的结果图进行精修,见下图:
在这里插入图片描述

Lasso回归(Least Absolute Shrinkage and Selection Operator)是一种线性回归方法,通过在损失函数中引入L1正则化项来增强模型的泛化能力。普通最小二乘回归(Ordinary Least Squares, OLS)相比Lasso回归在多个方面展现出显著优势,尤其适用于高维数据和特征选择需求较高的场景。 ### 特征选择能力 Lasso回归通过L1正则化项对回归系数施加约束,能够将部分系数压缩为零。这种机制使得Lasso回归能够自动进行特征选择,剔除不重要的变量,从而简化模型并提升其可解释性[^3]。相比之下,普通最小二乘回归无法进行特征选择,所有特征都会被纳入模型中,即使某些特征对目标变量的影响非常微弱。 ### 模型稀疏性 由于L1正则化的作用,Lasso回归倾向于产生稀疏的模型,即模型中只有少数特征具有非零系数。这种稀疏性不仅有助于减少模型的复杂度,还能够在高维数据中有效避免过拟合问题[^5]。而普通最小二乘回归没有这种机制,容易在高维数据中出现过拟合现象。 ### 处理多重共线性 当特征之间存在高度相关性时,普通最小二乘回归的估计结果可能会不稳定,系数估计的方差会显著增大。Lasso回归通过引入L1正则化项,能够在一定程度上缓解多重共线性问题,提升模型的稳定性[^1]。尽管岭回归(Ridge Regression)在处理多重共线性方面更为常见,但Lasso回归同样具备这一能力,尤其是在特征数量较多且部分特征不重要时。 ### 高维数据处理能力 在特征数量远大于样本数量的情况下,普通最小二乘回归的解可能不唯一,甚至无法求解。Lasso回归通过正则化项的引入,能够在高维数据中稳定地求解模型参数,并有效进行变量选择[^3]。这种能力使得Lasso回归在基因组学、图像处理等领域中具有广泛应用。 ### 模型泛化能力 由于L1正则化的存在,Lasso回归在训练过程中不仅最小化了残差平方和,还对模型复杂度进行了控制。这种双重优化机制有助于提升模型在新数据上的泛化能力[^1]。相比之下,普通最小二乘回归仅关注最小化训练误差,容易导致模型在训练集上表现良好,但在测试集上表现较差。 ### 示例代码 以下是一个使用`scikit-learn`库实现Lasso回归的示例代码: ```python import numpy as np from sklearn.linear_model import Lasso from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 生成模拟数据 X, y = make_regression(n_features=20, n_informative=5, noise=0.1, random_state=42) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建Lasso回归模型 lasso = Lasso(alpha=0.1) # 训练模型 lasso.fit(X_train, y_train) # 进行预测 y_pred = lasso.predict(X_test) # 计算均方误差 mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}") # 输出非零系数对应的特征 non_zero_coef = np.where(lasso.coef_ != 0)[0] print(f"Selected features (indices): {non_zero_coef}") ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

steelDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值