非线性子空间学习


非线性子空间学习是一类 降维技术,旨在通过 非线性映射将高维数据转换到低维空间,从而发现数据中的潜在结构、减少冗余信息,并可能增强数据的可分离性,适用于 分类聚类、可视化等多种任务。
与线性降维方法(如PCA、LDA)相比,非线性方法能更好地捕捉 复杂的数据分布。以下是一些常用的非线性子空间学习方法及其相关公式。

1. 核主成分分析(Kernel PCA, KPCA)

核方法通过将数据映射到高维特征空间,然后在该空间执行线性操作,实现了在原始输入空间中的非线性变换。KPCA是PCA的非线性扩展。

  • 公式:
    • 核函数 K ( x , y ) = ϕ ( x ) T ϕ ( y ) K(x, y) = \phi(x)^T \phi(y) K(x,y)=ϕ(x)Tϕ(y),其中 ϕ ( ⋅ ) \phi(\cdot) ϕ() 是将输入数据 x x x 映射到高维特征空间的函数
    • 中心化核矩阵 K c = K − 1 n K − K 1 n T + 1 n K 1 n T K_c = K - 1_n K - K 1_n^T + 1_n K 1_n^T Kc=K1nKK1nT+1nK1nT,其中 K K K 是核矩阵, 1 n 1_n 1n是长度为 n n n 的全1向量。
    • 寻找最大的 α \alpha α 使得 α T K c α \alpha^T K_c \alpha αTKcα 最小,同时约束 α T 1 n = 0 \alpha^T 1_n = 0 αT1n=0(保证数据的无偏性),解得 α \alpha α 后,低维表示为 Z = α K Z = \alpha K Z=αK

例子

核主成分分析(KPCA)是一个非线性降维技术,通过将原始数据映射到一个高维特征空间并在该空间执行PCA,来捕获数据中的非线性结构。以下是KPCA的一个具体计算示例,我们将使用一个简化的数据集和高斯核函数(RBF核)来进行说明。

数据集

假设有以下二维数据集,属于同一类别,但我们希望通过KPCA来发现潜在的非线性结构

样本编号 x 1 x_1 x1 x 2 x_2 x2
123
232
346
465
587

计算步骤

  1. 定义核函数:我们选择高斯核函数(RBF核)来映射数据到高维空间。RBF核函数定义为:
    k ( x i , x j ) = exp ⁡ ( − γ ∣ ∣ x i − x j ∣ ∣ 2 ) k(x_i, x_j) = \exp\left(-\gamma ||x_i - x_j||^2\right) k(xi,xj)=exp(γ∣∣xixj2)
    其中, ∣ ∣ x i − x j ∣ ∣ 2 ||x_i - x_j||^2 ∣∣xixj2 是样本 x i x_i xi x j x_j xj 之间的欧氏距离的平方 , , \gamma$ 是核宽度参数,控制了映射的非线性程度

  2. 计算核矩阵:基于RBF核函数,计算数据集中的所有点对之间的核相似度,形成核矩阵 ( K )。对于上述数据集,核矩阵 ( K ) 为:

    K = ( k ( 1 , 1 ) k ( 1 , 2 ) k ( 1 , 3 ) k ( 1 , 4 ) k ( 1 , 5 ) k ( 2 , 1 ) k ( 2 , 2 ) k ( 2 , 3 ) k ( 2 , 4 ) k ( 2 , 5 ) ⋮ ⋮ ⋮ ⋮ ⋮ k ( 5 , 1 ) k ( 5 , 2 ) k ( 5 , 3 ) k ( 5 , 4 ) k ( 5 , 5 ) ) K = \begin{pmatrix} k(1, 1) & k(1, 2) & k(1, 3) & k(1, 4) & k(1, 5) \\ k(2, 1) & k(2, 2) & k(2, 3) & k(2, 4) & k(2, 5) \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ k(5, 1) & k(5, 2) & k(5, 3) & k(5, 4) & k(5, 5) \end{pmatrix} K= k(1,1)k(2,1)k(5,1)k(1,2)k(2,2)k(5,2)k(1,3)k(2,3)k(5,3)k(1,4)k(2,4)k(5,4)k(1,5)k(2,5)k(5,5)

    假设 γ = 1 \gamma = 1 γ=1,计算得:

