CHAPTER 10
✓ 已完成
📉

降维与度量学习

Dimensionality Reduction and Metric Learning

学习目标

🎯
  • 理解降维的动机和高维数据的挑战
  • 掌握PCA的原理和实现过程
  • 了解度量学习的基本思想
  • 理解流形学习的概念
10.1

k近邻学习

k近邻算法(k-NN)

k近邻(k-Nearest Neighbor, k-NN)是一种基本的分类与回归方法, 基于"物以类聚"的直观想法:给定测试样本,找到训练集中与其最接近的k个样本,通过这k个"邻居"的信息进行预测。

算法流程

  1. 计算测试样本与训练集中所有样本的距离
  2. 选出距离最小的k个训练样本
  3. 分类任务:投票法,选择k个样本中出现最多的类别
  4. 回归任务:平均法,取k个样本标记的平均值

✓ 优点

  • • 简单直观,易于理解和实现
  • • 无需训练过程(懒惰学习)
  • • 适合多分类问题
  • • 对异常值不敏感

✗ 缺点

  • • 预测开销大(需计算所有距离)
  • • 对高维数据效果差(维度灾难)
  • • 对样本不平衡敏感
  • • k值和距离度量的选择很关键

🔑 关键参数

  • k值:k太小容易过拟合(受噪声影响),k太大容易欠拟合(决策边界过于平滑)
  • 距离度量:欧氏距离、曼哈顿距离、闵可夫斯基距离、马氏距离等
🎮

k-NN分类可视化

交互式调整k值和距离度量,观察决策边界变化

🚧 开发中...

10.2

低维嵌入

为什么需要降维

高维数据在机器学习中面临诸多挑战,这被称为"维度灾难"(Curse of Dimensionality)

  • 计算复杂度随维度指数增长
  • 高维空间中数据变得稀疏,距离度量失效
  • 容易过拟合,需要更多样本
  • 可视化困难

降维(Dimensionality Reduction)通过某种数学变换, 将高维数据投影到低维空间,同时尽可能保留数据的内在结构和重要信息。

多维缩放(MDS)

多维缩放(Multi-Dimensional Scaling, MDS)要求降维后样本间的距离尽可能保持不变。

目标函数

min Σᵢ₌₁ⁿ Σⱼ₌₁ⁿ (||zᵢ - zⱼ|| - dᵢⱼ)²

其中 dᵢⱼ 是原空间中样本i和j的距离,||zᵢ - zⱼ|| 是降维后的距离

经典MDS算法步骤

  1. 计算原始空间中样本间的距离矩阵 D
  2. 构造内积矩阵 B = -½ HDHT(H是中心化矩阵)
  3. 对B进行特征值分解:B = VΛVT
  4. 取前d'个最大特征值对应的特征向量,得到降维结果

MDS通过保持距离关系来降维,适合数据可视化和探索性分析。

🎮

MDS降维可视化

将高维数据用MDS降到2维,观察样本分布

🚧 开发中...

10.3

主成分分析

PCA基本思想

主成分分析(Principal Component Analysis, PCA)是最常用的降维方法,通过线性变换将数据投影到方差最大的方向上。

两种理解角度

1. 最大化投影方差

找到投影方向,使得数据在该方向上的投影方差最大,保留最多的信息量

2. 最小化重构误差

找到投影方向,使得原始数据与降维重构数据之间的平方误差最小

PCA算法步骤

  1. 对数据进行中心化:xᵢ ← xᵢ - μ(μ是样本均值)
  2. 计算样本协方差矩阵:C = (1/m) XXT
  3. 对协方差矩阵进行特征值分解:C = VΛVT
  4. 取前d'个最大特征值对应的特征向量构成投影矩阵W
  5. 对样本进行投影:z = WTx

如何选择主成分数量d'

常用方法:

  • 方差贡献率:选择累积方差贡献率达到85%-95%的主成分
  • 交叉验证:通过下游任务性能选择最优维度
  • 碎石图(Scree Plot):观察特征值曲线的"拐点"

✓ 优点

  • • 完全无参数,易于实现
  • • 各主成分正交,消除相关性
  • • 有明确的数学解释
  • • 可用于数据压缩和去噪

✗ 缺点

  • • 只能进行线性变换
  • • 对异常值敏感
  • • 主成分可解释性差
  • • 假设方差大=信息量大

PCA降维交互演示

3D可视化PCA主成分分析,旋转视角观察数据分布和主成分方向

方差解释比例

X方向0.0%
Y方向0.0%
Z方向0.0%
第一主成分(PC1)解释:0.0%

图例

原始数据点
第一主成分(PC1)
第二主成分(PC2)
投影点

