LASSO 回归
LASSO(Least Absolute Shrinkage and Selection Operator)是一种线性回归的变体,能够同时进行特征选择和模型正则化。它通过在损失函数中引入 ℓ1 范数的惩罚项来约束模型的参数。
1. LASSO 的数学表达式
普通线性回归的目标
线性回归的目标是最小化残差平方和:
LASSO 的目标函数
在普通线性回归基础上添加 ℓ1 范数的正则化项:
其中:
λ:正则化参数,控制惩罚的强度;
范数惩罚项,用于限制模型参数的大小。
2. LASSO 的作用
-
参数稀疏性(特征选择):
- ℓ1 范数惩罚可以将某些 βj 收缩为零,从而实现特征选择。
- 非重要的特征对应的系数被完全置为零。
-
减少过拟合:
- 正则化项可以防止模型在训练数据上过拟合,从而提高泛化能力。
-
更简单的模型:
- 通过选择少量的重要特征,LASSO 能够生成更简单、可解释性更强的模型。
3. LASSO 的实现步骤
3.1 数据准备
准备输入特征矩阵 X 和目标变量 y。
3.2 标准化特征
LASSO 对特征的缩放敏感,通常需要对 X 进行标准化处理,使每个特征具有相同的尺度。
3.3 模型训练
通过调节 λ 参数,平衡损失函数和正则化项的影响。
4. Python 实现
4.1 使用 Scikit-Learn
from sklearn.linear_model import Lasso from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 示例数据 import numpy as np X = np.random.rand(100, 5) # 100 个样本,5 个特征 y = 3 * X[:, 0] - 2 * X[:, 1] + np.random.randn(100) * 0.1 # 数据划分 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 特征标准化 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # LASSO 回归 lasso = Lasso(alpha=0.1) # alpha 是正则化参数 λ lasso.fit(X_train, y_train) # 打印系数 print("回归系数:", lasso.coef_) # 测试集预测 y_pred = lasso.predict(X_test) print("预测值:", y_pred)
4.2 交叉验证调节参数
通过交叉验证选择最佳的正则化强度 λ:
from sklearn.linear_model import LassoCV # 使用 LassoCV 自动选择最佳 alpha lasso_cv = LassoCV(cv=5) # 5 折交叉验证 lasso_cv.fit(X_train, y_train) # 最优正则化参数 print("最佳 alpha:", lasso_cv.alpha_) # 打印系数 print("回归系数:", lasso_cv.coef_)
5. LASSO 的优缺点
优点
- 特征选择:自动剔除不重要的特征,产生稀疏模型。
- 减少过拟合:对高维数据集(特征多于样本)有效。
- 易于解释:通过稀疏系数生成简单模型。
缺点
- 可能舍弃相关特征:如果多个特征高度相关,LASSO 可能随机选择其中一个,而忽略其他。
- 正则化参数调节困难:需要通过交叉验证选择最优参数。
- 对特征缩放敏感:必须标准化特征,否则结果可能不准确。
6. 应用场景
-
高维数据建模:
- 如基因表达数据分析,特征数量远多于样本数量。
-
特征选择:
- 在模型中自动选择重要特征,简化模型。
-
防止过拟合:
- 在训练数据有限、特征过多的情况下,提高模型泛化性能。
7. LASSO 与其他方法对比
与岭回归(Ridge)对比
特性 | LASSO | 岭回归 |
---|---|---|
正则化项 | ℓ1\ell_1ℓ1 范数 | ℓ2\ell_2ℓ2 范数 |
参数稀疏性 | 会产生稀疏解(特征选择) | 不会产生稀疏解 |
处理相关特征 | 随机选择一个 | 平均分配权重 |
与弹性网(Elastic Net)对比
- 弹性网结合了 LASSO 和岭回归,适合处理高度相关的特征。
总结
LASSO 是一种强大的回归方法,通过 ℓ1 正则化实现了特征选择和模型复杂度控制。它特别适合高维数据,能够生成稀疏模型,同时减少过拟合。结合 Python 的实现,可以快速将其应用于实际问题,如特征选择、数据建模和预测分析。
标签:Selection,特征选择,Shrinkage,Least,特征,正则,train,lasso,LASSO From: https://www.cnblogs.com/zhoushusheng/p/18561383