K = ( 1 exp ⁡ ( − 2 ) exp ⁡ ( − 8 ) exp ⁡ ( − 16 ) exp ⁡ ( − 24 ) exp ⁡ ( − 2 ) 1 exp ⁡ ( − 4 ) exp ⁡ ( − 14 ) exp ⁡ ( − 22 ) exp ⁡ ( − 8 ) exp ⁡ ( − 4 ) 1 exp ⁡ ( − 10 ) exp ⁡ ( − 16 ) exp ⁡ ( − 16 ) exp ⁡ ( − 14 ) exp ⁡ ( − 10 ) 1 exp ⁡ ( − 8 ) exp ⁡ ( − 24 ) exp ⁡ ( − 22 ) exp ⁡ ( − 16 ) exp ⁡ ( − 8 ) 1 ) K = \begin{pmatrix} 1 & \exp(-2) & \exp(-8) & \exp(-16) & \exp(-24) \\ \exp(-2) & 1 & \exp(-4) & \exp(-14) & \exp(-22) \\ \exp(-8) & \exp(-4) & 1 & \exp(-10) & \exp(-16) \\ \exp(-16) & \exp(-14) & \exp(-10) & 1 & \exp(-8) \\ \exp(-24) & \exp(-22) & \exp(-16) & \exp(-8) & 1 \end{pmatrix} K= 1exp(2)exp(8)exp(16)exp(24)exp(2)1exp(4)exp(14)exp(22)exp(8)exp(4)1exp(10)exp(16)exp(16)exp(14)exp(10)1exp(8)exp(24)exp(22)exp(16)exp(8)1

  1. 中心化核矩阵:为了去除数据的平移影响,需要对核矩阵进行中心化处理,形成中心化核矩阵 K c K_c Kc
    K c = K − 1 1 T K − K 1 1 T + 1 1 T K 1 1 T K_c = K - \mathbf{1}\mathbf{1}^TK - K\mathbf{1}\mathbf{1}^T + \mathbf{1}\mathbf{1}^TK\mathbf{1}\mathbf{1}^T Kc=K11TKK11T+11TK11T
    其中, 1 \mathbf{1} 1 是一个所有元素均为1的列向量,大小与数据集的行数相同。

  2. 计算特征值和特征向量:对中心化后的核矩阵 K c K_c Kc 进行特征分解,找到最大的几个特征值对应的特征向量。假设我们想要降到一维空间,那么就取最大的那个特征值 λ 1 \lambda_1 λ1 及其对应的特征向量 α 1 \alpha_1 α1

  3. 构造低维表示:低维空间的表示 ( Z ) 可以通过原数据集 ( X ) 与特征向量 α \alpha α 的内积得到,即:
    z i = ∑ j = 1 n α j k ( x i , x j ) , for  i = 1 , 2 , . . . , n z_i = \sum_{j=1}^{n} \alpha_j k(x_i, x_j), \quad \text{for } i = 1, 2, ..., n zi=j=1nαjk(xi,xj),for i=1,2,...,n
    其中,( n ) 是数据集中的样本数, z i z_i zi 是第 ( i ) 个样本在降维后的坐标。

结果解释

通过上述步骤,我们得到了每个样本在降维后的一维坐标 z i z_i zi,这些坐标反映了原始数据在非线性子空间中的位置,可能揭示了数据间的非线性关系。实际应用中,会根据具体情况调整核函数的参数 γ \gamma γ 以及选择降维的维度数。

2. 局部线性嵌入(Locally Linear Embedding, LLE)

LLE试图保持每个点与其邻居间的线性关系,在低维空间中重构这种局部结构。

  • 公式:
    • 寻找权重 W i j W_{ij} Wij 使得 x i ≈ ∑ j ∈ N ( i ) W i j x j x_i \approx \sum_{j \in N(i)} W_{ij} x_j xijN(i)Wijxj,其中 N ( i ) N(i) N(i) 是点 i i i 的邻域。
    • 最优化问题: min ⁡ Y ∑ i ∣ ∣ y i − ∑ j ∈ N ( i ) W i j y j ∣ ∣ 2 \min_Y \sum_i ||y_i - \sum_{j \in N(i)} W_{ij} y_j||^2 minYi∣∣yijN(i)Wijyj2,在保持 Y T Y = I Y^TY = I YTY=I 的约束下,其中 Y Y Y 是低维嵌入。
    • 解决方案通常涉及解决一系列的优化问题和约束条件。

