机器学习数据降维方法

1.数据类型
2.如何选择降维方法进行数据降维
3.线性降维:主成分分析(PCA)、线性判别分析(LDA)
4.非线性降维
5.基于特征选择的降维
6.基于神经网络的降维

  数据降维是将高维数据转换为低维表示的过程,旨在保留关键信息的同时减少计算复杂度、去除噪声或可视化数据。常见降维方法有几类,分别对应不同数据采用。

方法类型优点缺点适用场景
PCA计算快、可解释、保留全局结构仅捕获线性关系特征相关性高、线性数据
t-SNE可视化效果好、保留局部结构计算慢、难以解释、超参敏感高维数据可视化(如单细胞RNA-seq)
UMAP比t-SNE快、保留局部和部分全局结构需调参大规模非线性数据
LDA最大化类别可分性仅适用于分类、需标签有监督分类任务
自编码器处理复杂非线性关系需要大量数据、训练成本高图像、语音等高维非线性数据
特征选择保留原始特征、可解释性强可能丢失特征间交互信息特征冗余明显的结构化数据

一、数据类型

  虽然降维方法最初多用于数值型数据,但通过适当的预处理和转换,非数值型数据(如类别型、文本、图像、图网络等) 也可以使用降维技术。降维的核心是保留数据的本质结构,无论原始形式如何,文本是通过词频或语义嵌入捕捉语义相似性。图数据是通过节点关系捕捉社区结构。类别数据是通过共现频率或概率模型发现潜在模式。

1. 类别型数据(Categorical Data)

  (1)独热编码(One-Hot Encoding)后降维:将类别变量转为二进制向量(如性别“男/女”变为[1,0]和[0,1]),再使用PCA或t-SNE降维。独热编码会大幅增加维度(“维度爆炸”),需配合降维。

2. 文本数据(Text Data)

  (1)词袋模型(Bag-of-Words) + 降维:将文本转为词频向量(TF-IDF)后,用PCA/NMF/LDA(潜在狄利克雷分配)降维。如新闻分类中,用NMF提取主题(每个主题是词的加权组合)。
  (2)词嵌入(Word Embedding):直接使用预训练的低维词向量(如Word2Vec、GloVe)表示文本,或对句子/文档向量化后降维。

3. 图数据(Graph/Network Data)

  (1)图嵌入(Graph Embedding):将节点映射为低维向量(如Node2Vec、DeepWalk),保留图的结构信息。
  (2)邻接矩阵降维:对图的邻接矩阵或拉普拉斯矩阵进行PCA或SVD分解。

4. 图像数据(Image Data)

  (1)传统方法:对像素矩阵使用PCA(如人脸识别中的“特征脸”)。
  (2)深度学习方法:用卷积自编码器(CAE)提取低维特征。

5. 混合型数据(数值+类别)

  (1)统一表征:对类别变量编码(如目标编码、嵌入),与数值变量拼接后降维。使用专门模型(如广义低秩模型,GLRM)。

二、如何选择降维方法进行数据降维

  降维方法需要综合考虑数据特性、问题目标和方法假设。

1.判断数据是否需要降维

(1)明确降维目标

描述方法推荐
可视化(降至2D/3D)优先选非线性方法(t-SNE/UMAP)
减少计算开销线性方法(PCA)或特征选择
去除噪声/冗余特征PCA、自动编码器或特征选择
提高模型性能结合监督方法(LDA、嵌入法)

(2)检查数据维度问题

描述方法推荐
特征数远大于样本数(如基因数据)必须降维
特征间高度相关PCA/线性方法有效
特征稀疏(如文本)NMF或稀疏PCA

2.选择降维方法的决策流程

(1)分析数据结构

数据特性推荐方法
线性关系(特征间方差主导)PCA、LDA(有标签)、SVD
非线性流形(复杂拓扑)t-SNE、UMAP、LLE、ISOMAP
混合类型数据统一编码后PCA,或广义低秩模型(GLRM)
高稀疏性(如文本)NMF、稀疏PCA

