64、降维算法:多维尺度分析及典型算法详解

降维算法:多维尺度分析及典型算法详解

1. 多维尺度分析概述

多维尺度分析(Multidimensional Scaling)是一种重要的降维技术。给定一个包含数据集中每对数据间距离的距离矩阵,它会选择低维空间的维度 $l$,并将每个数据映射到这个 $l$ 维空间,同时尽可能保持数据间的距离。当维度 $l$ 为 1、2 或 3 时,得到的数据点可以在散点图上可视化。

1.1 多维尺度分析的类型

根据输入矩阵的不同,多维尺度分析主要有以下四种类型:
- 经典多维尺度分析(Classic MDS) :也称为主坐标分析(PCoA)。该方法基于度量距离矩阵,使用数据点间的原始距离,并试图在降维后的维度中保留这些距离。常用于有准确相异矩阵(如地理距离)的情况。
- 度量多维尺度分析(Metric MDS) :与经典 MDS 类似,基于度量距离矩阵,尽可能保留度量距离。不同之处在于它使用迭代算法,同时处理比率数据和区间数据。
- 非度量多维尺度分析(Non - metric MDS) :关注数据点间的排名顺序,而非实际距离。适用于非度量相异性以及未知或非线性的相异变换,将相似或相异的数据建模为几何空间中的距离。
- 广义多维尺度分析(Generalized MDS) :是度量多维尺度分析的扩展,其目标空间是任何光滑的非欧几里得空间。当相异性是曲面上的距离,目标空间是另一个曲面时,广义 MDS 可以找到从一个曲面到另一个曲面的最小失真嵌入。它旨在处理不同类型的数据,如包含缺失值的矩阵。

1.2 经典多维尺度分析示例

经典多维尺度分析以一个输入矩阵作为输入,其中每个元素是两个数据点之间的距离,输出一个坐标矩阵,其配置使损失函数最小化。

假设已知几个城市之间的欧几里得距离,用矩阵 $D = [d_{ij}]$ 表示,其中:
$d_{ij} = \sqrt{(x_i - x_j)^2 + (y_i - y_j)^2}$
表示第 $i$ 个和第 $j$ 个城市之间的距离,目标是找到城市之间的坐标。

经典多维尺度分析中的损失函数称为应变(Strain),其表达式如下:
$Strain_D (x_1, x_2, \ldots, x_n) = \left(\frac{\sum_{i,j} (b_{ij} - x_i^T x_j)^2}{\sum_{i,j} b_{ij}^2}\right)^{1/2}$
其中,$x_i$ 表示一维空间中的向量,$x_i^T x_j$ 表示 $x_i$ 和 $x_j$ 之间的内积,$b_{ij}$ 是矩阵 $B$ 中的元素。

多维尺度分析基于这样一个事实:距离矩阵可以通过 $B = XX’$ 的特征值分解得到,而矩阵 $B$ 可以通过双重中心化从距离矩阵 $D$ 计算得出。

假设存在四个城市 City1、City2、City3 和 City4,并且已经测量了这四个城市之间的距离,示例矩阵 $D$ 如下:
$D^{(2)} =
\begin{bmatrix}
0 & 8649 & 6724 & 17689 \
8649 & 0 & 2704 & 3600 \
6724 & 2704 & 0 & 12321 \
17689 & 3600 & 12321 & 0
\end{bmatrix}$

由于有 $n = 4$ 个城市,矩阵计算如下:
$J =
\begin{bmatrix}
1 & 0 & 0 & 0 \
0 & 1 & 0 & 0 \
0 & 0 & 1 & 0 \
0 & 0 & 0 & 1
\end{bmatrix} - \frac{1}{4} \times
\begin{bmatrix}
1 & 1 & 1 & 1 \
1 & 1 & 1 & 1 \
1 & 1 & 1 & 1 \
1 & 1 & 1 & 1
\end{bmatrix} =
\begin{bmatrix}
0.75 & -0.25 & -0.25 & -0.25 \
-0.25 & 0.75 & -0.25 & -0.25 \
-0.25 & -0.25 & 0.75 & -0.25 \
-0.25 & -0.25 & -0.25 & 0.75
\end{bmatrix}$

