【漫话机器学习系列】101.特征选择法之Lasso(Lasso For Feature Selection)

news/2025/2/24 8:14:35

Lasso 特征选择法详解

1. Lasso 回归简介

Lasso(Least Absolute Shrinkage and Selection Operator,最小绝对收缩和选择算子)是一种基于 L1 范数正则化的线性回归方法。它不仅能够提高模型的泛化能力,还可以自动进行特征选择,即将一些不重要的特征的系数收缩到 0,从而减少模型的复杂度。


2. Lasso 回归的数学公式

Lasso 回归的目标函数如下:

\min_w \sum_{i=1}^{n} (y_i - X_i w)^2 + \alpha \sum_{j=1}^{k} |w_j|

其中:

  • X_i 是输入数据,
  • w 是待求的回归系数,
  • y_i 是目标值,
  • α 是正则化超参数(也称为阿尔法参数),用于控制正则化的强度,
  • \sum |w_j| 是 L1 范数的正则化项。

与 Ridge 回归(L2 正则化)不同,Lasso 使用L1 范数作为正则化项。L1 正则化的特点是可以使部分回归系数直接变为 0,从而进行特征选择


3. Lasso 正则化的作用

Lasso 主要通过 L1 正则化来调整回归系数,使其具有以下特性:

  1. 降低过拟合风险

    • 在高维数据中,普通线性回归可能会导致模型过拟合(overfitting),而 Lasso 通过对系数施加约束,使模型更加稳健。
  2. 特征选择(Feature Selection)

    • 由于 L1 正则化可以直接使某些特征的系数变为 0,因此 Lasso 可以自动筛选出最重要的特征,而忽略不重要的特征,从而提高模型的可解释性。
  3. 模型稀疏性(Sparsity)

    • Lasso 生成的模型是稀疏的(即许多特征的权重为 0),这在高维数据中尤为重要。例如,在基因数据分析、文本分类等应用中,特征的数量可能远远大于样本数,Lasso 能够有效减少模型复杂度。

4. Lasso 与 Ridge 的区别

Lasso 和 Ridge 都是常用的正则化方法,但它们在数学性质和应用上有所不同。

