Lasso回归

article/2025/9/28 22:22:57

维数灾难

高维数据

何谓高维数据?高维数据指数据的维度很高,甚至远大于样本量的个数。高维数据的明显的表现是:在空间中数据是非常稀疏的,与空间的维数相比样本量总是显得非常少。
在分析高维数据过程中碰到最大的问题就是维数的膨胀,也就是通常所说的“维数灾难”问题。研究表明,随着维数的增长,分析所需的空间样本数会呈指数增长。
如下所示,当数据空间维度由1增加为3,最明显的变化是其所需样本增加;换言之,当样本量确定时,样本密度将会降低,从而样本呈稀疏状态。假设样本量n=12,单个维度宽度为3,那在一维空间下,样本密度为12/3=4,在二维空间下,样本分布空间大小为3*3,则样本密度为12/9=1.33,在三维空间下样本密度为12/27=0.44。
设想一下,当数据空间为更高维时,X=[ x1 x 1 , x2 x 2 ,…., xn x n ]会怎么样?
样本数据维度由一维增加为三维

  1. 需要更多的样本,样本随着数据维度的增加呈指数型增长;
  2. 数据变得更稀疏,导致数据灾难;
  3. 在高维数据空间,预测将变得不再容易;
  4. 导致模型过拟合。

维数灾难在分类问题中的体现

具体例子可以参考 机器学习:分类问题中的“维数灾难”

数据降维

对于高维数据,维数灾难所带来的过拟合问题,其解决思路是:1)增加样本量;2)减少样本特征,而对于现实情况,会存在所能获取到的样本数据量有限的情况,甚至远小于数据维度,即:d>>n。如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等。
主成分分析作为一种数据降维方法,其出发点是通过整合原本的单一变量来得到一组新的综合变量,综合变量所代表的意义丰富且变量间互不相关,综合变量包含了原变量大部分的信息,这些综合变量称为主成分。主成分分析是在保留所有原变量的基础上,通过原变量的线性组合得到主成分,选取少数主成分就可保留原变量的绝大部分信息,这样就可用这几个主成分来代替原变量,从而达到降维的目的。

但是,主成分分析法只适用于数据空间维度小于样本量的情况,当数据空间维度很高时,将不再适用。

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

Lasso回归

普通线性模型

这里写图片描述

惩罚方法

这里写图片描述

Lasso方法

这里写图片描述

Ridge方法

这里写图片描述
这里写图片描述

图形比较

这里写图片描述
以二维数据空间为例,说明lasso和Ridge两种方法的差异,左图对应于Lasso方法,右图对应于Ridge方法。
如上图所示,两个图是对应于两种方法的等高线与约束域。红色的椭圆代表的是随着 λ λ 的变化所得到的残差平方和, βˆ β ^ 为椭圆的中心点,为对应普通线性模型的最小二乘估计。左右两个图的区别在于约束域,即对应的蓝色区域。
等高线和约束域的切点就是目标函数的最优解,Ridge方法对应的约束域是圆,其切点只会存在于圆周上,不会与坐标轴相切,则在任一维度上的取值都不为0,因此没有稀疏;对于Lasso方法,其约束域是正方形,会存在与坐标轴的切点,使得部分维度特征权重为0,因此很容易产生稀疏的结果。
所以,Lasso方法可以达到变量选择的效果,将不显著的变量系数压缩至0,而Ridge方法虽然也对原本的系数进行了一定程度的压缩,但是任一系数都不会压缩至0,最终模型保留了所有的变量。

代码块