将 $J$ 应用于 $D^{(2)}$ 得到双重中心化矩阵 $B$:
$B = -\frac{1}{2}JD^{(2)}J =
\begin{bmatrix}
5035.0625 & -1553.0625 & 258.9375 & -3740.938 \
-1553.0625 & 507.8125 & 5.3125 & 1039.938 \
258.9375 & 5.3125 & 2206.8125 & -2471.062 \
-3740.9375 & 1039.9375 & -2471.0625 & 5172.062
\end{bmatrix}$

为了对这四个城市进行二维表示,需要从矩阵 $B$ 中提取前两个最大的特征值和对应的特征向量:
$\lambda_1 = 9724.168, \lambda_2 = 3160.986$
$e_1 =
\begin{bmatrix}
-0.637 \
0.187 \
-0.253 \
0.704
\end{bmatrix}, e_2 =
\begin{bmatrix}
-0.586 \
0.214 \
0.706 \
-0.334
\end{bmatrix}$

最后,通过将特征向量与特征值相乘得到这些城市的坐标:
$X =
\begin{bmatrix}
-0.637 & -0.586 \
0.187 & 0.214 \
-0.253 & 0.706 \
0.704 & -0.334
\end{bmatrix}
\begin{bmatrix}
\sqrt{9724.168} & 0 \
0 & \sqrt{3160.986}
\end{bmatrix} =
\begin{bmatrix}
-62.831 & -32.97448 \
18.403 & 12.02697 \
-24.960 & 39.71091 \
69.388 & -18.76340
\end{bmatrix}$

下面是一个简单的流程图展示经典多维尺度分析的步骤:

graph TD;
    A[输入距离矩阵 D] --> B[计算 D 的平方矩阵 D(2)];
    B --> C[计算矩阵 J];
    C --> D[计算双重中心化矩阵 B = -1/2 * J * D(2) * J];
    D --> E[提取 B 的前两个最大特征值和特征向量];
    E --> F[将特征向量与特征值相乘得到坐标矩阵 X];

2. 典型降维算法

2.1 等距特征映射(Isomap)

等距特征映射(Isometric Feature Mapping,Isomap)是流形学习的代表性算法之一。它于 2000 年 12 月发表在《科学》杂志上的一篇题为“A Global Geometric Framework for Nonlinear Dimensionality Reduction”的论文中被提出。该算法使用流形学习方法,从局部度量信息中学习并获得全局几何框架,以解决非线性降维问题。其创新之处在于,在计算高维流形上数据点之间的距离时,不使用传统的欧几里得距离,而是使用微分几何中的测地距离。等距映射,顾名思义,是将呈现为非线性流形的原始数据之间的测地距离等距地映射到二维线性流形上的距离。

2.2 局部线性嵌入(LLE)

局部线性嵌入(Local Linear Embedding,LLE)也是流形学习的代表性算法之一。它于 2000 年 12 月发表在《科学》杂志的另一篇题为“Nonlinear Dimensionality Reduction by Locally Linear Embedding”的论文中被提出。局部线性嵌入是一种无监督学习算法,用于计算高维输入数据中包含的低维、邻域保持嵌入。该算法在小邻域内找到最佳线性重构,然后将数据点嵌入到低维空间中。它计算每个点的重构权重,然后通过计算特征值来最小化嵌入成本。LLE 算法可以发现流形的全局内部坐标,而无需明确表示数据应如何嵌入到二维图形中。

2.3 随机邻域嵌入(SNE)

随机邻域嵌入(Stochastic Neighbor Embedding,SNE)由多伦多大学计算机科学系的 Geoffrey Hinton 和 Sam Roweis 于 2002 年在神经信息处理系统大会(NIPS)上发表的一篇论文中提出。

设 $D_{high} = {x_i | i = 1, 2, \ldots, m} \subseteq R^h$ 和 $D_{low} = {y_j | j = 1, 2, \ldots, m} \subseteq R^l$ 分别表示高维输入数据和低维输出数据。

在高维输入空间中,随机邻域嵌入采用基于高斯分布的概率方法。对于数据点 $x$ 及其均值 $\mu = 0$,其高斯分布的概率密度函数为:
$p(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{x^2}{2\sigma^2}\right)$

