降维(DimensionalityReduction)基础知识1

一、维度与数据空间

  数据空间的维度可能非常大。我们可以通过一些例子来理解高维数据的概念。

1、高维的数据

  下图展示了不同类型的高维数据:

  1. 三维散点图:图中展示了一个三维空间中的数据分布。可以看到,数据点在空间中形成了不同的簇,这有助于我们理解数据的结构和模式。
    在这里插入图片描述

  2. 人脸图像:这组图像展示了不同人脸的高维特征。每个图像都可以看作是一个高维向量,包含了像素值等信息。
    在这里插入图片描述

  3. 文档:文档也可以表示为高维向量,其中每个维度可能代表一个特定的词汇或特征。
    在这里插入图片描述

  4. 基因表达数据:这类数据通常包含成千上万的基因表达水平,基因每个可以看作是一个维度。
    在这里插入图片描述

  5. MEG(脑磁图)读数:这些读数反映了大脑不同区域的磁场活动,每个区域可以看作是一个维度。
    在这里插入图片描述

  这些例子展示了高维数据在不同领域的应用。高维数据的处理和分析是现代数据科学中的一个重要课题,它涉及到降维、聚类、分类等多种技术。

  在处理高维数据时,我们通常需要找到合适的方法来减少数据的维度,以便更好地理解和分析数据。这可以通过主成分分析(PCA)、t-SNE等降维技术来实现。通过这些技术,我们可以将高维数据投影到较低维度的空间中,同时尽可能保留数据的主要特征和结构。

  总之,高维数据的处理是一个复杂但充满挑战的领域,它需要我们不断探索和创新,以应对日益增长的数据量和复杂性。

二、降维的基本概念

  降维或嵌入是指将原始的高维数据映射到低维空间。本质上的想法是:高度冗余的数据通常是可以被压缩的,即高维复杂数据的本质维度可能比较小,或者和任务相关的维度较小。

  下图展示了降维的效果:
在这里插入图片描述

  • 左图:展示了原始的3D数据,可以看到数据点分布在一个三维空间中。
  • 右图:展示了降维后的本质维度为2D的数据,可以看到数据点被映射到了一个二维平面上,保留了原始数据的主要结构和特征。

  降维技术在数据科学中非常重要,它可以帮助我们减少数据的复杂性,提高计算效率,同时保留数据的主要信息。常见的降维方法包括主成分分析(PCA)、t-SNE、自编码器等。

  通过降维,我们可以将高维数据投影到较低维度的空间中,使得数据更易于可视化和分析。例如,我们可以将高维的人脸图像数据降维到二维空间,从而在二维平面上展示人脸的主要特征。

  总之,降维是处理高维数据的重要工具,它可以帮助我们更好地理解和利用数据。

三、基于重构的降维

1、主成分分析(PCA)

  主成分分析(PCA)是一种常用的降维技术,它通过将数据投影到一个新的坐标系中,来减少数据的维度,同时尽可能保留数据的方差信息。
在这里插入图片描述

(1)PCA的基本假设

  假设向量 ∥ w i ∥ = 1 \|w_i\| = 1 wi=1,且 w i T w j = 0 ( i ≠ j ) w_i^T w_j = 0 (i \neq j) wiTwj=0(i=j),这些向量构成了新的坐标系。坐标原点被设定为数据中心。