#加载模块
import numpy as np
import matplotlib.pyplot as plt
import time
from sklearn.linear_model import Lasso
from sklearn.metrics import r2_score
from sklearn.linear_model import LassoCV
from sklearn.model_selection import train_test_split# 生成稀疏样本数据
np.random.seed(int(time.time()))# 生成系数数据,样本为50个,参数为300维
n_samples, n_features = 50, 300# 模拟服从正态分布的样本数据
X = np.random.randn(n_samples, n_features)# 每个变量对应的系数
coef = 2 * np.random.randn(n_features)# 变量的下标
inds = np.arange(n_features)# 变量下标随机排列
np.random.shuffle(inds)# 仅仅保留10个变量的系数,其他系数全部设置为0,生成稀疏参数
coef[inds[10:]] = 0# 得到目标值,y
y = np.dot(X, coef)# 为y添加噪声
y += 0.01 * np.random.normal((n_samples,))# 将数据分为训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=14)# LassoCV: 基于坐标下降法的Lasso交叉验证,这里使用20折交叉验证法选择最佳alpha
print("使用坐标轴下降法计算参数正则化路径:")
model = LassoCV(cv=20).fit(X, y)# 最终alpha的结果,因为有的alpha实在是太小了,所以使用负对数形式表示
m_log_alphas = -np.log10(model.alphas_)"""
由于这里使用的是20折交叉验证,所以model.mse_path_有20列;
model.mse_path_中每一列,是对应交叉验证,在alpha选择不同值的时候,其对应的均方误差(mean square error);
模型最终选择的alpha是所有交叉验证结果的平均值中,最小的那个平均的均方误差对应的alpha。
"""# 作出交叉验证不同的alpha取值对应的MSE的轨迹图plt.figure()
ymin, ymax = 500, 1500
plt.plot(m_log_alphas, model.mse_path_, ':')
plt.plot(m_log_alphas, model.mse_path_.mean(axis=-1), 'k',label='Average across the folds', linewidth=2)
plt.axvline(-np.log10(model.alpha_), linestyle='--', color='k',label='alpha: CV estimate')plt.legend()
plt.xlabel('-log(alpha)')
plt.ylabel('Mean square error')
plt.title('Mean square error on each fold: coordinate descent')
plt.axis('tight')
plt.ylim(ymin, ymax)# Lasso 回归的参数
alpha = model.alpha_
lasso = Lasso(max_iter=10000, alpha=alpha)# 基于训练数据,得到的模型的测试结果,这里使用的是坐标轴下降算法(coordinate descent)
y_pred_lasso = lasso.fit(X_train, y_train).predict(X_test)# 这里是R2可决系数(coefficient of determination)
# 回归平方和(RSS)在总变差(TSS)中所占的比重称为可决系数
# 可决系数可以作为综合度量回归模型对样本观测值拟合优度的度量指标。
# 可决系数越大,说明在总变差中由模型作出了解释的部分占的比重越大,模型拟合优度越好。
# 反之可决系数小,说明模型对样本观测值的拟合程度越差。
# R2可决系数最好的效果是1。
r2_score_lasso = r2_score(y_test, y_pred_lasso)print("测试集上的R2可决系数 :{:2f}" .format(r2_score_lasso))plt.plot(lasso.coef_, label='Lasso coefficients')
plt.plot(coef, '--', label='original coefficients')
plt.legend(loc='best')plt.show()

http://chatgpt.dhexx.cn/article/NTdnhcLA.shtml

相关文章

1.1.3. Lasso(套索回归)

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

【机器学习】Lasso模型

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

多元线性回归-Lasso

目录 1.Lasso与多重共线性 2. Lasso的核心作用:特征选择 3. 选取最佳的正则化参数取值 1.Lasso与多重共线性 Lasso全称最小绝对收缩和选择算子(Least absolute shrinkage and selection operator),由于这个名称过于复杂所以简称为Lasso,和…

Lasso线性回归学习笔记(公式与代码实现)

目录 Lasso线性回归学习笔记(公式与代码实现)1 为什么要在线性回归中引入正则化项(简介)2 常见正则化项3 损失函数图像与正则化之后的图像3.1损失函数图像3.2 加了 L~1~ 正则项之后的损失函数图像 4 L~1~ 范数正则化的解中有更多零…

机器学习算法系列(五)- Lasso回归算法(Lasso Regression Algorithm)

阅读本文需要的背景知识点:线性回归算法、一丢丢编程知识 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用——反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 一、…

学习机器学习和深度学习的方法和步骤