SNE 的第一步是将高维数据点之间的欧几里得距离转换为表示它们在高维空间中相似性的条件概率。对于以 $x_i \in D_{high}$ 为中心的每个高斯分布,根据概率密度的比例选择其邻域数据点 $x_j \in D_{high}$,则非对称条件概率 $p_{j|i}$ 用作 $x_i$ 和 $x_j$ 之间的相似性。$p_{j|i}$ 的值对于 $x_i$ 附近的数据点相对较高;否则,$p_{j|i}$ 的值将非常小。高维空间中相似条件概率 $p_{j|i}$ 的计算公式如下:
$p_{j|i} = \frac{\exp\left(-\frac{||x_i - x_j||^2}{2\sigma_i^2}\right)}{\sum_{k\neq i} \exp\left(-\frac{||x_i - x_k||^2}{2\sigma_i^2}\right)}$
其中 $p_{i|i} = 0$,$\sigma_i^2$ 是数据点 $x_i$ 的方差,可以手动设置或通过二分查找找到使邻域分布的熵等于 $\log k$ 的值,这里的 $k$ 是手动选择的局部邻域数据点的有效数量。

在低维空间中,也使用高斯邻域方法来计算对应于高维数据点 $x_i$ 和 $x_j$ 的低维数据点 $y_i \in D_{low}$ 和 $y_j \in D_{low}$ 的相似条件概率 $q_{j|i}$;不同之处在于使用固定的方差值。不失一般性,设 $\sigma_i^2 = \frac{1}{2}$,则低维空间中相似条件概率的计算公式如下:
$q_{j|i} = \frac{\exp\left(-||y_i - y_j||^2\right)}{\sum_{k\neq i} \exp\left(-||y_i - y_k||^2\right)}$
同样,$q_{i|i} = 0$。

为了保持高维和低维空间中对应数据对之间的相似性,即尽可能使两个空间中对应数据对保持相同的条件概率,其损失函数 $C$ 等于高维和低维空间中每个数据点邻域的条件概率分布 $p_{j|i}$ 和 $q_{j|i}$ 之间的 KL 散度之和:
$C = \sum_{i} D_{KL}(P_i || Q_i) = \sum_{i} \sum_{j} p_{j|i} \log \frac{p_{j|i}}{q_{j|i}}$

通过梯度下降最小化损失函数 $C$,可得:
$\frac{\partial C}{\partial y_i} = 2 \sum_{j} (p_{j|i} - q_{j|i} + p_{i|j} - q_{i|j})(y_i - y_j)$

下面是 SNE 算法的主要步骤列表:
1. 计算高维数据点之间的欧几里得距离。
2. 将欧几里得距离转换为高维空间中的条件概率 $p_{j|i}$。
3. 初始化低维数据点。
4. 计算低维空间中的条件概率 $q_{j|i}$。
5. 计算损失函数 $C$。
6. 使用梯度下降更新低维数据点,直到损失函数收敛。

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

t - 分布随机邻域嵌入(t - Distributed Stochastic Neighbor Embedding,t - SNE)是随机邻域嵌入(SNE)的改进版本。虽然 SNE 具有较好的可视化效果,但它在输入高维空间和嵌入低维空间中都使用高斯分布,这在将高维数据嵌入到低维空间时难以拟合同一邻域内所有点的信息,即所谓的拥挤问题,并且 SNE 的损失函数也难以优化。

为了解决上述问题,t - SNE 进行了以下重要改进:
- 在高维空间中,使用基于高斯分布的对称随机邻域嵌入,使其损失函数具有更简单的梯度。
- 在低维空间中,使用 t - 分布来计算两个数据点之间的相似性。

t - SNE 在高维空间中使用基于高斯分布的对称条件概率,即联合概率分布 $p_{ij}$:
$p_{ij} = \frac{p_{j|i} + p_{i|j}}{2m}$
这确保了对于所有数据点 $x_i$,$\sum_{j} p_{ij} > \frac{1}{2m}$。因此,即使 $x_i$ 是离群点,它仍会对损失函数做出显著贡献。

为了解决低维空间中的拥挤问题,基于 t - 分布而不是 SNE 使用的高斯分布来计算数据点对之间的相似性。t - 分布的全称为学生 t - 分布,它属于重尾分布,即其钟形曲线尾部的分布比高斯分布大得多,因此便于在低维空间中拟合高维数据,能有效解决拥挤问题。