(2)是否带标签?
  有监督任务(分类/回归),优先用LDA(线性)或监督自编码器。特征选择递归特征消除(RFE)、基于模型的重要性排序(如XGBoost);无监督任务,PCA、t-SNE、UMAP等。

(3)是否需要可解释性

特性推荐方法
需要解释特征贡献PCA(主成分可分析)、特征选择。
无需解释自编码器、t-SNE(侧重可视化)。

(4)评估计算资源

特性推荐方法
大规模数据PCA、随机投影、增量PCA(内存高效)。
小样本高维数据t-SNE、UMAP(但需调参)

三、线性降维

1.主成分分析(PCA)

  主成分分析(PCA,Principal Component Analysis)是一种统计方法,用于通过线性变换将数据降维,同时尽可能保留数据中的主要变异信息。它是一种无监督学习方法,广泛应用于数据预处理、特征提取、降维、数据可视化和噪声去除等领域。
(1)PCA的核心思想
  PCA的目标是将原始数据投影到一组新的坐标轴(主成分)上,使得这些坐标轴的方向能够最大化数据的方差。 具体来说:
第一个主成分(PC1):是数据中方差最大的方向。
第二个主成分(PC2):是与PC1正交的方向中方差最大的方向。
后续主成分:依次类推,每个主成分都与之前的所有主成分正交,并且在剩余的方差中最大化。通过这种方式,PCA能够将数据的主要结构保留下来,同时去除一些不重要的信息(如噪声或冗余特征)。

(2)PCA的计算原理和过程代码示例
在这个例子中:
第一个主成分解释了50%的方差。
第二个主成分解释了50%的方差。
两个主成分的方差解释率之和为100%,说明降维后的数据保留了原始数据的全部信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import numpy as np# 示例数据
X = np.array([[2, 3],[4, 7],[6, 5],[8, 9]])# 数据标准化
scaler = StandardScaler()
X_scale = scaler.fit_transform(X)# 执行PCA
pca = PCA(n_components=2)  # 降维到2维
X_reduce = pca.fit_transform(X_scale)# 输出结果
print("原始数据(标准化后):\n", X_scale)
print("降维后的数据:\n", X_reduce)
print("主成分方向(特征向量):\n", pca.components_)
print("方差解释率:\n", pca.explained_variance_ratio_)

2.线性判别分析(LDA)

  线性判别分析(Linear Discriminant Analysis, LDA)是一种监督学习降维与分类方法,核心目标是通过线性变换将高维数据投影到低维空间,使得同类样本尽可能紧凑、不同类样本尽可能分离,从而提升分类性能。
(1)核心思想
  与无监督的 PCA 不同,LDA 利用类别标签信息,通过最大化类间方差与最小化类内方差的比值,寻找最优投影方向。直观理解,假设两类数据在二维空间中分布,LDA 的目标是找到一条直线,使得两类样本在该直线上的投影满足,类内样本尽可能集中(类内方差小);类间样本中心距离尽可能远(类间方差大)。

3.非负矩阵分解(NMF)

  将数据分解为非负矩阵的乘积,适用于所有特征为非负的场景(如图像)。

4.奇异值分解(SVD)

  对矩阵进行分解,保留主要奇异值,常用于推荐系统和文本数据(如潜在语义分析)。

四、非线性降维

1.t-SNE(t-分布随机邻域嵌入)

  保留局部相似性,适合高维数据可视化(如将数据降至2D/3D),但计算开销较大。

2.UMAP(均匀流形近似与投影)

  类似t-SNE,但计算效率更高,能同时保留局部和全局结构。

3.ISOMAP(等距映射)

4.局部线性嵌入(LLE)

五、基于特征选择的降维

1.过滤法

  使用统计指标(如方差、卡方检验、互信息)选择重要特征。

2.包装法

  通过模型性能评估特征子集(如递归特征消除RFE)。

3.嵌入法

  模型训练过程中自动选择特征(如Lasso回归、决策树的特征重要性)。

