第二章: 机器学习与神经网络概述
第二部分:降维算法理论与实践
第三节:多维尺度分析(MDS)
内容:距离矩阵、嵌入空间维数选择
一、什么是 MDS?
多维尺度分析(MDS) 是一种以“保留样本之间距离关系”为核心的非监督降维方法。它将高维数据投影到低维空间,同时尽量保留样本间的“几何距离(相似性)”。
适用于:
-
数据没有明确标签;
-
你关心的是“样本之间的相似关系”。
二、核心思想与数学原理
输入:距离矩阵(Distance Matrix)
假设有 n 个样本,原始维度为 d,你先计算任意两个样本之间的“距离”,形成一个 n×n 的距离矩阵 D。
-
常用距离:欧几里得距离、曼哈顿距离、余弦距离等。
输出:嵌入空间坐标
MDS 找出 n 个样本在一个低维空间(如 2D、3D)中的坐标,使得样本间的几何距离与原始距离矩阵尽可能一致。
三、MDS 主要步骤
-
计算样本之间的距离矩阵 D
-
使用中心化和特征分解,重构样本在新坐标系下的表示
-
选择前 k 个最大特征值对应的特征向量,作为降维后的坐标
四、Python 示例
from sklearn.datasets import load_iris
from sklearn.manifold import MDS
import matplotlib.pyplot as plt
# 加载数据
iris = load_iris()
X = iris.data
y = iris.target
# MDS 降维
mds = MDS(n_components=2, dissimilarity='euclidean', random_state=42)
X_mds = mds.fit_transform(X)
# 可视化
plt.figure(figsize=(7, 5))
plt.scatter(X_mds[:, 0], X_mds[:, 1], c=y, cmap='Accent', edgecolor='k', s=60)
plt.title("MDS: Iris 数据集二维表示")
plt.xlabel("MDS 1")
plt.ylabel("MDS 2")
plt.grid(True)
plt.show()
五、与 PCA/LDA 的对比
方法 | 类型 | 是否监督 | 优化目标 |
---|---|---|---|
PCA | 线性 | 无监督 | 最大化方差 |
LDA | 线性 | 有监督 | 增大类间距、减小类内距 |
MDS | 非线性可选 | 无监督 | 保留原始样本间的距离结构 |
六、嵌入空间维数选择
-
通常选择 2 或 3 维用于可视化;
-
若用于后续建模,可选择解释误差最小的维度;
-
应结合目标和误差权衡:维度越多越准确,但不利于解释和计算。
七、总结
-
MDS 不依赖标签,适合探索数据之间的“相似关系”;
-
可作为可视化工具或前置降维步骤;
-
与 t-SNE、Isomap 一起归类为流形学习方法。