在低维空间中,t - SNE 采用自由度为 1 的学生 t - 分布,其联合概率分布 $q_{ij}$ 定义如下:
$q_{ij} = \frac{(1 + ||y_i - y_j||^2)^{-1}}{\sum_{k\neq l} (1 + ||y_i - y_j||^2)^{-1}}$

t - 分布随机邻域嵌入的损失函数 $C$ 等于高维空间中联合概率分布 $P$ 和低维空间中联合概率分布 $Q$ 之间的 KL 散度之和:
$C = D_{KL}(P || Q) = \sum_{i} \sum_{j} p_{ij} \log \frac{p_{ij}}{q_{ij}}$

使用梯度下降方法最小化上述损失函数 $C$:
$\frac{\partial C}{\partial y_i} = 4 \sum_{j} (p_{ij} - q_{ij})(y_i - y_j)(1 + ||y_i - y_j||^2)^{-1}$

为了便于进一步理解从随机邻域嵌入(SNE)到 t - 分布随机邻域嵌入(t - SNE)的演变,下面列出 SNE 和 t - SNE 中的几个关键方程:
|算法|高维空间条件概率|低维空间条件概率|损失函数|损失函数梯度|
|----|----|----|----|----|
|SNE|$p_{j|i} = \frac{\exp\left(-\frac{||x_i - x_j||^2}{2\sigma_i^2}\right)}{\sum_{k\neq i} \exp\left(-\frac{||x_i - x_k||^2}{2\sigma_i^2}\right)}$|$q_{j|i} = \frac{\exp\left(-||y_i - y_j||^2\right)}{\sum_{k\neq i} \exp\left(-||y_i - y_k||^2\right)}$|$C = \sum_{i} D_{KL}(P_i || Q_i) = \sum_{i} \sum_{j} p_{j|i} \log \frac{p_{j|i}}{q_{j|i}}$|$\frac{\partial C}{\partial y_i} = 2 \sum_{j} (p_{j|i} - q_{j|i} + p_{i|j} - q_{i|j})(y_i - y_j)$|
|t - SNE|$p_{ij} = \frac{p_{j|i} + p_{i|j}}{2m}$|$q_{ij} = \frac{(1 + ||y_i - y_j||^2)^{-1}}{\sum_{k\neq l} (1 + ||y_i - y_j||^2)^{-1}}$|$C = D_{KL}(P || Q) = \sum_{i} \sum_{j} p_{ij} \log \frac{p_{ij}}{q_{ij}}$|$\frac{\partial C}{\partial y_i} = 4 \sum_{j} (p_{ij} - q_{ij})(y_i - y_j)(1 + ||y_i - y_j||^2)^{-1}$|

下面是 t - SNE 算法的主要步骤流程图:

graph TD;
    A[输入高维数据 D_high] --> B[计算高维空间联合概率分布 p_ij];
    B --> C[初始化低维数据 D_low];
    C --> D[计算低维空间联合概率分布 q_ij];
    D --> E[计算损失函数 C];
    E --> F{损失函数是否收敛};
    F -- 否 --> G[使用梯度下降更新低维数据 D_low];
    G --> D;
    F -- 是 --> H[输出低维数据 D_low];

2.5 各种算法的比较

为了更清晰地了解不同降维算法的特点,下面对上述几种算法进行详细比较:
|算法名称|算法类型|核心思想|优点|缺点|适用场景|
|----|----|----|----|----|----|
|经典多维尺度分析(Classic MDS)|线性降维|基于度量距离矩阵,通过特征值分解,在降维后保留原始数据点间的距离|能处理准确的相异矩阵,可直观可视化低维结果|对高维数据计算复杂|有准确相异矩阵(如地理距离)的场景|
|等距特征映射(Isomap)|非线性降维|使用流形学习,从局部度量信息获得全局几何框架,用测地距离解决非线性降维问题|能处理非线性流形数据,保留数据的全局结构|对噪声敏感,计算复杂度高|数据分布在非线性流形上的场景|
|局部线性嵌入(LLE)|非线性降维|无监督学习,在小邻域内线性重构数据点并嵌入低维空间|发现流形全局内部坐标,无需明确嵌入方式|对邻域大小敏感,难以处理大规模数据|数据具有局部线性结构的场景|
|随机邻域嵌入(SNE)|非线性降维|基于高斯分布将高维距离转换为条件概率,通过最小化 KL 散度进行降维|能较好地保留局部结构|存在拥挤问题,损失函数难优化|需要可视化高维数据局部结构的场景|
|t - 分布随机邻域嵌入(t - SNE)|非线性降维|改进 SNE,高维用对称随机邻域嵌入,低维用 t - 分布计算相似性|解决拥挤问题,损失函数梯度简单|计算复杂度高,参数调整困难|高维数据可视化,尤其是需要解决拥挤问题的场景|