💡 PCA原理

  1. 中心化:将数据平移使均值为0
  2. 计算协方差矩阵:衡量特征间的相关性
  3. 特征值分解:找到方差最大的方向(主成分)
  4. 选择主成分:保留前k个最大特征值对应的特征向量
  5. 投影:将数据投影到主成分构成的子空间

目标:在降低维度的同时最大化保留数据的方差(信息量)

10.4

核化线性降维

核主成分分析(KPCA)

传统PCA只能进行线性降维。核主成分分析(Kernel PCA, KPCA)通过核技巧将数据映射到高维特征空间,再在该空间中进行PCA,从而实现非线性降维。

KPCA核心思想

1. 映射:通过映射φ将样本从原始空间映射到高维空间

2. 核技巧:不显式计算φ(x),而是通过核函数 κ(xᵢ, xⱼ) = φ(xᵢ)Tφ(xⱼ)

3. 特征分解:对核矩阵K进行特征值分解

4. 投影:利用特征向量进行降维

常用核函数

  • 线性核:κ(x, z) = xTz(退化为标准PCA)
  • 多项式核:κ(x, z) = (xTz + c)d
  • 高斯核(RBF):κ(x, z) = exp(-||x-z||²/2σ²)

💡 KPCA vs PCA

KPCA能够捕捉数据的非线性结构,适合处理非线性分布的数据。 但计算复杂度更高(需要计算和存储核矩阵),且新样本投影需要保留训练数据。

🎮

KPCA与PCA对比

在非线性数据(如瑞士卷)上对比KPCA和PCA的降维效果

🚧 开发中...

10.5

流形学习

流形学习基本概念

流形(Manifold)是局部具有欧氏空间性质的几何体。流形学习(Manifold Learning)假设高维数据实际上分布在低维流形上, 目标是找到这个低维流形结构。

等度量映射(Isomap)

Isomap认为低维流形嵌入在高维空间中,样本间的测地线距离(沿流形表面的距离)才能真实反映相似度。

  1. 构建k近邻图,计算邻域内样本的欧氏距离
  2. 用最短路径算法(如Dijkstra)计算任意两点的测地线距离
  3. 对测地线距离矩阵应用MDS进行降维

局部线性嵌入(LLE)

LLE假设每个样本可以由其近邻样本线性表示,降维时保持这种局部线性关系。

  1. 找到每个样本的k个近邻
  2. 计算重构权重W,使得 xᵢ ≈ Σⱼ wᵢⱼxⱼ(邻域内线性重构)
  3. 保持权重W不变,在低维空间中求解坐标Z,使得 zᵢ ≈ Σⱼ wᵢⱼzⱼ

t-SNE

t-分布随机邻域嵌入(t-SNE)专门用于数据可视化,能够在二维或三维空间中很好地展示高维数据的簇结构。

核心思想:在高维空间中用高斯分布建模样本相似度,在低维空间中用t分布建模, 通过KL散度优化,使得高维和低维的概率分布尽可能接近。

注意:流形学习方法通常计算复杂度高,不适合大规模数据; 且很多方法(如LLE、Isomap)难以处理新样本(out-of-sample)。

🎮

流形学习方法对比

在瑞士卷、S曲线等流形数据上对比Isomap、LLE、t-SNE效果

🚧 开发中...

10.6

度量学习

度量学习的动机

在许多机器学习任务中,距离度量至关重要(如k-NN、聚类)。度量学习(Metric Learning)旨在学习一个合适的距离度量,使得同类样本距离近、异类样本距离远。

马氏距离

dist²ₘ(xᵢ, xⱼ) = (xᵢ - xⱼ)TM(xᵢ - xⱼ)

其中 M 是半正定矩阵。当M = I(单位矩阵)时退化为欧氏距离。

度量学习的目标就是学习合适的矩阵M,使得距离度量符合任务需求。

典型度量学习方法

近邻成分分析(NCA)

通过优化k-NN分类器的留一法准确率来学习线性变换矩阵。 使用随机近邻的概率模型,最大化正确分类的概率。

大间隔最近邻(LMNN)

目标:使每个样本的k个同类近邻尽可能接近,同时异类样本保持足够距离(间隔)。

同时优化两个目标:1)拉近目标近邻(target neighbors);2)推开不同类的入侵者(imposters)。

深度度量学习

使用深度神经网络学习嵌入空间(embedding space),常用的损失函数包括:

  • 对比损失(Contrastive Loss):成对样本
  • 三元组损失(Triplet Loss):锚点、正样本、负样本
  • N-pair Loss:同时考虑多个负样本

💡 应用场景

  • 人脸识别:学习人脸特征空间,使同一人的不同照片距离近
  • 图像检索:学习语义相似度度量
  • 推荐系统:学习用户和物品的嵌入表示
  • 零样本学习:通过度量学习泛化到未见过的类别
🎮

度量学习可视化

展示度量学习如何改变特征空间,使得同类样本聚集、异类样本分离

🚧 开发中...