首页 > 其他分享 >人工智能之机器学习基础——LASSO(Least Absolute Shrinkage and Selection Operator)

人工智能之机器学习基础——LASSO(Least Absolute Shrinkage and Selection Operator)

时间:2024-11-21 19:50:54浏览次数:1  
标签:Selection 特征选择 Shrinkage Least 特征 正则 train lasso LASSO

LASSO 回归

LASSO(Least Absolute Shrinkage and Selection Operator)是一种线性回归的变体,能够同时进行特征选择模型正则化。它通过在损失函数中引入 ℓ1​ 范数的惩罚项来约束模型的参数。

 

1. LASSO 的数学表达式

普通线性回归的目标

线性回归的目标是最小化残差平方和:

 

LASSO 的目标函数

在普通线性回归基础上添加 ℓ1​ 范数的正则化项:

 其中:

λ:正则化参数,控制惩罚的强度;

 

范数惩罚项,用于限制模型参数的大小。

 

2. LASSO 的作用

  1. 参数稀疏性(特征选择)

    • ℓ1 范数惩罚可以将某些 βj​ 收缩为零,从而实现特征选择。
    • 非重要的特征对应的系数被完全置为零。
  2. 减少过拟合

    • 正则化项可以防止模型在训练数据上过拟合,从而提高泛化能力。
  3. 更简单的模型

    • 通过选择少量的重要特征,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 的优缺点

优点

  1. 特征选择:自动剔除不重要的特征,产生稀疏模型。
  2. 减少过拟合:对高维数据集(特征多于样本)有效。
  3. 易于解释:通过稀疏系数生成简单模型。

缺点

  1. 可能舍弃相关特征:如果多个特征高度相关,LASSO 可能随机选择其中一个,而忽略其他。
  2. 正则化参数调节困难:需要通过交叉验证选择最优参数。
  3. 对特征缩放敏感:必须标准化特征,否则结果可能不准确。

  

6. 应用场景

  1. 高维数据建模

    • 如基因表达数据分析,特征数量远多于样本数量。
  2. 特征选择

    • 在模型中自动选择重要特征,简化模型。
  3. 防止过拟合

    • 在训练数据有限、特征过多的情况下,提高模型泛化性能。

 

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

相关文章