学习机器学习和深度学习的方法和步骤 相信很多人都在找学习机器学习和深度学习的步骤和教程。作为过来人和大家一起交流一下。 我自己制作的一个思维导图希望对大家有帮助。

机器学习算法介绍

前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型计算机&#xf…

机器学习之【提升方法】

机器学习【提升方法】 一、Adaboost的起源1.强可学习与弱可学习 二、怎样实现弱学习转为强学习1.怎样获得不同的弱分类器?BaggingBagging的弊端 2.怎样组合弱分类器? 三、Adaboost的提出四、Adaboost的基本概念五、Adaboost算法六、示例七、Boosting illustration 一、Adaboo…

(四)机器学习方法的分类

文章目录 一、监督学习二、非监督学习三、半监督学习四、增强学习五、机器学习的其他分类1. 批量学习(Batch Learning)2. 在线学习(Online Learning)3. 参数学习(Parametric Learning)4. 非参数学习 在上一…

【机器学习】之机器学习方法的分类

1,监督学习 给机器的训练数据拥有标记和答案 例如: 图像已经积累了标定信息银行已经积累了客户的信息和信用卡的信息 2,非监督学习 给机器的训练数据没有标记或答案 对没有标记的数据进行分类 – 聚类分析 对数据进行降维处理 特征提取…

机器学习常用方法

在本篇文章中,我将对机器学习做个概要的介绍。本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践。这篇文档也算是EasyPR开发的番外篇,从这里开始,必须对机器学习了解才能进一步介绍EasyPR的内核。…

机器学习的几种学习方式

根据数据类型的不同,对一个问题的建模有不同的方式,人们首先会考虑算法的学习方式。将算法按照学习方式分类可以让人们在建模和算法选择时,根据输入数据来选择最合适的算法,从而获得最好的结果。 在机器学习领域,有以…

机器学习--机器学习的基本方法

文章目录 1.1统计分析1.1.1 统计基础1.1.2 常见的概率分布2.1.3参数估计1.1.4 假设与检验1.1.5线性回归1.1.6逻辑回归1.1.7判别分析1.1.8 非线性判决 1.1统计分析 统计学是研究如何收集资料,整理资料和进行量化分析,判断的一门学科。在科学计算&#xf…

机器学习的四种学习方法

文章目录 监督学习(Supervised Learning)无监督学习(Unsupervised Learning)半监督学习(Semi-supervised Learning)强化学习(Reinforcement Learning)应用 监督学习(Supervised Learning&#x…

机器学习方法的基本分类

目录 1、监督学习(supervised learning) 2、无监督学习(unsupervised learning) 3、强化学习(reinforcement learning) 4、半监督学习(semi-supervised learning)与主动学习&…

机器学习的常用方法

转自 史上最强----机器学习经典总结---入门必读----心血总结-----回味无穷 在这个部分我会简要介绍一下机器学习中的经典代表方法。这部分介绍的重点是这些方法内涵的思想,数学与实践细节不会在这讨论。 1、回归算法 在大部分机器学习课程中,回归算法都…

机器学习的三种方法

目录 介绍 鸢尾花(Iris)数据集 梯度下降 逻辑回归 使用逻辑回归处理鸢尾花(Iris)数据集 反向传播 使用反向传播处理鸢尾花(Iris)数据集 支持向量机 用支持向量机处理鸢尾花(Iris)数据集 结论 下载Iris_Data-3.7 KB下载LogiticRegression_Iris-309.7 KB下载LogiticReg…

机器学习的方法

机器学习(machine learning)是一门多领域交叉学科,涉及了概率论、统计学、算法复杂度等多门学科。专门研究计算机怎样模拟或实现人的学习行为,它能够发现和挖掘数据所包含的潜在价值。机器学习已经成为了人工智能的一个分支,通过自学习算法,发现和挖掘数据潜在的规律,从…

机器学习中常见4种学习方法、13种算法

机器学习中常见4种学习方法、13种算法 一. 4大主要学习方法 1.1 监督式学习 在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中…

机器学习的13种算法和4种学习方法,推荐给大家

机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的分类。 一、4大主要学习方式 1…