【skLearn 回归模型】Lasso ---- 选择最佳正则化参数 <带交叉验证的Lasso LassoCV()>

article/2025/9/28 20:31:21

文章目录

  • 一、linear_model.LassoCV()
    • ♦ 正则化路径 regularization path
    • ♦ linear_model.LassoCV类
      • ① 自定义alpha范围测试
      • ② LassoCV默认参数配置测试


一、linear_model.LassoCV()

使用交叉验证的 Lasso类的参数看起来与岭回归略有不同,这是由于 Lasso对于alpha的取值更加敏感的性质决定的。之前提到过,由于 Lasso对正则化系数的变动过于敏感,因此我们往往让α在很小的空间中变动。这个小空间小到超乎人们的想象(不是0.01到0.02之间这样的空间,这个空间对 lasso而言还是太大了),因此我们设定了一个重要概念"正则化路径”,用来设定正则化系数的变动.


♦ 正则化路径 regularization path

假设我们的特征矩阵中有n个特征,则我们就有特征向量x1,x2…xn。对于每一个α的取值,我们都可以得出一组对应这个特征向量的参数向量w,其中包含了n+1个参数,分别是w0,w1,w2,...wn.这些参数可以被看作是一个n维空间中的一个点。对于不同的α取值,我们就将得到许多个在n维空间中的点,所有的这些点形成的序列,就被我们称之为是正则化路径

我们把形成这个正则化路径的α的最小值除以α的最大值得到的量(α.min/α.max)称为正则化路径的长度(length of the path)。在 sklearn中,我们可以通过规定正则化路径的长度(即限制α的最小值和最大值之间的比例),以及路径中α的个数,来让 sklearn为我们自动生成α的取值,这就避免了我们需要自己生成非常非常小的α的取值列表来让交叉验证类使用,类Lassocv自己就可以计算了。

和岭回归的交叉验证类相似,除了进行交叉验证之外, LassoCV也会单独建立模型。它会先找出最佳的正则化参数,然后在这个参数下按照模型评估指标进行建模。需要注意的是, LassoCV的模型评估指标(交叉验证结果)选用的是均方误差,而岭回归的模型评估指标是可以自己设定的,并且默认是R2

返回顶部


♦ linear_model.LassoCV类

class sklearn.linear_model.LassoCV(*, eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, normalize=False, precompute='auto', max_iter=1000, tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=None, positive=False, random_state=None, selection='cyclic')[source]

在这里插入图片描述

① 自定义alpha范围测试

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.datasets import fetch_california_housing as fch
from sklearn.linear_model import LassoCV
from sklearn.model_selection import train_test_split# 获取数据集
house_value = fch()
x = pd.DataFrame(house_value.data)
y = house_value.target
x.columns = ["住户收入中位数","房屋使用年代中位数","平均房间数目","平均卧室数目","街区人口","平均入住率","街区的纬度","街区的经度"]# 划分测试集和训练集
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.3,random_state=420)
# 重置索引
for i in [xtrain,xtest]:i.index = range(i.shape[0])# 自己建立Lasso进行alpha选择的范围
# 形成10为底的指数函数
# 10**(-10) -10**(-2)
alpha_range = np.logspace(-10,-2,200,base=10)
print(alpha_range) # 200个自定义的alpha值# LassoCV
lasso_ = LassoCV(alphas=alpha_range,cv=5).fit(xtrain,ytrain)# 查看最佳正则化系数
best_alpha = lasso_.alpha_ # 0.0020729217795953697# 调用所有的交叉验证结果:均方误差 --- 每个alpha对应的五折交叉验证结果(200,5)
each_five_alpha = lasso_.mse_path_ 
#[[0.52454913 0.49856261 0.55984312 0.50526576 0.55262557]
# [0.52361933 0.49748809 0.55887637 0.50429373 0.55283734]
# [0.52281927 0.49655113 0.55803797 0.5034594  0.55320522]
# [0.52213811 0.49574741 0.55731858 0.50274517 0.55367515]
# [0.52155715 0.49505688 0.55669995 0.50213252 0.55421553]mean = lasso_.mse_path_.mean(axis=1)#有注意到在岭回归中我们的轴向是axis=0吗?
print(mean.shape)
# (200,)
#在岭回归当中,我们是留一验证,因此我们的交叉验证结果返回的是,每一个样本在每个 alpha下的交叉验证结果
#因此我们要求每个alpha下的交叉验证均值,就是axis=,跨行求均值
#而在这里,我们返回的是,每一个 alpha取值下,每一折交叉验证的结果
#因此我们要求每个 alpha下的交叉验证均值,就是axis=1,跨列求均值# 最佳正则化系数下获得的模型的系数结果
w = lasso_.coef_
# [ 4.29867301e-01  1.03623683e-02 -9.32648616e-02  5.51755252e-01,  1.14732262e-06 -3.31941716e-03 -4.10451223e-01 -4.22410330e-01]# 获取R2指数
r2_score = lasso_.score(xtest,ytest) # 0.6038982670571436

② LassoCV默认参数配置测试

# 使用LassoCV自带正则化路径长度和路径中的alpha个数来自动建立alpha选择的范围
ls_ = LassoCV(eps=0.0001,n_alphas=300,cv=5).fit(xtrain,ytrain)
# 查看最佳alpha
b_alpha = ls_.alpha_  # 0.0029405973698326477
# 查看是否有自动生成的alpha取值
new_alpha = ls_.alphas_
print(ls_.alphas_.shape) # (300,)
# 查看R2指数
r2 = ls_.score(xtest,ytest) # 0.6036135609816554
# 查看特征系数
W = ls_.coef_
# [ 4.26722427e-01  1.04253992e-02 -8.71648975e-02  5.20444027e-01,  1.40841579e-06 -3.30718197e-03 -4.09361522e-01 -4.20836139e-01]

可以看出来通过自定义alpha或LassoCV自带的正则化路径进行测试,最终的结果都相差不大,所以按照本数据而言,最佳正则化系数约为0.002-0.003之间,此时的模型训练最佳。

返回顶部



http://chatgpt.dhexx.cn/article/2OXcs7wy.shtml

相关文章

python-sklearn岭回归与LASSO回归模型(套索)代码实操

python-sklearn岭回归与lasso回归模型代码实操 前言一、岭回归1.岭回归介绍2.代码实现3.岭回归参数调整4.岭迹分析,可视化分析 二、LASSO回归1.LASSO回归介绍2.代码实现ps. Lasso回归的特征选择3.岭回归参数调整4.模型系数的数据可视化比较 前言 hello大家好这里是小…

python机器学习库sklearn——Lasso回归(L1正则化)

分享一个朋友的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 Lasso The L…

【数据挖掘】Lasso回归原理讲解及实战应用(超详细 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ Lasso回归 岭回归无法剔除变量,而Lasso(Least Absolute Shrinkage and Selection Operator)回归模型,将惩罚项由L2范数变为L1范数,可以将一些不重要的回归系数缩减为0&…

Lasso回归系列四:Group Lasso,Sparse Group Lasso

Lasso变体:Group Lasso,Sparse Group Lasso 关于Lasso回归的讲解可以看我的另一篇博客:Lasso回归系列二:Lasso回归/岭回归的原理 Group Lasso 在Lasso回归中,是单独地看待每个特征(即假定特征不存在先验的分组)&…

Group Lasso

简介 Lasso(least absolute shrinkage and selection operator,又译最小绝对值收敛和选择算子、套索算法)是一种同时进行特征选择和正则化(数学)的回归分析方法,旨在增强统计模型的预测准确性和可解释性&a…

Lasso回归(Stata)

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi 前言 一、lasso回归的应用 这里因为Stata里对岭回归有bug,所以就没有岭回归&#xff…

Lasso-Logistic回归-R语言应用详解

Lasso简介 LASSO(Least Absolute Shrinkage and Selection Operator)是线性回归的一种缩减方式,通过引入 L 1 L_1 L1​惩罚项,实现变量选择和参数估计。 ∑ i 1 N ( y i − β 0 ∑ j 1 p x i j β j ) 2 λ ∑ j 1 p ∣ β j ∣ \sum_{i1}^{N}\le…

Lasso问题

转自:http://blog.csdn.net/slade_sha/article/details/53164905 先看一波过拟合: 图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。 下面可以利用正则化来…

Lasso Regression

Lasso Regression 标签(空格分隔): 监督学习 在数据挖掘和机器学习算法的模型建立之初,为了尽量的减少因缺少重要变量而出现的模型偏差问题,我们通常会尽可能的多的选择自变量。但是在实际建模的过程中,通…

logistic回归、lasso回归、ridge回归、Elastic Net回归之间的总结

1. 概念 一直看一遍忘一遍,实在懒得再查了,理解后再次整理,希望能加深理解。 先总结几个概念: 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器&#xff…

机器学习--岭回归和Lasso回归

任何数据都存在噪声和多重共线性 如何解决多重共线性 ? 1.算法角度(正则化) 2.数据角度(最有效果) 岭回归与Lasso回归的出现是为了解决线性回归出现的过拟合(数据间高度线性相关)以及在通过正规…

LASSO和LARS

1、LASSO简介 LASSO是一种经典的松弛算法,其全称是The Least Absolute Shrinkage and Selectionator operator,于1996年由Tibshirani提出来。lasso的一个根本思想就是利用L1范式来诱导稀疏解,下面给出lasso的两种形式以及其等价性证明&#x…

R语言实现LASSO回归

Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术。Lasso是一种收缩估计方法,其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残差平方和最小化,从而能够产生某些严格等于0的回归…

python-LASSO回归模型

https://zhuanlan.zhihu.com/p/76055830 LASSO回归模型的应用 ①可视化方法确定值 import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib from sklearn import model_selection from sklearn.linear_model import Lasso, LassoCV font…

Lasso模型

Lasso是一种数据降维方法,该方法不仅适用于线性情况,也适用于非线性情况。Lasso是基于惩罚方法对样本数据进行变量选择,通过对原本的系数进行压缩,将原本很小的系数直接压缩至0,从而将这部分系数所对应的变量视为非显著…

Lasso算法理论介绍

先看一波过拟合: 图中,红色的线存在明显的过拟合,绿色的线才是合理的拟合曲线,为了避免过拟合,我们可以引入正则化。 下面可以利用正则化来解决曲线拟合过程中的过拟合发生,存在均方根误差也叫标准误差&…

Lasso回归系列二:Lasso回归/岭回归的原理

Lasso回归/岭回归的原理 在学习L1,L2正则化的作用和区别时,我们总是会看到这样的一副图片: 这幅图片形象化地解释了L1,L2对线性模型产生的不同的约束效果。 我最开始其实是不太理解为什么要这么画的。比如 1、L1范数(L1-norm)等…

回归问题-Lasso回归

Lasso(Least absolute shrinkage and selection operator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。 正则化 正则化&am…

Lasso回归

维数灾难 高维数据 何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。 在分析高维数据过程中碰到最大的问题就是维数…

1.1.3. Lasso(套索回归)

1.1.3. Lasso 一、简介 首先,Lasso同样是线性回归的一种变体。而文档中指出,它是一种能让参数 ω \omega ω稀疏的模型(作用)。它是压缩感知领域的基础(地位),在特定情况下,它可以“…