例子

局部线性嵌入(LLE)是一种非线性降维技术 ,它通过在高维空间中寻找每个数据点的局部线性重构权重,然后在低维空间中保持这些权重关系来保持数据的局部结构。下面是LLE的一个简单计算示例。

数据集

假设我们有一个简单的二维数据集,包含四个点 (X):

样本编号 x 1 x_1 x1 x 2 x_2 x2
100
211
321
430

计算步骤

  1. 定义邻域:首先确定每个点的邻域,比如选择每个点最近的 (k) 个邻居,这里 (k=2)。由于数据集较小,我们简单地选择每个点的直接邻居(在实际应用中,可能需要使用更复杂的距离度量和选择策略)。

  2. 计算权重:对于每个点 x i x_i xi,我们希望找到一组权重 W i j W_{ij} Wij,使得 x i x_i xi 可以通过其邻居 x j x_j xj 线性组合近似。即解优化问题:

min ⁡ W i j ∑ j ∈ N ( i ) W i j ∣ ∣ x i − x j ∣ ∣ 2 s.t. ∑ j ∈ N ( i ) W i j = 1 , W i j ≥ 0 \min_{W_{ij}} \sum_{j \in N(i)} W_{ij} ||x_i - x_j||^2 \quad \text{s.t.} \quad \sum_{j \in N(i)} W_{ij} = 1, W_{ij} \geq 0 WijminjN(i)Wij∣∣xixj2s.t.jN(i)Wij=1,Wij0

这个公式是局部线性嵌入(LLE, Locally Linear Embedding)的核心优化目标,用于计算每个数据点 x i x_i xi 在其局部邻域 N ( i ) N(i) N(i) 内的线性重构权重 W i j W_{ij} Wij。下面是对公式的详细解释:

公式意义

