讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在Python中利用L1正则化解决线性回归模型的多重共线性?

梦宇君_8175

梦宇君_8175

发布时间:2026-08-03 09:36:41

|

239人浏览过

|

来源于php中文网

原创

L1正则化在scikit-learn中对应Lasso类,其通过L1惩罚项自动将部分系数压缩至0,实现特征筛选并缓解多重共线性;需标准化输入、慎用Ridge(仅缩放不置零),推荐LassoCV自动选参。

如何在python中利用l1正则化解决线性回归模型的多重共线性?

L1正则化在scikit-learn中对应哪个类?

直接用 Lasso,不是 Ridge 或 ElasticNet(除非你主动混合L1/L2)。Lasso 的核心就是 L1 惩罚项,能自动把部分系数压缩到 0,从而实现特征筛选——这对缓解多重共线性很关键,因为高度相关的特征里,它通常只保留一个,其余归零。

常见错误是误用 Ridge:它用 L2,只能缩小系数、不能置零,对共线性有抑制但不解决“冗余特征干扰解释性”的问题。

  • Lasso 默认使用坐标下降法(coordinate_descent),对高维稀疏数据友好
  • 若遇到收敛警告 ConvergenceWarning,优先调大 max_iter(比如设为 2000),而不是盲目调小 alpha
  • fit_intercept=True 是默认值,但若 X 已中心化,可设为 False 避免重复去均值

alpha 取值太小或太大分别会导致什么?

alpha 控制正则强度:太小 → 几乎没惩罚,系数仍不稳定;太大 → 过度收缩,所有系数趋近于 0,模型欠拟合。多重共线性下尤其敏感——同一组相关特征,alpha 微调可能导致某个系数从 0.15 突然跳到 0,或反过来。

推荐做法是用 LassoCV 自动选参,它默认做 5 折交叉验证,返回使 MSE 最小的 alpha_:

立即学习“Python免费学习笔记(深入)”;

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载
from sklearn.linear_model import LassoCV
lasso_cv = LassoCV(cv=5, alphas=np.logspace(-4, -1, 50))
lasso_cv.fit(X, y)
print("选中的 alpha:", lasso_cv.alpha_)
  • 手动网格搜索时,alphas 建议用对数等间距(np.logspace),而非线性等间距
  • 如果 LassoCV 返回的 alpha_ 接近你设定范围的边界(如最小值),说明需要拓宽 alphas 范围
  • 注意:LassoCV 的 cv 参数若设为整数,用的是 KFold;若数据有时间结构,得换 TimeSeriesSplit

为什么标准化输入变量是必须步骤?

L1 惩罚对特征量纲极度敏感。比如一个特征单位是“万元”,另一个是“百分比”,前者数值天然大几十倍,Lasso 会倾向先压缩后者——这不是统计意义的选择,纯粹是量纲作弊。不标准化,Lasso 的特征筛选结果不可信。

必须在 Lasso 之前用 StandardScaler(或 scale),且注意:对新样本预测时,要用训练集得到的 scaler 参数做变换,不能重新 fit:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)  # ✅ 训练集 fit+transform
X_test_scaled = scaler.transform(X_test)  # ✅ 测试集只 transform
  • 别用 MinMaxScaler 替代——它不保证零均值,会影响 Lasso 对截距项的处理
  • 如果含哑变量(one-hot 编码后的类别特征),也应参与标准化;虽然它们本就 0/1,但和连续变量混在一起时,尺度差异仍存在
  • 标准化后,Lasso 输出的系数不能直接解释原始单位下的影响大小,需反向换算(但通常我们更关注“是否入选”而非绝对值)

如何确认多重共线性确实被缓解了?

不能只看 R² 或 MSE 提升——那可能是过拟合。重点检查系数稳定性与结构变化:

  • 对比普通线性回归(LinearRegression)和 Lasso 的系数向量:若某组相关特征(如 X1 和 X2)在普通回归中系数符号相反、绝对值接近,但在 Lasso 中一个为 0、另一个显著非零,说明共线性干扰已被打破
  • 用 np.linalg.cond(X_train_scaled) 查条件数:Lasso 本身不改变设计矩阵,但通过筛选特征,后续若重构 X_sub(只保留非零系数列),其条件数应明显下降
  • 留出验证集,反复重采样训练(如 bootstrap),观察非零系数集合是否稳定;若每次选的特征波动很大,说明 alpha 还没调好,或共线性太强,需考虑先做 PCA 或手动剔除高 VIF 特征

真正棘手的情况是:即使用了 Lasso,几个高度相关的特征系数依然轮流非零、震荡出现——这时候 L1 的“任意选择”特性成了弱点,该考虑 ElasticNet(混合 L1/L2)或领域知识驱动的特征合并。

热门AI工具

更多
UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1831

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

4904

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1789

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

29297

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3507

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3507

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1223

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

616

2023.08.10

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn