🌺历史文章列表🌺
降维方法概述
降维目的是将高维数据映射到
低维空间中,同时尽量保留数据的主要信息。降维可以减少数据冗余、降低计算复杂度、减轻过拟合风险,并帮助我们更好地理解和可视化数据。降维方法主要分为线性降维和非线性降维两类。
线性降维方法
定义
线性降维方法假设数据可以通过线性变换从高维空间映射到低维空间。这类方法适用于数据具有线性结构/线性分布的情况。
特点
- 线性变换:通过线性变换(如矩阵乘法)来将高维数据映射到低维空间。
- 全局结构:关注数据的全局结构,试图在降维过程中保留整体几何和统计特性。
- 计算简单:计算复杂度低,结果具有良好的可解释性。
- 局限性:对具有复杂非线性结构的数据表现不佳。
常见方法
PCA(Principal Component Analysis,主成分分析)
原理
PCA 是一种无监督的线性降维方法,目的是通过寻找数据中方差最大的投影方向,将数据从高维空间映射到一个低维空间。PCA 的基本思想是:最大化数据在降维空间中的方差,即使得降维后的数据尽可能地保留原始数据的信息。
步骤
- 数据中心化:将数据矩阵的每一列减去其均值,使数据均值为零。
- 计算协方差矩阵:对于 n × p n \times p n×p 的数据矩阵 X X X,计算协方差矩阵 C = 1 n − 1 X T X C = \frac{1}{n-1} X^T X C=n−11XTX。
- 特征值分解:对协方差矩阵 C C C 进行特征值分解,得到特征值和对应的特征向量。特征值表示主成分的方差,特征向量表示主成分的方向。
- 选择主成分:选择前 k k k 个最大特征值对应的特征向量,作为新的低维空间的基向量。
- 数据投影:将原始数据投影到选定的主成分上,得到降维后的数据。
降维后的数据
经过降维后:
Y
=
X
W
Y = X W
Y=XW
- X X X:原始数据矩阵,包含 n n n 个样本和 p p p 个特征。
- W W W:包含前 k k k 个主要特征向量的矩阵,这些特征向量对应于最大特征值,表示数据的主要方向。
- Y Y Y:降维后的数据矩阵,表示将原始数据从 p p p 维空间投影到 k k k 维空间后的结果。
通过将 X X X 与 W W W 相乘,得到的 Y Y Y 可以保留数据的主要特征信息,同时减少维度,便于后续分析。
优点
- 最大化方差:PCA 能找到数据方差最大的方向,并将数据投影到这些方向上,尽可能保留数据的主要信息。
- 降维效果好,计算简单:只涉及矩阵分解和简单的线性代数运算,计算效率高,同时保持了数据的主要结构。
缺点
- 无法处理非线性关系:PCA 假设数据是线性分布的,无法处理非线性关系的数据。
- 对离群点敏感:PCA 使用的协方差矩阵会受到离群点的影响,因此对异常值敏感。
- 解释性差:主成分是线性组合,不总是容易解释为原始特征的物理含义。
应用场景
- 数据降维:在高维数据中提取主要特征,例如图像压缩、降维后用于可视化。
- 噪声消除:通过保留方差较大的主成分,消除方差较小的噪声成分。
- 特征提取:在分类或回归问题中,通过 PCA 提取主要特征用于建模。
LDA(Linear Discriminant Analysis,线性判别分析)
原理
LDA 是一种有监督的线性降维方法,目的是通过一个线性变换,寻找一个最佳的投影方向,使得变换后的数据集类内差异最小,类间差异最大。
步骤
-
计算类内散布矩阵 S W S_W SW:反映同一类数据的分散程度,类内散布矩阵的定义为各类别协方差矩阵的加权和:
S W = ∑ i = 1 c S i = ∑ i = 1 c ∑ x ∈ C i ( x − μ i ) ( x − μ i ) T S_W = \sum_{i=1}^c S_i = \sum_{i=1}^c \sum_{x \in C_i} (x - \mu_i)(x - \mu_i)^T SW=i=1∑cSi=i=1∑cx∈Ci∑(x−μi)(x−μi)T
其中, c c c为类别数, μ i \mu_i μi为第 i i i类的均值向量。
-
计算类间散布矩阵 S B S_B SB:反映不同类别之间的分散程度,类间散布矩阵的定义为各类别均值向量与总体均值向量的协方差矩阵:
S B = ∑ i = 1 c n i ( μ i − μ ) ( μ i − μ ) T S_B = \sum_{i=1}^c n_i (\mu_i - \mu)(\mu_i - \mu)^T SB=i=1∑cni(μi−μ)(μi−μ)T
其中, n i n_i ni为第 i i i类的样本数目, μ \mu μ为所有样本的均值向量。
-
求解广义特征值问题:通过求解 S W − 1 S B S_W^{-1} S_B SW−1SB的特征值和特征向量来找到最佳的投影方向。
-
选择投影方向:选择前 k k k个特征值对应的特征向量,作为新的低维空间的基向量。
-
数据投影:将原始数据投影到这些基向量上,得到降维后的数据。
降维后的数据
经过降维后:
Y
=
X
W
Y = X W
Y=XW
- X X X:原始数据矩阵,包含 n n n 个样本和 p p p 个特征。
- W W W:包含前 k k k 个主要特征向量的矩阵,这些特征向量对应于最大特征值,表示数据的主要方向。
- Y Y Y:降维后的数据矩阵,表示将原始数据从 p p p 维空间投影到 k k k 维空间后的结果。
通过将 X X X 与 W W W 相乘,得到的 Y Y Y 可以保留数据的主要特征信息,同时减少维度,便于后续分析。
优点
- 区分性强:LDA 利用类别信息,能够有效找到最有利于区分类别的投影方向。
- 降维与分类结合:LDA 同时实现了降维和分类,适合用于分类任务中的特征提取。
缺点
- 对非线性数据效果较差:LDA 假设数据类别之间是线性可分的,对非线性数据效果较差。
- 需要类别标签对类别分布敏感:需要类别标签,类别不均衡时效果不佳,LDA 假设各类别的协方差矩阵相同,若类别分布差异较大,效果可能较差。
应用场景
- 分类任务中的降维:在有标签数据中,用于降维和分类建模,例如人脸识别、文本分类等。
- 小样本问题:在样本较少而特征较多的分类问题中,LDA 可以减少维度,缓解过拟合问题。
SVD(Singular Value Decomposition,奇异值分解)——LORA使用
原理
SVD 是一种矩阵分解技术,它将一个矩阵分解为三个矩阵的乘积:
- 左奇异矩阵
- 对角矩阵
- 右奇异矩阵
步骤
实现步骤如下:
-
矩阵分解:对数据矩阵进行奇异值分解,得到 U、Σ 和 V 矩阵。对于任意矩阵 X ∈ R m × n X \in \mathbb{R}^{m \times n} X∈Rm×n,SVD 将其分解为三个矩阵的乘积:
X = U Σ V T X= U \Sigma V^T X=UΣVT
其中:- U U U 是 m × m m \times m m×m 的正交矩阵,称为左奇异向量矩阵。
- Σ \Sigma Σ 是 m × n m \times n m×n 的对角矩阵,对角元素为奇异值,按从大到小排列。
- V V V 是 n × n n \times n n×n 的正交矩阵,称为右奇异向量矩阵。
-
奇异值与奇异向量:计算奇异值及对应的奇异向量。
- 奇异值是矩阵 X X X 的特征值,可以反映矩阵的固有性质。
- 左奇异向量和右奇异向量分别是矩阵 X X T XX^T XXT 和 X T X X^T X XTX 的特征向量。
-
低秩近似:选择前 k k k 个最大的奇异值及其对应的左右奇异向量,数据投影,构造一个低秩矩阵来近似原矩阵,实现降维和数据压缩。
降维后的数据
设原始数据矩阵为
X
X
X,它经过 SVD 分解为:
X
=
U
Σ
V
T
X = U \Sigma V^T
X=UΣVT
在降维过程中,我们只保留前
k
k
k 个奇异值和相应的奇异向量,得到一个低秩近似表示。这时,我们可以表示降维后的数据矩阵为:
Y
=
X
W
Y = X W
Y=XW
其中:
- Y Y Y 是降维后的数据矩阵,大小为 n × k n \times k n×k。
- W W W 是投影矩阵,由 V V V 的前 k k k 列组成,大小为 p × k p \times k p×k。
在这个表达式中, W = V k W = V_k W=Vk,表示将原始数据 X X X 投影到由前 k k k 个右奇异向量构成的空间中。因此, Y = X W Y = X W Y=XW 等价于 Y = U k Σ k Y = U_k \Sigma_k Y=UkΣk,实现了降维,同时保留了数据的主要信息。
各矩阵含义
优点
- 高效处理稀疏矩阵,适合大规模矩阵,保留主要结构信息:SVD 能高效处理稀疏矩阵,特别适合在推荐系统中对评分矩阵进行降维。 能够提取数据中的主要模式和结构,减少噪声和冗余。
缺点
- 计算复杂度高:对于大规模数据集,SVD 的分解过程计算复杂度较高。
- 对噪声敏感:奇异值分解容易受数据中的噪声影响,尤其是在高噪声数据中。
- 局限性:无法处理非线性关系。
应用场景
- 推荐系统:在推荐系统中,SVD 用于分解用户-物品评分矩阵,找到潜在的关联模式。
- 图像处理:在图像压缩中,SVD 被用于提取图像中的主要特征,从而减少图像数据量。
- 文本处理:在自然语言处理中的词语共现矩阵或词向量的降维中,SVD 用于提取主要的语义信息。
比较总结
方法 | 原理 | 优点 | 缺点 | 应用场景 |
---|---|---|---|---|
PCA | 无监督降维方式,通过线性变换,寻找方差最大的方向作为主成分。 | 最大化方差,提取主要特征,计算简单。 | 只捕捉线性关系,对离群点敏感,解释性差。 | 数据降维、噪声消除、特征提取、图像压缩。 |
LDA | 有监督降维方式,最大化类间方差,最小化类间方差与类内方差的比值,找到区分类别的投影方向。 | 结合降维与分类,区分性强,适合分类任务。 | 假设线性可分,对非线性数据效果较差,需要类别标签,对类别分布敏感。 | 分类任务中的降维,人脸识别、文本分类等。 |
SVD | 无监督降维方式,将矩阵分解为三个矩阵的乘积,提取矩阵中的主要模式和信息。 | 适合处理稀疏矩阵,保留主要结构信息,数学基础坚实。 | 计算复杂度高,对噪声敏感。 | 推荐系统、图像处理、文本处理中的降维。 |
选择哪种方法取决于数据的特性和具体任务。如果是无标签数据降维,可以使用 PCA 或 SVD;如果是有标签的分类问题,可以使用 LDA。
- PCA:主要用于无监督的降维,目标是最大化数据的方差,保留数据的主要信息。适用于数据的初步分析和可视化。
- LDA:主要用于有监督的降维,目标是最大化类别分离度。适用于分类问题中的特征提取和降维。
- SVD:广泛应用于各种数据处理任务,特别是矩阵分解和数据压缩。适用于降维、矩阵填充和数据压缩等任务。它在数学上等价于 PCA,但没有特别针对数据方差或类别分离度的优化目标。
非线性降维方法
总结:不同核方法的核函数选择策略
核函数参考:万字长文解读机器学习——感知机、MLP、SVM
方法 | 常用核函数 | 适用场景 |
---|---|---|
SVM | 线性核、RBF 核、多项式核、Sigmoid 核 | - 线性核:高维稀疏数据(如文本分类)。 - RBF 核:非线性分类问题,复杂模式识别(如图像分类)。 - 多项式核:低维数据,类别边界呈现多项式关系。 - Sigmoid 核:神经网络式问题。 |
Kernel PCA | RBF 核、多项式核、线性核 | - RBF 核:非线性降维,保留复杂的非线性模式(如图像处理、模式识别)。 - 多项式核:数据间呈现多项式关系的降维任务。 - 线性核:线性降维问题,数据结构简单。 |
NDA | RBF 核、多项式核、线性核 | - RBF 核:非线性分类任务,复杂类别关系(如手写体识别)。 - 多项式核:类别间多项式关系的分类问题。 - 线性核:线性可分的分类任务。 |
- 对于非线性数据,低维数据,高斯核/RBF 核 是最通用且常用的选择,能够有效处理复杂模式的分类、降维等任务。
- 如果低维数据,数据类别间存在明显的多项式模式或关系,可以选择多项式核。
- 对于线性数据或高维稀疏数据,线性核计算简单高效,通常是最佳选择。
定义
非线性降维是指数据分布在高维空间中的某个非线性流形上,无法通过简单的线性变换,将高维数据映射到低维空间,从而需要通过非线性变换将高维数据映射到低维空间。这些方法适用于数据结构复杂、无法通过线性变换良好表示的情况。
特点
- 非线性变换:使用非线性函数(如核函数、神经网络等)将数据映射到低维空间。
- 局部结构:能够捕捉数据的局部非线性结构,也可以兼顾全局结构。
- 灵活性:适用于具有复杂、非线性分布的数据,能够揭示数据的潜在低维流形结构。
- 计算复杂:计算复杂度较高,结果的可解释性较差。
常见方法
Kernel PCA(核主成分分析, Kernel Principal Component Analysis)
原理
Kernel PCA 是主成分分析(PCA)的非线性扩展,使用核函数将数据映射到高维特征空间,在高维空间中进行线性 PCA 操作,捕捉数据中的非线性结构,再将结果映射回原始空间。
步骤
NDA(Nonlinear Discriminant Analysis,非线性判别分析)
原理
NDA 是线性判别分析(LDA)的核函数扩展,适用于分类任务中的降维。通过核函数将数据非线性映射到高维特征空间中。在高维空间中执行类似于 LDA 的操作,找到能够最大化类别间差异的方向。显式地将结果映射回原始空间。
步骤
- 适合需要同时进行降维和分类的应用场景。
T-SNE(t-Distributed Stochastic Neighbor Embedding,t 分布随机邻域嵌入)
原理
T-SNE 是一种用于高维数据非线性降维和可视化的技术,特别适合处理高维数据中的局部结构。通过在高维和低维空间中分别计算点对的相似度,然后最小化两个分布之间的差异,使相似数据点在低维空间中靠近。
步骤
-
高维空间中的相似性计算:在高维空间中,通过高斯分布计算每对数据点之间的相似性,得到条件概率 P i j P_{ij} Pij 表示点 x i x_i xi 和 x j x_j xj 之间的相似性。
-
低维空间中的相似性计算:在低维空间中,使用 t 分布计算数据点之间的相似性,得到 Q i j Q_{ij} Qij,表示低维空间中的相似性。
-
最小化 KL 散度:通过最小化高维和低维空间中相似性概率分布之间的 KL 散度,确保在低维空间中保持高维数据的局部结构。
Autoencoder(自编码器)
原理
详细介绍参考:万字长文解读深度学习——AE、VAE
自编码器是一种基于神经网络的非线性降维方法,通过压缩和重构数据的方式实现降维。自编码器由两个部分组成:编码器和解码器。编码器将数据压缩到低维空间,而解码器则试图从低维表示中重构原始数据。通过最小化重构误差,自编码器能够学习到数据的低维表示。
结构
-
编码器:编码器部分是一个神经网络,输入数据经过编码器后被压缩到一个低维的隐空间(瓶颈层),这个隐空间表示就是数据的低维表示。
-
解码器:解码器是另一个神经网络,它从隐空间的低维表示中尝试重构出原始的高维数据。
-
训练:通过最小化输入数据与解码器输出数据之间的重构误差(如均方误差),自编码器可以学习到数据的低维表示。
对比总结
方法 | 原理 | 目标 | 优点 | 缺点 | 应用场景 |
---|---|---|---|---|---|
Kernel PCA | 将数据映射到高维空间,通过核函数进行PCA来捕捉非线性特征 | 核函数,非线性降维 | 处理非线性数据,灵活性强 | 结果难解释,计算复杂度高 | 图像处理、模式识别、特征提取 |
NDA | 核函数与线性判别分析结合,在高维空间中进行判别分析 | 核函数,分类任务中的非线性降维 | 适合非线性分类,结合核函数和判别分析的优点 | 依赖标签信息,计算复杂度高 | 人脸识别、文本分类、降维和分类结合任务 |
t-SNE | 通过最小化KL散度来保持高维空间中的局部相似性关系 | 数据可视化,非线性降维 | 局部结构保留好,适合复杂数据的可视化 | 全局结构丢失,计算复杂度高,结果不稳定 | 数据可视化,基因表达分析,图像和文本可视化 |
自编码器 | 神经网络通过压缩和解压数据进行自监督学习,学习数据的低维表示 | 非线性降维,数据重构 | 灵活性强,适合处理多种数据类型,能够学习复杂的非线性关系 | 需要大量数据训练,可能过拟合,结果解释性差 | 图像处理、去噪、异常检测,生成模型(VAE) |
- Kernel PCA 和 NDA 通过核函数扩展经典的线性降维和分类方法,能够处理非线性数据。
- t-SNE 是一种专注于保持局部结构的降维方法,主要用于数据的可视化。
- 自编码器 则通过神经网络学习数据的低维表示,能够处理复杂的非线性关系,适合各种类型的数据。
总结
- 线性降维方法:适用于数据可以通过线性变换表示的情况,计算简单、可解释性强,但无法处理复杂的非线性结构。
- 非线性降维方法:适用于数据结构复杂的情况,能够捕捉数据中的非线性关系,但计算复杂度高,结果难以解释。
选择合适的降维方法取决于数据的特点和应用场景。对于具有简单线性关系的数据,线性降维方法通常更有效;对于具有复杂非线性结构的数据,非线性降维方法能够更好地揭示数据的潜在结构。