六、基于神经网络的降维

1.自编码器(Autoencoder)

  通过编码器压缩数据,解码器重建数据,隐层作为低维表示。可处理非线性关系。

2.变分自编码器(VAE)

  在自编码器中引入概率生成模型,适合生成任务。

3.深度非线性降维(如深度信念网络)

  利用多层神经网络学习复杂非线性映射。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

太阳系运行模拟程序-html动画

太阳系运行模拟程序-html动画 by AI: <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>交互式太阳系…

2025年全国青少年信息素养大赛 scratch图形化编程挑战赛 小低组初赛 内部集训模拟题解析

2025年信息素养大赛初赛scratch模拟题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】 scratch资料 Scratch3.0系列视频课程资料零基础学习scratch3.0【入门教学 免费】零基础学习scratch3.0【视频教程 114节 免费】 历届蓝桥杯scratch国赛真题解析历届蓝桥杯scr…

grid网格布局

使用flex布局的痛点 如果使用justify-content: space-between;让子元素两端对齐&#xff0c;自动分配中间间距&#xff0c;假设一行4个&#xff0c;如果每一行都是4的倍数那没任何问题&#xff0c;但如果最后一行是2、3个的时候就会出现下面的状况&#xff1a; /* flex布局 两…

通义灵码2.5——基于MCP实现我的12306火车票智能查询小助手

本文因排版显示问题&#xff0c;为保证阅读体验&#xff0c;请大家访问&#xff1a; 通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手-CSDN博客 前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例&#xff0c;展现了AI辅助开发在复杂业务系统中的革命性突破…

Unity Button 交互动画

在UGUI的Button组件中&#xff0c;有一个过渡动画表现的功能。可以对按钮的不同交互状态添加交互反馈动画&#xff0c;来提高玩家的交互体验。 交互状态 名称 描述 Normal 正常情况 Highlighted 高亮显示&#xff0c;例如鼠标触碰到按钮点击范围 Pressed 按钮被按下的时…

钉钉热点实时推送助理-思路篇

以下是针对热点实时推送助理的功能描述&#xff0c;结合机器学习技术栈与用户场景的通俗化解释&#xff1a; 快速体验的话直接用钉钉扫描下方二维码体验 1. 核心功能 &#xff08;1&#xff09;热点抓取引擎 类比&#xff1a;像蜘蛛爬取全网信息&#xff08;网络爬虫信息抽取…

remote: error: hook declined to update refs/heads.....

gitee拉取分支&#xff0c;修改上传出现的问题&#xff0c;折腾了好久&#xff0c;浅浅记录. 1. 首次克隆仓库 # 克隆仓库&#xff08;使用 HTTPS 或 SSH&#xff09; git clone ------------ cd xxx-project2. 配置正确的用户信息&#xff08;关键步骤&#xff01;&#xff…

使用Vue + Element Plus实现可多行编辑的分页表格

需求背景&#xff1a; 在现代前端开发中&#xff0c;表格作为数据展示和交互的重要组件&#xff0c;在各类管理系统、数据平台中有着广泛的应用。随着用户对数据操作便捷性要求的不断提高&#xff0c;具备灵活编辑功能的表格成为了开发中的常见需求。特别是在需求处理大…

奥威BI+AI——高效智能数据分析工具,引领数据分析新时代

随着数据量的激增&#xff0c;企业对高效、智能的数据分析工具——奥威BIAI的需求日益迫切。奥威BIAI&#xff0c;作为一款颠覆性的数据分析工具&#xff0c;凭借其独特功能&#xff0c;正在引领数据分析领域的新纪元。 一、‌零报表环境下的极致体验‌ 奥威BIAI突破传统报表限…

【机器学习基础】机器学习入门核心算法:K均值(K-Means)