(2)PCA的两个关键函数

  在PCA中, W W W用于两个函数:

  1. 编码 z i = f ( x i ; W ) = W T x i z_i = f(x_i; W) = W^T x_i zi=f(xi;W)=WTxi,其中 z i , j = w j T x i z_{i,j} = w_j^T x_i zi,j=wjTxi。这一步将原始数据 x i x_i xi转换为新坐标系中的表示 z i z_i zi

  2. 解码 x ^ i = g ( z i ; W ) = W z i = ∑ j = 1 D ′ z i , j w j \hat{x}_i = g(z_i; W) = W z_i = \sum_{j=1}^{D'} z_{i,j} w_j x^i=g(zi;W)=Wzi=j=1Dzi,jwj。这一步将新坐标系中的表示 z i z_i zi转换回原始空间中的近似表示 x ^ i \hat{x}_i x^i

(3)PCA的目标

  PCA的目标是最小化重建误差 ∥ x i − x ^ i ∥ \|x_i - \hat{x}_i\| xix^i,同时最大化投影方差。数学上,这可以表示为:

min ⁡ W ∈ R D × D ′ ∑ i = 1 N ∥ x i − W z i ∥ 2 = max ⁡ W ∑ i = 1 N z i T z i = max ⁡ W ∑ i = 1 N tr ( W T X X T W ) \min_{W \in \mathbb{R}^{D \times D'}} \sum_{i=1}^{N} \|x_i - W z_i\|^2 = \max_W \sum_{i=1}^{N} z_i^T z_i = \max_W \sum_{i=1}^{N} \text{tr}(W^T X X^T W) WRD×Dmini=1NxiWzi2=Wmaxi=1NziTzi=Wmaxi=1Ntr(WTXXTW)

其中, X = ( x 1 , x 2 , . . . , x N ) X = (x_1, x_2, ..., x_N) X=(x1,x2,...,xN)表示原始数据集。

  通过这种方式,PCA找到了一组新的基向量 W W W,这些基向量不仅能够最大程度地保留原始数据的方差信息,还能有效地降低数据的维度,从而简化后续的数据分析和处理工作。

(4)PCA优化求解

  PCA(主成分分析)的目标是找到一个矩阵 W ∈ R D × D ′ W \in \mathbb{R}^{D \times D'} WRD×D,使得 max ⁡ W tr ( W T S W ) \max_W \text{tr}(W^T S W) maxWtr(WTSW),同时满足约束条件 W T W = I W^T W = I WTW=I。这里的 S S S是数据的协方差矩阵, I I I是单位矩阵。

1、求解步骤

  求解 W W W的步骤如下:

  1. 计算数据均值
    x ˉ = 1 N ∑ j = 1 N x j \bar{x} = \frac{1}{N} \sum_{j=1}^{N} x_j xˉ=N1j=1Nxj

  2. 数据中心化
    x i = x i − x ˉ x_i = x_i - \bar{x} xi=xixˉ
    其中, X = [ x 1 x 2 ⋯ x N ] X = [x_1 \quad x_2 \quad \cdots \quad x_N] X=[x1x2xN]

  3. 计算协方差矩阵
    S = X X T S = X X^T S=XXT

  4. S S S做特征分解
    找到 S S S D ′ D' D个最大特征值对应的特征向量。

  5. 选择 D ′ D' D个最大特征值对应的特征向量
    W = ( w 1 , w 2 , … , w D ′ ) W = (w_1, w_2, \ldots, w_{D'}) W=(w1,w2,,wD)

2、输出

  最终输出的 W W W矩阵包含了 D ′ D' D个最大特征值对应的特征向量,这些特征向量构成了新的坐标系,用于将原始数据投影到低维空间。

  通过这些步骤,PCA能够有效地降低数据的维度,同时保留数据的主要信息。这种方法在数据压缩、特征提取和可视化等领域有着广泛的应用。

(5)PCA优化求解(2)

  在PCA(主成分分析)中,我们的目标是将高维数据投影到低维空间,同时尽可能保留数据的变异性。以下是PCA优化求解的详细步骤:

1、输入
  • 数据集 X = { x 1 , x 2 , … , x N } X = \{x_1, x_2, \ldots, x_N\} X={x1,x2,,xN}
  • 低维空间的维数 D ′ D' D
2、算法过程
  1. 数据中心化
    x i = x i − 1 N ∑ j = 1 N x j x_i = x_i - \frac{1}{N} \sum_{j=1}^{N} x_j xi=xiN1j=1Nxj
    这一步确保每个数据点都减去数据的均值,使得数据中心位于原点。

  2. 奇异值分解(SVD)
    X = U D × D Σ D × N V N × N T X = U_{D \times D} \Sigma_{D \times N} V_{N \times N}^T X=UD×DΣD×NVN×NT
    其中, U U U V V V是正交矩阵, Σ \Sigma Σ是对角矩阵,包含了数据的奇异值。

  3. 选择 D ′ D' D个最大奇异值对应的左奇异向量
    这些向量构成了新的坐标系,用于将原始数据投影到低维空间。

3、输出
  • 矩阵 U = ( u 1 , u 2 , … , u D ′ ) U = (u_1, u_2, \ldots, u_{D'}) U=(u1,u2,,uD)
    这些向量是原始数据在低维空间中的表示。

  通过这些步骤,PCA能够有效地降低数据的维度,同时保留数据的主要信息。这种方法在数据压缩、特征提取和可视化等领域有着广泛的应用。PCA通过奇异值分解找到数据的主要方向,这些方向对应于数据中最大的变异性。

(6)超越线性:简单的解决方案

  在某些情况下,数据的分布可能不是线性的,这意味着传统的线性方法如PCA可能无法有效地捕捉数据的结构。为了解决这个问题,我们可以考虑使用非线性方法。

1、图示说明

在这里插入图片描述

  • 左图(PCA有效):展示了PCA在数据分布接近线性时的有效性。红色直线表示主成分,它捕捉了数据的主要变异性。
  • 中图(PCA无效):展示了当数据分布非线性时,PCA可能无法有效捕捉数据结构的情况。
  • 右图(预期的解):展示了通过非线性映射后,数据分布变得更加线性,从而可以通过线性方法进行有效分析。
2、非线性映射与降维

  对 x x x进行非线性映射,然后再降维: S = { ϕ ( x ) = W z } S = \{\phi(x) = Wz\} S={ϕ(x)=Wz}

  • ϕ ( x ) \phi(x) ϕ(x)空间的线性降维    ⟷ \longleftrightarrow    x x x空间的非线性降维
3、如何选择 ϕ ( x ) \phi(x) ϕ(x)

  选择合适的非线性映射函数 ϕ ( x ) \phi(x) ϕ(x)是一个关键问题,需要考虑以下几点:

  1. 启发式的解决方案(可能性太多):有许多可能的非线性映射函数可供选择,需要根据具体问题进行选择。
  2. ϕ ( x ) \phi(x) ϕ(x)维度高,计算开销大:非线性映射可能会增加数据的维度,从而增加计算的复杂性和资源需求。

  通过非线性映射,我们可以将原本非线性分布的数据转换为更接近线性分布的形式,从而使得线性方法如PCA能够有效地应用于数据降维和特征提取。

2、核化PCA

(1)表示理论

  在PCA中,投影向量/主成分方向 w d w_d wd可以表示为 x i x_i xi的线性组合。具体来说,PCA可以转换成特征值问题:

X X T w d = λ w d XX^T w_d = \lambda w_d XXTwd=λwd

  进一步展开,可以得到:

w d = 1 λ X X T w d = 1 λ ∑ i = 1 N x i x i T w d = ∑ i = 1 N 1 λ x i T w d ⋅ α d , i x i w_d = \frac{1}{\lambda} XX^T w_d = \frac{1}{\lambda} \sum_{i=1}^{N} x_i x_i^T w_d = \sum_{i=1}^{N} \frac{1}{\lambda} x_i^T w_d \cdot \alpha_{d,i} x_i wd=λ1XXTwd=λ1i=1NxixiTwd=i=1Nλ1xiTwdαd,ixi

  这与支持向量机(SVMs)中的权重向量 w w w的计算方式相似:

w = ∑ i = 1 N α i y i x i w = \sum_{i=1}^{N} \alpha_i y_i x_i w=i=1Nαiyixi

(2)核化PCA推导

  PCA的特征值问题可以表示为:

X X T w d = λ w d ⇒ w d = X α d XX^T w_d = \lambda w_d \Rightarrow w_d = X \alpha_d XXTwd=λwdwd=Xαd

  将 w d = X α d w_d = X \alpha_d wd=Xαd代入 X X T w d = λ w d XX^T w_d = \lambda w_d XXTwd=λwd,得到:

X X T X α d = λ d X α d XX^T X \alpha_d = \lambda_d X \alpha_d XXTXαd=λdXαd

  两边同乘以 X T X^T XT,得到:

( X T X ) ( X T X ) α d = λ d ( X T X ) α d (X^T X)(X^T X) \alpha_d = \lambda_d (X^T X) \alpha_d (XTX)(XTX)αd=λd(XTX)αd

  两边同乘以 ( X T X ) − 1 (X^T X)^{-1} (XTX)1,得到:

( X T X ) α d = λ d α d (X^T X) \alpha_d = \lambda_d \alpha_d (XTX)αd=λdαd

  将内积矩阵 ( X T X ) (X^T X) (XTX)用核矩阵 K K K表示,得到核PCA的目标:

K α d = λ d α d K \alpha_d = \lambda_d \alpha_d Kαd=λdαd

  其中核矩阵元素 k i j = x i T x j = k ( x i , x j ) k_{ij} = x_i^T x_j = k(x_i, x_j) kij=xiTxj=k(xi,xj),即对核矩阵 K K K进行特征值分解, α d \alpha_d αd为特征值 λ d \lambda_d λd对应的特征向量。

  将 α d \alpha_d αd代入 w d = X α d w_d = X \alpha_d wd=Xαd,可得到第 d d d个投影方向 w d w_d wd d = 1 , 2 , … , D ′ d = 1, 2, \ldots, D' d=1,2,,D

(3)投影矩阵和低维表示

  得到投影向量 w d = X α d w_d = X \alpha_d wd=Xαd后,将 D ′ D' D w d w_d wd组合,得到投影矩阵:

W = X A W = XA W=XA

  其中,

W = ( x 1 , 1 x 2 , 2 ⋯ x N , 1 x 1 , 2 x 2 , 2 ⋯ x N , 2 ⋮ ⋮ ⋱ ⋮ x 1 , D x 2 , D ⋯ x N , D ) , A = ( α 1 , 1 α 1 , 2 ⋯ α 1 , D ′ α 2 , 1 α 2 , 2 ⋯ α 2 , D ′ ⋮ ⋮ ⋱ ⋮ α N , 1 α N , 2 ⋯ α N , D ′ ) W = \begin{pmatrix} x_{1,1} & x_{2,2} & \cdots & x_{N,1} \\ x_{1,2} & x_{2,2} & \cdots & x_{N,2} \\ \vdots & \vdots & \ddots & \vdots \\ x_{1,D} & x_{2,D} & \cdots & x_{N,D} \end{pmatrix}, \quad A = \begin{pmatrix} \alpha_{1,1} & \alpha_{1,2} & \cdots & \alpha_{1,D'} \\ \alpha_{2,1} & \alpha_{2,2} & \cdots & \alpha_{2,D'} \\ \vdots & \vdots & \ddots & \vdots \\ \alpha_{N,1} & \alpha_{N,2} & \cdots & \alpha_{N,D'} \end{pmatrix} W= x1,1x1,2x1,Dx2,2x2,2x2,DxN,1xN,2xN,D ,A= α1,1α2,1αN,1α1,2α2,2αN,2α1,Dα2,DαN,D

  对任意样本 x x x,可得到其低维表示 z z z为:

z = W T x = ( X A ) T x = A T X T x = A T ( k ( x 1 , x ) k ( x 2 , x ) ⋮ k ( x N , x ) ) = ( ∑ i = 1 N α i , 1 k ( x i , x ) ∑ i = 1 N α i , 2 k ( x i , x ) ⋮ ∑ i = 1 N α i , D ′ k ( x i , x ) ) , k ( x i , x j ) = x i T x j z = W^T x = (XA)^T x = A^T X^T x = A^T \begin{pmatrix} k(x_1, x) \\ k(x_2, x) \\ \vdots \\ k(x_N, x) \end{pmatrix} = \begin{pmatrix} \sum_{i=1}^{N} \alpha_{i,1} k(x_i, x) \\ \sum_{i=1}^{N} \alpha_{i,2} k(x_i, x) \\ \vdots \\ \sum_{i=1}^{N} \alpha_{i,D'} k(x_i, x) \end{pmatrix}, \quad k(x_i, x_j) = x_i^T x_j z=WTx=(XA)Tx=ATXTx=AT k(x1,x)k(x2,x)k(xN,x) = i=1Nαi,1k(xi,x)i=1Nαi,2k(xi,x)i=1Nαi,Dk(xi,x) ,k(xi,xj)=xiTxj

(4)KPCA 算法

  KPCA(核主成分分析)是一种非线性降维技术,它通过将数据映射到高维空间来实现线性不可分数据的线性化。以下是KPCA算法的步骤:

  1. 计算核矩阵 K K K
    k i j = k ( x i , x j ) k_{ij} = k(x_i, x_j) kij=k(xi,xj)
    其中, k ( x i , x j ) k(x_i, x_j) k(xi,xj)是任意核函数,用于计算数据点 x i x_i xi x j x_j xj之间的相似度。

  2. 中心化核矩阵:对核矩阵 K K K进行中心化处理,得到 K ˉ \bar{K} Kˉ

  3. 特征分解:对中心化的核矩阵 K ˉ \bar{K} Kˉ进行特征分解。

  4. 选择特征向量:选择 D ′ D' D个最大的特征值对应的特征向量 α 1 , . . . , α D ′ \alpha_1, ..., \alpha_{D'} α1,...,αD α \alpha α N N N维向量,通常对 α \alpha α进行归一化,模长为1)。

  5. 低维表示:对于新样本 x x x,可以得到其低维表示 z z z为:
    z = ( ∑ i = 1 N α i , 1 k ( x i , x ) ∑ i = 1 N α i , 2 k ( x i , x ) ⋮ ∑ i = 1 N α i , D ′ k ( x i , x ) ) z = \begin{pmatrix} \sum_{i=1}^{N} \alpha_{i,1} k(x_i, x) \\ \sum_{i=1}^{N} \alpha_{i,2} k(x_i, x) \\ \vdots \\ \sum_{i=1}^{N} \alpha_{i,D'} k(x_i, x) \end{pmatrix} z= i=1Nαi,1k(xi,x)i=1Nαi,2k(xi,x)i=1Nαi,Dk(xi,x)
    其中, k ( x i , x j ) = x i T x j k(x_i, x_j) = x_i^T x_j k(xi,xj)=xiTxj表示样本间的内积。

(5)示例

  输入1000幅28*28图像,分别采用KPCA、PCA和ICA降维,得到的基向量/投影方向如下:
在这里插入图片描述

  • 训练图像:展示了原始的28*28图像。
  • KPCA:先全局变化后局部变化。
  • PCA:全局变化。
  • ICA:局部变化。

  这些图像展示了不同降维方法在处理图像数据时的效果差异。KPCA通过非线性映射能够捕捉到数据的非线性结构,而PCA和ICA则主要关注数据的全局和局部变化。

图片来源:Kernel PCA vs PCA vs ICA in TensorFlow-Sklearn

3、自编码器(神经网络部分讲解)

四、基于全局结构保持的降维

1、多维缩放(MDS)

(1)问题形式化

在多维缩放(MDS)中,我们面临的问题是:

  - 给定空间中任意两个点的距离。
  - 距离保持:我们希望将这些点嵌入到一个低维空间中,使得新的空间中点对之间的距离和原始空间中的距离尽可能接近。显然,投影到低维空间的形式不是唯一的,原因是低维空间的点经过平移、旋转和镜像后,点对之间的距离不变。

示例:绘制地图(城市嵌入)

在平面坐标上根据标出这10个城市之间的相对位置,使之尽可能接近表中的距离数据。
在这里插入图片描述
在这里插入图片描述

(2)MDS的形式化

  - 令矩阵 Z ∈ R D ′ × N Z \in \mathbb{R}^{D' \times N} ZRD×N 表示所有样本点在 D ′ D' D 维(低维)空间中的表示。
  - 基本思想: D ′ D' D 空间的欧式距离等于原始空间的欧式距离,例如
∥ z i − z j ∥ = d i , j \|z_i - z_j\| = d_{i,j} zizj=di,j
  - 如何计算 z i z_i zi

高维空间点两两之间的距离矩阵尽可能地接近低维空间的距离矩阵。问题看起来也有点像矩阵近似问题?如果是矩阵近似问题,就可以用我们的老朋友:特征值分解

(3) B B B 的推导

1、假设与推导

  不失一般性,我们假设低维空间中的样本是中心化的,即 ∑ i = 1 N z i = 0 \sum_{i=1}^{N} z_i = 0 i=1Nzi=0

   d i , j = ∥ z i − z j ∥ d_{i,j} = \|z_i - z_j\| di,j=zizj,所以: d i , j 2 = ∥ z i − z j ∥ 2 = ∥ z i ∥ 2 + ∥ z j ∥ 2 − 2 z i T z j d_{i,j}^2 = \|z_i - z_j\|^2 = \|z_i\|^2 + \|z_j\|^2 - 2z_i^Tz_j di,j2=zizj2=zi2+zj22ziTzj

  看起来和 z i T z j z_i^Tz_j ziTzj 相关,所以考虑内积矩阵 B = Z T Z B = Z^TZ B=ZTZ,即 b i j = z i T z j b_{ij} = z_i^Tz_j bij=ziTzj,用已知的 d i , j d_{i,j} di,j 表示 B B B,再将 B B B 进行分解,得到 Z Z Z

2、求和与简化

  对上述等式两边求和(每列距离和):
∑ i = 1 N d i , j 2 = ∑ i = 1 N ( ∥ z i ∥ 2 + ∥ z j ∥ 2 − 2 z i T z j ) \sum_{i=1}^{N} d_{i,j}^2 = \sum_{i=1}^{N} \left( \|z_i\|^2 + \|z_j\|^2 - 2z_i^Tz_j \right) i=1Ndi,j2=i=1N(zi2+zj22ziTzj)
= ∑ i = 1 N ∥ z i ∥ 2 + N ∥ z j ∥ 2 − 2 z j ∑ i = 1 N z i (因为  ∑ i = 1 N z i = 0 ) = \sum_{i=1}^{N} \|z_i\|^2 + N\|z_j\|^2 - 2z_j \sum_{i=1}^{N} z_i \quad \text{(因为 $\sum_{i=1}^{N} z_i = 0$)} =i=1Nzi2+Nzj22zji=1Nzi(因为 i=1Nzi=0
= ∑ i = 1 N ∥ z i ∥ 2 + N ∥ z j ∥ 2 = \sum_{i=1}^{N} \|z_i\|^2 + N\|z_j\|^2 =i=1Nzi2+Nzj2

3、所有点对的距离和

  类似的,得到:
∑ i = 1 N d i , j 2 = ∑ i = 1 N ∥ z i ∥ 2 + N ∥ z j ∥ 2 (每行的距离和) \sum_{i=1}^{N} d_{i,j}^2 = \sum_{i=1}^{N} \|z_i\|^2 + N\|z_j\|^2 \quad \text{(每行的距离和)} i=1Ndi,j2=i=1Nzi2+Nzj2(每行的距离和)
∑ i = 1 N ∑ j = 1 N d i , j 2 = ∑ i = 1 N ( ∑ j = 1 N ∥ z j ∥ 2 + N ∥ z i ∥ 2 ) (所有点对的距离和) \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 = \sum_{i=1}^{N} \left( \sum_{j=1}^{N} \|z_j\|^2 + N\|z_i\|^2 \right) \quad \text{(所有点对的距离和)} i=1Nj=1Ndi,j2=i=1N(j=1Nzj2+Nzi2)(所有点对的距离和)
= N ∑ j = 1 N ∥ z j ∥ 2 + N ∑ i = 1 N ∥ z i ∥ 2 = N \sum_{j=1}^{N} \|z_j\|^2 + N \sum_{i=1}^{N} \|z_i\|^2 =Nj=1Nzj2+Ni=1Nzi2
= 2 N ∑ i = 1 N ∥ z i ∥ 2 = 2N \sum_{i=1}^{N} \|z_i\|^2 =2Ni=1Nzi2

4、平均距离

  (每列的平均距离)
1 N ∑ i = 1 N d i , j 2 = 1 N ∑ i = 1 N ∥ z i ∥ 2 + ∥ z j ∥ 2 \frac{1}{N} \sum_{i=1}^{N} d_{i,j}^2 = \frac{1}{N} \sum_{i=1}^{N} \|z_i\|^2 + \|z_j\|^2 N1i=1Ndi,j2=N1i=1Nzi2+zj2
(每行的平均距离)
1 N ∑ j = 1 N d i , j 2 = 1 N ∑ j = 1 N ∥ z j ∥ 2 + ∥ z i ∥ 2 \frac{1}{N} \sum_{j=1}^{N} d_{i,j}^2 = \frac{1}{N} \sum_{j=1}^{N} \|z_j\|^2 + \|z_i\|^2 N1j=1Ndi,j2=N1j=1Nzj2+zi2
(总的平均距离)
1 N 2 ∑ i = 1 N ∑ j = 1 N d i , j 2 = 2 N ∑ i = 1 N ∥ z i ∥ 2 \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 = \frac{2}{N} \sum_{i=1}^{N} \|z_i\|^2 N21i=1Nj=1Ndi,j2=N2i=1Nzi2

5、进一步推导

   1 N ∑ i = 1 N d i , j 2 = 1 N ∑ i = 1 N ∥ z i ∥ 2 + ∥ z j ∥ 2 \frac{1}{N} \sum_{i=1}^{N} d_{i,j}^2 = \frac{1}{N} \sum_{i=1}^{N} \|z_i\|^2 + \|z_j\|^2 N1i=1Ndi,j2=N1i=1Nzi2+zj2
1 N ∑ j = 1 N d i , j 2 = 1 N ∑ j = 1 N ∥ z j ∥ 2 + ∥ z i ∥ 2 \frac{1}{N} \sum_{j=1}^{N} d_{i,j}^2 = \frac{1}{N} \sum_{j=1}^{N} \|z_j\|^2 + \|z_i\|^2 N1j=1Ndi,j2=N1j=1Nzj2+zi2
1 N 2 ∑ i = 1 N ∑ j = 1 N d i , j 2 = 2 N ∑ i = 1 N ∥ z i ∥ 2 \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 = \frac{2}{N} \sum_{i=1}^{N} \|z_i\|^2 N21i=1Nj=1Ndi,j2=N2i=1Nzi2

   ∥ z j ∥ 2 = 1 N ∑ i = 1 N ( d i , j 2 − ∥ z i ∥ 2 ) \|z_j\|^2 = \frac{1}{N} \sum_{i=1}^{N} (d_{i,j}^2 - \|z_i\|^2) zj2=N1i=1N(di,j2zi2)
∥ z i ∥ 2 = 1 N ∑ j = 1 N ( d i , j 2 − ∥ z j ∥ 2 ) \|z_i\|^2 = \frac{1}{N} \sum_{j=1}^{N} (d_{i,j}^2 - \|z_j\|^2) zi2=N1j=1N(di,j2zj2)
2 ∑ i = 1 N ∥ z i ∥ 2 = 1 N 2 ∑ i = 1 N ∑ j = 1 N d i , j 2 2 \sum_{i=1}^{N} \|z_i\|^2 = \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 2i=1Nzi2=N21i=1Nj=1Ndi,j2

6、用 D D D 表示 B B B

   d i , j 2 = ∥ z i − z j ∥ 2 = ∥ z i ∥ 2 + ∥ z j ∥ 2 − 2 z i T z j = b i , i + b j , j − 2 b i , j d_{i,j}^2 = \|z_i - z_j\|^2 = \|z_i\|^2 + \|z_j\|^2 - 2z_i^Tz_j = b_{i,i} + b_{j,j} - 2b_{i,j} di,j2=zizj2=zi2+zj22ziTzj=bi,i+bj,j2bi,j

  用 D D D 表示 B B B
b i , j = − 1 2 ( d i , j 2 − b i , i − b j , j ) b_{i,j} = -\frac{1}{2} (d_{i,j}^2 - b_{i,i} - b_{j,j}) bi,j=21(di,j2bi,ibj,j)
= − 1 2 ( d i , j 2 − 1 N ∑ j = 1 N d i , j 2 − 1 N ∑ i = 1 N d i , j 2 + 1 N 2 ∑ i = 1 N ∑ j = 1 N d i , j 2 ) = -\frac{1}{2} \left( d_{i,j}^2 - \frac{1}{N} \sum_{j=1}^{N} d_{i,j}^2 - \frac{1}{N} \sum_{i=1}^{N} d_{i,j}^2 + \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 \right) =21(di,j2N1j=1Ndi,j2N1i=1Ndi,j2+N21i=1Nj=1Ndi,j2)
= − 1 2 ( d i , j 2 − 1 N ∑ j = 1 N d i , j 2 − 1 N ∑ i = 1 N d i , j 2 + 2 N ∑ i = 1 N ∥ z i ∥ 2 ) = -\frac{1}{2} \left( d_{i,j}^2 - \frac{1}{N} \sum_{j=1}^{N} d_{i,j}^2 - \frac{1}{N} \sum_{i=1}^{N} d_{i,j}^2 + \frac{2}{N} \sum_{i=1}^{N} \|z_i\|^2 \right) =21(di,j2N1j=1Ndi,j2N1i=1Ndi,j2+N2i=1Nzi2)
= 1 2 ( d i , j 2 − 1 N ∑ j = 1 N d i , j 2 − 1 N ∑ i = 1 N d i , j 2 + 1 N 2 ∑ i = 1 N ∑ j = 1 N d i , j 2 ) = \frac{1}{2} \left( d_{i,j}^2 - \frac{1}{N} \sum_{j=1}^{N} d_{i,j}^2 - \frac{1}{N} \sum_{i=1}^{N} d_{i,j}^2 + \frac{1}{N^2} \sum_{i=1}^{N} \sum_{j=1}^{N} d_{i,j}^2 \right) =21(di,j2N1j=1Ndi,j2N1i=1Ndi,j2+N21i=1Nj=1Ndi,j2)

7、矩阵表示

  用矩阵表示: B = − 1 2 J D J B = -\frac{1}{2} JDJ B=21JDJ,其中 J = I N − 1 N 1 1 T J = I_N - \frac{1}{N} 11^T J=INN111T 为中心化矩阵, 1 = ( 1 , 1 , … , 1 ) T 1 = (1, 1, \ldots, 1)^T 1=(1,1,,1)T

   D J DJ DJ 为从 D D D 中的每个元素里减去列均值, J D J JDJ JDJ 的作用就是在此基础上再减去行均值,因此中心化矩阵的作用就是把元素的中心平移到坐标原点。

  中心化过程相当于平移,并不会改变低维度点之间的距离。

8、补充:中心化矩阵
(1)中心化矩阵的定义

  对于矩阵 A A A,我们可以通过以下方式进行中心化处理:

1 N A 1 1 T = 1 N [ a 1 , 1 a 1 , 2 ⋯ a 1 , N a 2 , 1 a 2 , 2 ⋯ a 2 , N ⋮ ⋮ ⋱ ⋮ a N , 1 a N , 2 ⋯ a N , N ] [ 1 1 ⋯ 1 ] = 1 N [ ∑ i = 1 N a 1 , i ∑ i = 1 N a 1 , i ⋯ ∑ i = 1 N a 1 , i ∑ i = 1 N a 2 , i ∑ i = 1 N a 2 , i ⋯ ∑ i = 1 N a 2 , i ⋮ ⋮ ⋱ ⋮ ∑ i = 1 N a N , i ∑ i = 1 N a N , i ⋯ ∑ i = 1 N a N , i ] \frac{1}{N} A 11^T = \frac{1}{N} \begin{bmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,N} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,N} \\ \vdots & \vdots & \ddots & \vdots \\ a_{N,1} & a_{N,2} & \cdots & a_{N,N} \end{bmatrix} \begin{bmatrix} 1 & 1 & \cdots & 1 \end{bmatrix} = \frac{1}{N} \begin{bmatrix} \sum_{i=1}^{N} a_{1,i} & \sum_{i=1}^{N} a_{1,i} & \cdots & \sum_{i=1}^{N} a_{1,i} \\ \sum_{i=1}^{N} a_{2,i} & \sum_{i=1}^{N} a_{2,i} & \cdots & \sum_{i=1}^{N} a_{2,i} \\ \vdots & \vdots & \ddots & \vdots \\ \sum_{i=1}^{N} a_{N,i} & \sum_{i=1}^{N} a_{N,i} & \cdots & \sum_{i=1}^{N} a_{N,i} \end{bmatrix} N1A11T=N1 a1,1a2,1aN,1a1,2a2,2aN,2a1,Na2,NaN,N [111]=N1 i=1Na1,ii=1Na2,ii=1NaN,ii=1Na1,ii=1Na2,ii=1NaN,ii=1Na1,ii=1Na2,ii=1NaN,i

  第 i i i 行的每个元素都是 A A A 中第 i i i 行的均值。

(2)列均值的处理

  类似的, 1 N 1 1 T A \frac{1}{N} 11^T A N111TA 的第 j j j 列的每个元素都是 A A A 中第 j j j 列的均值。

(3)中心化矩阵的定义

  因此定义中心化矩阵: J = I N − 1 N 1 1 T J = I_N - \frac{1}{N} 11^T J=INN111T

(4)中心化矩阵的作用

   D J DJ DJ 为从 D D D 中的每个元素里减去列均值, J D J JDJ JDJ 的作用就是在此基础上再减去行均值,因此中心化矩阵的作用就是把元素分布的中心平移到坐标原点。

  中心化过程相当于平移,并不会改变低维度点之间的距离。

(4)MDS(多维缩放)应用实例

1、MDS 特征值分解

  对 B = Z T Z B = Z^T Z B=ZTZ 做特征值分解:
B = V Λ V T B = V \Lambda V^T B=VΛVT
其中 Λ = diag ( λ 1 , λ 2 , … , λ D ) \Lambda = \text{diag}(\lambda_1, \lambda_2, \ldots, \lambda_D) Λ=diag(λ1,λ2,,λD) λ 1 > λ 2 > ⋯ > λ D > 0 \lambda_1 > \lambda_2 > \cdots > \lambda_D > 0 λ1>λ2>>λD>0 V V V 是对应的特征向量组成的矩阵,则:
Z = Λ 1 / 2 V T ∈ R D × N Z = \Lambda^{1/2} V^T \in \mathbb{R}^{D \times N} Z=Λ1/2VTRD×N
  实际上,我们使用 D ′ ≪ D D' \ll D DD 特征值矩阵 Λ ~ = diag ( λ 1 , λ 2 , … , λ D ′ ) \tilde{\Lambda} = \text{diag}(\lambda_1, \lambda_2, \ldots, \lambda_{D'}) Λ~=diag(λ1,λ2,,λD)
Z = Λ ~ 1 / 2 V ~ T ∈ R D ′ × N Z = \tilde{\Lambda}^{1/2} \tilde{V}^T \in \mathbb{R}^{D' \times N} Z=Λ~1/2V~TRD×N

2、例子:MDS

  假设我们有5种水果:苹果、香蕉、橙子、葡萄和菠萝。我们对这些水果进行了甜度(Sweetness)、酸度(Sourness)和多汁程度(Juiciness)的评分。评分数据如下:

水果甜度酸度多汁程度
苹果645
香蕉813
橙子576
葡萄734
菠萝468

计算距离矩阵 d i j d_{ij} dij

  根据水果的评分数据,我们计算出距离矩阵 d i j d_{ij} dij,表示每种水果之间的距离:

苹果香蕉橙子葡萄菠萝
苹果04.693.742.453.32
香蕉4.6906.563.326.56
橙子3.746.5605.292.45
葡萄2.453.325.2905.29
菠萝3.326.562.455.290

  通过计算距离矩阵 d i j d_{ij} dij,我们可以更直观地了解不同水果之间的相似性。距离越小,表示两种水果在甜度、酸度和多汁程度上的评分越接近。

  1. 计算中心化矩阵
    J = I N − 1 N 1 1 T = ( 0.8 − 0.2 − 0.2 − 0.2 − 0.2 0.8 − 0.2 − 0.2 − 0.2 − 0.2 0.8 − 0.2 − 0.2 − 0.2 − 0.2 0.8 ) J = I_N - \frac{1}{N} 11^T = \begin{pmatrix} 0.8 & -0.2 & -0.2 & -0.2 \\ -0.2 & 0.8 & -0.2 & -0.2 \\ -0.2 & -0.2 & 0.8 & -0.2 \\ -0.2 & -0.2 & -0.2 & 0.8 \end{pmatrix} J=INN111T= 0.80.20.20.20.20.80.20.20.20.20.80.20.20.20.20.8

  2. 计算距离平方矩阵 d i j 2 d_{ij}^2 dij2
    D = ( 0.00 21.98 13.99 6.00 11.02 21.98 0.00 43.03 11.02 43.03 13.99 43.03 0.00 28.00 6.00 6.00 11.02 28.00 0.00 28.00 11.02 43.03 6.00 28.00 0.00 ) D = \begin{pmatrix} 0.00 & 21.98 & 13.99 & 6.00 & 11.02 \\ 21.98 & 0.00 & 43.03 & 11.02 & 43.03 \\ 13.99 & 43.03 & 0.00 & 28.00 & 6.00 \\ 6.00 & 11.02 & 28.00 & 0.00 & 28.00 \\ 11.02 & 43.03 & 6.00 & 28.00 & 0.00 \end{pmatrix} D= 0.0021.9813.996.0011.0221.980.0043.0311.0243.0313.9943.030.0028.006.006.0011.0228.000.0028.0011.0243.036.0028.000.00

  3. 用中心化矩阵 J J J 和距离平方矩阵 D D D 计算内积矩阵 B B B
    B = − 1 2 J D J = ( 2.12 − 2.27 − 1.07 1.12 0.11 − 2.27 15.33 − 8.99 5.21 − 9.29 − 1.07 − 8.99 9.72 − 6.07 6.42 1.12 5.21 − 6.07 6.12 − 6.37 0.11 − 9.29 6.42 − 6.37 9.13 ) B = -\frac{1}{2} JDJ = \begin{pmatrix} 2.12 & -2.27 & -1.07 & 1.12 & 0.11 \\ -2.27 & 15.33 & -8.99 & 5.21 & -9.29 \\ -1.07 & -8.99 & 9.72 & -6.07 & 6.42 \\ 1.12 & 5.21 & -6.07 & 6.12 & -6.37 \\ 0.11 & -9.29 & 6.42 & -6.37 & 9.13 \end{pmatrix} B=21JDJ= 2.122.271.071.120.112.2715.338.995.219.291.078.999.726.076.421.125.216.076.126.370.119.296.426.379.13

  4. 计算 B B B 的特征值和特征向量
    λ 1 ≈ 32.32 , v 1 ≈ ( − 0.02 , 0.63 , − 0.48 , 0.36 , − 0.49 ) \lambda_1 \approx 32.32, \quad v_1 \approx (-0.02, 0.63, -0.48, 0.36, -0.49) λ132.32,v1(0.02,0.63,0.48,0.36,0.49)
    λ 2 ≈ 6.39 , v 2 ≈ ( − 0.53 , 0.59 , 0.33 , − 0.10 , 0.10 ) \lambda_2 \approx 6.39, \quad v_2 \approx (-0.53, 0.59, 0.33, -0.10, 0.10) λ26.39,v2(0.53,0.59,0.33,0.10,0.10)

  5. 计算降维后的新坐标
    V ~ = ( − 0.02 − 0.53 0.63 0.59 − 0.48 0.33 0.36 − 0.50 − 0.49 0.10 ) \tilde{V} = \begin{pmatrix} -0.02 & -0.53 \\ 0.63 & 0.59 \\ -0.48 & 0.33 \\ 0.36 & -0.50 \\ -0.49 & 0.10 \end{pmatrix} V~= 0.020.630.480.360.490.530.590.330.500.10
    Λ ~ 1 / 2 = ( 32.32 0 0 6.39 ) \tilde{\Lambda}^{1/2} = \begin{pmatrix} \sqrt{32.32} & 0 \\ 0 & \sqrt{6.39} \end{pmatrix} Λ~1/2=(32.32 006.39 )
    降维后的新坐标:
    Z = Λ ~ 1 / 2 V ~ T = ( − 0.11 − 1.33 3.60 1.50 − 2.76 0.84 2.02 − 1.26 − 2.76 0.25 ) Z = \tilde{\Lambda}^{1/2} \tilde{V}^T = \begin{pmatrix} -0.11 & -1.33 \\ 3.60 & 1.50 \\ -2.76 & 0.84 \\ 2.02 & -1.26 \\ -2.76 & 0.25 \end{pmatrix} Z=Λ~1/2V~T= 0.113.602.762.022.761.331.500.841.260.25
    在这里插入图片描述
    在这里插入图片描述

3、如何在不丢失重要信息的情况下最大限度地降低维度?

  肘部法:计算不同维度( n _ c o m p o n e n t s n\_components n_components)对应的拟合优度统计量(stress)
stress : ∑ i < j d i j − d ^ i j \text{stress} : \sum_{i<j} d_{ij} - \hat{d}_{ij} stress:i<jdijd^ij
在这里插入图片描述
在这里插入图片描述

4、实例:MNIST

在这里插入图片描述

  PCA 保持大部分全局结构
在这里插入图片描述

  MDS 虽然目标函数看起来很合理但没有得到有意义的结果
在这里插入图片描述

  维数灾难:高维空间中,最短距离也很远
在这里插入图片描述

2、Isomap

(1)流形(Manifold)学习

  在高维空间中,欧氏距离不能准确地反映数据内在的相似性。如图所示,数据在高维空间中可能呈现出复杂的几何结构,如线性结构、S形结构和瑞士卷结构。这些结构在欧氏空间中可能被扭曲或拉伸,导致相似的数据点之间的距离被错误地表示。
在这里插入图片描述

  流形是指局部具有欧氏距离性质的拓扑空间。通过流形学习,我们可以更好地理解和表示高维数据的内在结构。

(2)测地线距离(Geodesic Distance)

  在高维空间中如何度量距离?如图所示,直接使用欧氏距离可能无法准确反映数据点之间的真实距离。因此,我们应该使用测地距离,而不是直接使用欧氏距离。
在这里插入图片描述

  测地距离的定义如下:

  • 对于邻近的点:输入空间中的欧氏距离提供一个测地线距离的近似。
  • 对于较远的点:测地距离能够通过一系列邻域点之间的欧氏距离的累加近似。

(3)IsoMAP算法

  IsoMAP是一种非线性降维方法,基于度量多维尺度分析(MDS),试图保留数据内在的由测地距离蕴含的几何结构。IsoMAP算法的三个步骤如下:

  1. 构建邻接图
  2. 计算最短路径(测地距离)
  3. 构建低维嵌入:保持点对之间的测地距离(采用MDS)

通过这些步骤,IsoMAP能够将高维数据映射到低维空间中,同时尽可能地保留数据的内在几何结构。

(4)构建邻接图

  所有数据点构成相似图:带权无向图 G ( V , E ) G(\mathcal{V}, \mathcal{E}) G(V,E)

  • 结点集合 V = { v 1 , v 2 , . . . , v N } \mathcal{V} = \{v_1, v_2, ..., v_N\} V={v1,v2,...,vN} N N N 表示节点数目, v i v_i vi 表示数据点 x i x_i xi
  • 结点之间可以用边连接:边的集合 E = { e i j , i , j = 1 , . . . , N } \mathcal{E} = \{e_{ij}, i, j = 1, ..., N\} E={eij,i,j=1,...,N}
  • e i j e_{ij} eij 表示结点 v i v_i vi v j v_j vj 之间边,其权重 w i j w_{ij} wij:结点 v i v_i vi v j v_j vj 的相似性/距离
    在这里插入图片描述

  全连接图对大多数场合来说不现实(图太大),所以一般建立局部连接图:如果 x i x_i xi x j x_j xj 距离 d i j d_{ij} dij 较近,则结点 v i v_i vi v j v_j vj 连一条边。

  边创建的两个准则:

  • ε \varepsilon ε 邻域( ε \varepsilon ε-neighborhood):如果 d i j < ε ( ε ∈ R + ) d_{ij} < \varepsilon (\varepsilon \in \mathbb{R}^+) dij<ε(εR+),结点 v i v_i vi v j v_j vj 之间连一条边;
  • K K K 近邻:如果 x i x_i xi x j x_j xj K K K 个最近邻之一且/或 x j x_j xj x i x_i xi K K K 个最近邻之一,则结点 v i v_i vi v j v_j vj 之间连一条边。
    在这里插入图片描述

(5)计算最短路径

  数据集 X X X 中任意两个点的距离为 d i , j d_{i,j} di,j
  计算最短路径:

  • 如果 i i i j j j 相连接,初始化 d G ( i , j ) = d i j d_G(i,j) = d_{ij} dG(i,j)=dij;否则 d G ( i , j ) = ∞ d_G(i,j) = \infty dG(i,j)=
  • 对于每一个 k = 1 , 2 , . . . , N k = 1, 2, ..., N k=1,2,...,N,替换所有的 d G ( i , j ) d_G(i, j) dG(i,j) min ⁡ ( d G ( i , j ) , d G ( i , k ) + d G ( k , j ) ) \min(d_G(i, j), d_G(i, k) + d_G(k, j)) min(dG(i,j),dG(i,k)+dG(k,j)),则 D G = [ d G ( i , j ) ] D_G = [d_G(i, j)] DG=[dG(i,j)] 包含 G G G 中所有点对的最短路径。

(6)ISOMAP算法

  ISOMAP算法中有两个瓶颈:

  • 最短路径的计算

    • Floyd算法: O ( N 3 ) O(N^3) O(N3)
    • Dijkstra算法(利用Fibonacci堆): O ( K N 2 log ⁡ N ) O(KN^2 \log N) O(KN2logN),其中 K K K为近邻数
  • 特征分解: O ( N 3 ) O(N^3) O(N3)

Dijkstra是荷兰的计算机科学大师,发音是/ˈdɑːɪkstrə/,/k/音不发。

(7)例:数字“2”图像

  下图展示了数字“2”的图像示例,图中通过底部环状结构(Bottom loop articulation)和顶部拱形结构(Top arch articulation)展示了数字“2”的形状特征。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码骑士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值