对比项Lasso(L1 正则化)Ridge(L2 正则化)
正则化项( \sumw_j
影响方式可以使权重变为 0,进行特征选择只会缩小权重,但不会变为 0
计算复杂度计算较难(非凸优化)计算较简单(凸优化)
适用场景适用于高维稀疏数据适用于所有特征都重要的情况

📌 总结:如果你的数据集有很多无关特征,建议使用 Lasso;如果所有特征都可能重要,建议使用 Ridge。


5. Lasso 回归中的超参数 α

Lasso 回归中的 α 参数决定了正则化的强度:

  • α 越大,正则化越强,更多的权重被收缩为 0,最终选出的特征更少。
  • α 过小,则正则化效果减弱,Lasso 退化为普通的线性回归。

如何选择合适的 α\alphaα?

通常使用交叉验证(Cross Validation)来选择最优的 α 值。例如,在 Scikit-Learn 中,我们可以使用 LassoCV 进行自动调优:

from sklearn.linear_model import LassoCV

lasso_cv = LassoCV(alphas=[0.1, 0.01, 0.001, 0.0001], cv=5)
lasso_cv.fit(X_train, y_train)

print("Optimal alpha:", lasso_cv.alpha_)

这将自动选择最优的 α 值,以获得最佳的特征选择效果。


6. Lasso 的应用场景

6.1 机器学习

Lasso 在机器学习中常用于:

  • 特征选择(Feature Selection):Lasso 能够筛选出最重要的特征,减少维度,提高模型可解释性。
  • 高维数据分析:适用于数据集中特征数量远大于样本数量的情况,如文本数据、基因数据等。
  • 稀疏回归问题:当数据具有稀疏性(即大部分特征无关)时,Lasso 通过自动选择特征提高模型性能。

6.2 自然语言处理(NLP)

  • 在 NLP 任务中,Lasso 可以用于词特征选择,帮助识别最重要的单词,而忽略不重要的词。

6.3 经济和金融预测

  • 在经济学和金融预测模型中,许多变量可能相关但不重要,Lasso 能够剔除不相关变量,提高预测精度。

7. Lasso 的局限性

尽管 Lasso 具有强大的特征选择能力,但也有一些局限:

  1. 特征共线性问题

    • 当多个特征高度相关时,Lasso 可能会随机选择其中一个,并将其他特征的系数设为 0。相比之下,Ridge 会均匀分配权重。
  2. 计算复杂度

    • Lasso 由于 L1 范数的不可微性质,优化问题较 Ridge 更复杂,计算成本更高。
  3. 在某些情况下可能导致欠拟合

    • 如果 α 过大,可能会丢失重要特征,导致模型欠拟合(underfitting)。

8. 总结

Lasso 是一种强大的特征选择方法,适用于高维数据,能够减少过拟合,提高模型可解释性。

核心要点:

  • Lasso 使用 L1 正则化,使部分特征权重变为 0,实现特征选择。
  • 与 Ridge(L2 正则化)不同,Lasso 生成稀疏模型,适用于高维数据。
  • α 超参数控制正则化强度,通常通过交叉验证选择最优值。
  • Lasso 适用于文本分析、基因数据、经济金融建模等领域。
  • Lasso 在特征共线性严重时可能表现不佳,此时 Elastic Net(L1+L2 结合)可能是更好的选择。

如果你的数据集存在大量无关特征,Lasso 可能是最好的选择!


http://www.niftyadmin.cn/n/5864107.html

相关文章

用AI写游戏3——deepseek实现kotlin android studio greedy snake game 贪吃蛇游戏

项目下载 https://download.csdn.net/download/AnalogElectronic/90421306 项目结构 就是通过android studio 建空项目,改下MainActivity.kt的内容就完事了 ctrlshiftalts 看项目结构如下 核心代码 MainActivity.kt package com.example.snakegame1// MainA…

Logback:强大的Java日志框架

文章目录 引言什么是Logback?Logback的主要特点Logback的配置在项目中使用Logback总结 引言 在软件开发中,日志记录是一个不可或缺的部分。它不仅帮助开发者在调试时追踪问题,还能在生产环境中监控应用程序的运行状态。Java生态中有多种日志…

sentinel小记

sentinel小记 1、被处理的接口 /*** 分页获取题目列表&#xff08;封装类&#xff09;** param questionQueryRequest* param request* return*/PostMapping("/list/page/vo")public BaseResponse<Page<QuestionVO>> listQuestionVOByPage(RequestBody …

Docker启动ES容器打包本地镜像

文章目录 1、安装 Docker2、下载镜像3、查看已下载的镜像4、 保存和加载镜像5、.tar 文件与 Docker 镜像的关系6、如何从 .tar 文件加载 Docker 镜像7、为什么需要 .tar 文件&#xff1f;8、ES 8.x版本无法启动8.1 问题原因8.2 解决方案8.3 提交容器为新镜像 1、安装 Docker 如…

Vue2 和 Vue3 的响应式原理对比

Object.defineProperty 与 Proxy 对比 前言一、Vue2 的响应式原理二、Vue3 的响应式原理三、性能优化总结 前言 响应式系统是 Vue 框架的核心机制之一&#xff0c;通俗易懂的来说 vue2需要手动登记&#xff0c;只有被用到的才会被记录&#xff0c;vue3全自动监控。 一、Vue2 …

一周学会Flask3 Python Web开发-Jinja2模板基本使用

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们平台开发web系统&#xff0c;必须用到网页&#xff0c;单纯的静态网页无法满足我们的需求。我们可以使用模版引擎技术&am…

智能优化算法:莲花算法(Lotus flower algorithm,LFA)介绍,提供MATLAB代码

一、 莲花算法 1.1 算法原理 莲花算法&#xff08;Lotus flower algorithm&#xff0c;LFA&#xff09;是一种受自然启发的优化算法&#xff0c;其灵感来源于莲花的自清洁特性和授粉过程。莲花的自清洁特性&#xff0c;即所谓的“莲花效应”&#xff0c;是由其叶片表面的微纳…

《GNU/Linux Shell命令全解析》

前言: Shell&#xff08;如Bash、Zsh&#xff09;是一个用户应用程序&#xff0c;通过系统调用接口与内核空间进行交互,运行在所示位置在用户空间中。 GNU/Linux内核架构简易图: 1.基础命令行操作 1.1 Shell功能定义 命令行解释器&#xff1a;Shell解释用户输入的命令&#x…