当前位置: 首页 > news >正文

机器学习数据降维方法

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.深度非线性降维(如深度信念网络)

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

相关文章:

  • 【论文解读】DETR: 用Transformer实现真正的End2End目标检测
  • 【2025文博会现场直击】多图预警
  • WSL 开发环境搭建指南:Java 11 + 中间件全家桶安装实战
  • 甘特图 dhtmlxGantt.js UA实例
  • LVS-Keepalived高可用群集
  • 3D PDF如何制作?SOLIDWORKS MBD模板定制技巧
  • LVS+Keepalived高可用集群
  • Opencv实用操作6 开运算 闭运算 梯度运算 礼帽 黑帽
  • LVS+Keepalived高可用群集
  • 2025年- H57-Lc165--994.腐烂的橘子(图论,广搜)--Java版
  • 代码随想录打卡|Day50 图论(拓扑排序精讲 、dijkstra(朴素版)精讲 )
  • CentOS_7.9 2U物理服务器上部署系统简易操作步骤
  • 园区智能化集成平台汇报方案
  • 【C语言极简自学笔记】项目开发——扫雷游戏
  • 时序数据库IoTDB基于云原生的创新与实践
  • 【测试】Bug和用例
  • 测试概念 和 bug
  • git+svn+sourcetree客户端下载和安装教程
  • remote: error: hook declined to update refs/heads.....
  • 测试Bug篇
  • 网站建设运营公司/武汉seo排名
  • 怎么做网站 有空间/湖南网站建设推广
  • 怎么做网页调查问卷/seo学堂
  • 可以自学做网站吗/手机自己怎么建电影网站
  • php做网站的重点/江门网站建设模板
  • 做知乎网站社区要多少钱/seo优化上海牛巨微