min ⁡ W i j ∑ j ∈ N ( i ) W i j ∣ ∣ x i − x j ∣ ∣ 2 s.t. ∑ j ∈ N ( i ) W i j = 1 , W i j ≥ 0 \min_{W_{ij}} \sum_{j \in N(i)} W_{ij} ||x_i - x_j||^2 \quad \text{s.t.} \quad \sum_{j \in N(i)} W_{ij} = 1, W_{ij} \geq 0 WijminjN(i)Wij∣∣xixj2s.t.jN(i)Wij=1,Wij0

  • 目标函数:

    • min ⁡ W i j \min_{W_{ij}} minWij 表示我们要最小化的目标是关于权重 W i j W_{ij} Wij 的。
    • ∑ j ∈ N ( i ) W i j ∣ ∣ x i − x j ∣ ∣ 2 \sum_{j \in N(i)} W_{ij} ||x_i - x_j||^2 jN(i)Wij∣∣xixj2 是对每一个点 x i x_i xi 的表达式,其中 N ( i ) N(i) N(i) 表示点 x i x_i xi 的邻域,即距离 x i x_i xi 最近的几个点的集合。
    • 这个求和表达了点 x i x_i xi 通过其邻域内的点 x j x_j xj 来线性重构自身的误差的平方和。目标是最小化这个误差,意味着我们希望每个点能够很好地被其邻域内的点线性表示。
  • 约束条件:

    • ∑ j ∈ N ( i ) W i j = 1 \sum_{j \in N(i)} W_{ij} = 1 jN(i)Wij=1:这个条件确保了权重的归一化,即所有邻域内点对 x i x_i xi 的贡献总和为1。这意味着 x i x_i xi 通过其邻居的加权组合来近似,权重之和等于1保证了重构的有效性,避免了过度放大或缩小。`
    • W i j ≥ 0 W_{ij} \geq 0 Wij0:要求所有的权重 W i j W_{ij} Wij 都是非负的,这是因为权重代表了贡献度负值没有实际意义,而且在寻求重构点 x i x_i xi 时,我们希望邻域内的点是正向帮助的。

对于这个简单的例子,手动计算每个点的权重:

  • 对于点1,其邻居是点2,理想情况下 W 12 = 1 W_{12} = 1 W12=1(如果只考虑最简单的线性插值)。
  • 对于点2,其邻居是点1和点3,假设等权重,则 W 21 = W 23 = 0.5 W_{21} = W_{23} = 0.5 W21=W23=0.5
  • 对于点3,其邻居是点2和点4,同样假设等权重,则 W 32 = W 34 = 0.5 W_{32} = W_{34} = 0.5 W32=W34=0.5
  • 对于点4,其邻居是点3,因此 W 43 = 1 W_{43} = 1 W43=1
  1. 重建误差最小化:虽然在这个简化的例子中,我们直接指定了权重,实际操作中,这些权重需要通过优化算法求解。但在本例中,我们继续基于上述分配的简单权重。

  2. 降维:有了这些权重后,下一步是在低维空间中找到新的坐标 (Y),使得低维空间中的点能够通过类似的权重组合重构回原始空间。设 (Y) 为低维嵌入,我们希望最小化重构误差:

min ⁡ Y ∑ i ∣ ∣ y i − ∑ j ∈ N ( i ) W i j y j ∣ ∣ 2 \min_Y \sum_i ||y_i - \sum_{j \in N(i)} W_{ij} y_j||^2 Ymini∣∣yijN(i)Wijyj2

由于这个例子过于简化,我们不进行详细的数学优化求解,但在实际操作中,这一步骤通常涉及迭代优化算法,如梯度下降。

结论

对于这个非常基础的例子,LLE的过程主要是为了演示思想,实际应用中LLE涉及更复杂的数学和计算过程,尤其是计算权重和优化低维坐标时。在真实数据集中,我们会使用算法自动确定权重并优化低维嵌入,可能还会涉及对邻域的选择、正则化项的添加等策略,以确保算法的稳定性和有效性。

3. 等距映射(Isomap)

Isomap是基于图论的降维方法,它首先构建数据点间的邻接图,然后计算两点间的最短路径长度,最后通过多维缩放(MDS)在低维空间中保持这些距离。

  • 公式:
    • 构建邻接图,计算所有对之间最短路径的距离矩阵 ( D )。
    • 解多维缩放问题: min ⁡ Z ∑ i , j ( D i j − ∣ ∣ z i − z j ∣ ∣ ) 2 \min_Z \sum_{i,j} (D_{ij} - ||z_i - z_j||)^2 minZi,j(Dij∣∣zizj∣∣)2,其中 Z Z Z 是低维坐标。

4. t-分布邻域嵌入算法(t-SNE)

t-SNE通过使用t-分布作为相似性度量,来优化高维和低维空间中点对之间的概率分布匹配。

  • 公式:
    • 高维空间中的相似度: p i j = ( 1 + ∣ ∣ x i − x j ∣ ∣ 2 ) − 1 ∑ k ≠ l ( 1 + ∣ ∣ x k − x l ∣ ∣ 2 ) − 1 p_{ij} = \frac{(1 + ||x_i - x_j||^2)^{-1}}{\sum_{k \neq l}(1 + ||x_k - x_l||^2)^{-1}} pij=k=l(1+∣∣xkxl2)1(1+∣∣xixj2)1,使用高斯核。
    • 低维空间中的相似度: q i j = ( 1 + ∣ ∣ y i − y j ∣ ∣ 2 ) − 1 ∑ k ≠ l ( 1 + ∣ ∣ y k − y l ∣ ∣ 2 ) − 1 q_{ij} = \frac{(1 + ||y_i - y_j||^2)^{-1}}{\sum_{k \neq l}(1 + ||y_k - y_l||^2)^{-1}} qij=k=l(1+∣∣ykyl2)1(1+∣∣yiyj2)1,但使用t-分布核。
    • 最小化KL散度: min ⁡ Q K L ( P ∣ ∣ Q ) = ∑ i , j p i j log ⁡ p i j q i j \min_Q KL(P||Q) = \sum_{i,j} p_{ij} \log \frac{p_{ij}}{q_{ij}} minQKL(P∣∣Q)=i,jpijlogqijpij,通过梯度下降优化 ( Y )。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不易撞的网名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值