2.6 算法选择建议

在实际应用中,选择合适的降维算法至关重要。以下是一些选择算法的建议:
1. 数据类型和结构
- 如果数据具有线性结构,且有准确的相异矩阵,经典多维尺度分析是不错的选择。
- 若数据分布在非线性流形上,等距特征映射或局部线性嵌入可能更合适。
- 对于需要可视化高维数据局部结构的情况,随机邻域嵌入或 t - 分布随机邻域嵌入可以考虑。
2. 数据规模
- 对于小规模数据,各种算法都可以尝试。
- 当数据规模较大时,需要考虑算法的计算复杂度。例如,局部线性嵌入和 t - 分布随机邻域嵌入在处理大规模数据时可能效率较低。
3. 对噪声的敏感度
- 如果数据中存在较多噪声,等距特征映射可能不太适用,因为它对噪声比较敏感。
- 而 t - 分布随机邻域嵌入相对更能容忍一定的噪声。

2.7 降维算法的应用案例

降维算法在许多领域都有广泛的应用,以下是一些具体的案例:
1. 图像识别
- 在图像数据集中,图像的像素特征通常具有很高的维度。通过降维算法,可以将高维的图像特征降低到低维空间,减少计算量,同时保留图像的主要特征,提高图像识别的效率和准确率。例如,使用 t - 分布随机邻域嵌入可以将高维的图像特征可视化,帮助分析图像数据的分布和聚类情况。
2. 基因数据分析
- 基因数据通常包含大量的基因表达信息,维度非常高。降维算法可以帮助分析基因之间的关系,发现潜在的生物模式。例如,等距特征映射可以用于挖掘基因数据中的非线性结构,揭示基因表达与生物表型之间的关系。
3. 推荐系统
- 在推荐系统中,用户的行为数据和物品的特征数据可能具有很高的维度。通过降维算法,可以将这些高维数据降低到低维空间,更好地捕捉用户的兴趣和物品的特征,提高推荐的准确性和个性化程度。例如,经典多维尺度分析可以用于分析用户之间的相似度,为用户推荐感兴趣的物品。

2.8 总结

降维算法在处理高维数据时起着至关重要的作用。不同的降维算法具有不同的特点和适用场景,在实际应用中需要根据数据的类型、规模、结构以及对噪声的敏感度等因素选择合适的算法。经典多维尺度分析适用于有准确相异矩阵的线性数据;等距特征映射和局部线性嵌入擅长处理非线性流形数据;随机邻域嵌入和 t - 分布随机邻域嵌入则在高维数据可视化方面表现出色。通过合理选择和应用降维算法,可以提高数据处理的效率和准确性,为各个领域的数据分析和决策提供有力支持。

以下是一个总结各种算法核心特点的 mermaid 流程图:

graph LR;
    A[降维算法] --> B[线性降维];
    A --> C[非线性降维];
    B --> D[经典多维尺度分析];
    C --> E[等距特征映射];
    C --> F[局部线性嵌入];
    C --> G[随机邻域嵌入];
    C --> H[t - 分布随机邻域嵌入];
    D --> I[基于度量距离矩阵,保留原始距离];
    E --> J[流形学习,用测地距离解决非线性问题];
    F --> K[局部线性重构,嵌入低维空间];
    G --> L[基于高斯分布,最小化 KL 散度];
    H --> M[改进 SNE,高维对称,低维 t - 分布];

希望本文能帮助你更好地理解和应用降维算法,在实际工作中根据具体需求选择合适的算法,提高数据处理和分析的能力。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值