机器学习入门核心算法&#xff1a;K均值&#xff08;K-Means&#xff09; 1. 算法逻辑2. 算法原理与数学推导2.1 目标函数2.2 数学推导2.3 时间复杂度 3. 模型评估内部评估指标外部评估指标&#xff08;需真实标签&#xff09; 4. 应用案例4.1 客户细分4.2 图像压缩4.3 文档聚类…

springboot多模块父pom打包正常,单模块报错

背景&#xff1a;因为项目开发中经常发测试环境&#xff0c;发现使用阿里的插件能一键上传&#xff0c;不用手动上传比较方便。但是多模块有多个启动jar的时候&#xff0c;全局打包太慢&#xff0c;单独打发现报错。这里贴一下我使用这个插件的方式&#xff1a; 附带一个我感觉…

通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手

前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例&#xff0c;展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系&#xff0c;我们构建了一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

进程间通信(共享内存)

目录 前置&#xff1a; 一 原理 二 API 1. shmgetr 2. shmctl 3. 指令操作 2. 删除 3. 挂接 4. 断开挂接 三 demo代码 四 共享内存的特征 前置&#xff1a; 1.前面说的不管是匿名管道还是命名管道都是基于文件的思想构建的一套进程间通信的方案&#xff0c;那有没有…

详解GPU

详解GPU GPU&#xff08;图形处理器&#xff09;就像电脑里的 “图形小能手”&#xff0c;原本主要用来画画&#xff08;渲染图形&#xff09;&#xff0c;现在还能帮忙干很多杂活&#xff08;并行计算&#xff09; 一、先认识 GPU 的 “钥匙”&#xff1a;驱动和开发工具 装驱…

体育遇上AI:解读新一代智能阅读产品

在信息过载的今天&#xff0c;体育迷们时常面对这样的困扰&#xff1a;如何从海量赛事新闻、数据分析和深度评论中高效获取自己真正关心的内容&#xff1f;体育AI阅读产品正成为解决这一痛点的关键钥匙——它融合人工智能技术与体育内容生态&#xff0c;为球迷提供智能化、个性…

外网访问可视化工具 Grafana (Linux版本)

Grafana 是一款强大的可视化监控指标的展示工具&#xff0c;可以将不同的数据源数据以图形化的方式展示&#xff0c;不仅通用而且非常美观。它支持多种数据源&#xff0c;如 prometheus 等&#xff0c;也可以通过插件和 API 进行扩展以满足各种需求。 本文将详细介绍如何在本地…

Java开发经验——阿里巴巴编码规范实践解析4

摘要 本文主要介绍了阿里巴巴编码规范中关于日志处理的相关实践解析。强调了使用日志框架&#xff08;如 SLF4J、JCL&#xff09;而非直接使用日志系统&#xff08;如 Log4j、Logback&#xff09;的 API 的重要性&#xff0c;包括解耦日志实现、统一日志调用方式等好处。同时&…

各个链接集合

golang学习&#xff5e;&#xff5e;_从数组中取一个相同大小的slice有成本吗?-CSDN博客 框架 golang学习&#xff5e;&#xff5e;_从数组中取一个相同大小的slice有成本吗?-CSDN博客 golang k8s学习_容器化部署和传统部署区别-CSDN博客 K8S rabbitmq_rabbitmq 广播-CSD…

Cesium 展示——获取鼠标移动、点击位置的几种方法

文章目录 需求分析:这里我们用到了几种常见的鼠标事件1. 获取鼠标移动的位置2. 获取鼠标点击的位置3. 添加面4. 示例代码需求 获取指定断面的 label 分析:这里我们用到了几种常见的鼠标事件 1. 获取鼠标移动的位置 viewer.screenSpaceEventHandler.setInputAction((moveme…

技术分享 | Oracle SQL优化案例一则

本文为墨天轮数据库管理服务团队第70期技术分享&#xff0c;内容原创&#xff0c;作者为技术顾问马奕璇&#xff0c;如需转载请联系小墨&#xff08;VX&#xff1a;modb666&#xff09;并注明来源。 一、问题概述 开发人员反映有条跑批语句在测试环境执行了很久都没结束&…