机器学习(二十四) 降维 : MDS降维方法与线性降维方法

24.1 k近邻学习 - "维数危机"

k近邻学习 (k-Nearest Neighbor,简称kNN) 是一种常用的监督学习方法,其工作机制非常简单:

给定测试样本,基于某种距离度量找出训练集中与其距离最近的k个训练样本,然后基于这k个"近邻"的信息来进行预测。通常,在分类任务中可使用"投票法";在回归任务中可使用"平均法"​;还可基于距离远近进行加权投票或加权平均,距离越近的样本权重越大。

k近邻学习有一个明显的不同之处:它似乎没有训练过程!k是一个重要参数,当k取不同值时,分类结果会有显著不同。另一方面,若采用不同的距离计算方式,找出的"近邻"可能有显著差别,也会导致分类结果有显著不同。

k近邻学习基于一个重要假设:任意测试样本x在其附近任意小的δ距离范围内总能找到一个训练样本 (例如若δ=0.001,仅考虑单个属性,则需1000个样本点平均分布在归一化后的属性取值范围内,可使任意测试样本在其附近0.001距离范围内总能找到一个训练样本),即训练样本的采样密度足够大,或称为"密采样"(dense sample) -- 此时近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍。然而,这仅是属性维数为1的情形,若有更多的属性,例如属性维数为20,若要求样本达到密采样(及错误率)的条件,至少需1000^20=10^60个样本,这个条件在现实应用中通常很难满足,且现实任务中属性维数如果成千上万,则满足密采样条件所需的样本数目更是无法达到的天文数字 -- 高维空间出现的数据样本稀疏、距离计算困难等问题:"维数危机"。

24.2 降维

缓解"维数危机"的一个重要途径是++降维(dimension reduction)++ ,++即通过某种数学变换将原始高维属性空间转变为一个低维"子空间"(subspace)++,++在这个子空间中样本密度大幅提高,距离计算也变得更为容易++。++为什么能进行降维?这是因为在很多时候,人们观测或收集到的数据样本虽是高维属性的,但与学习任务密切相关的数据内在规律很可能仅是一个低维分布。++如下图所示给出了一个直观的例子:原始高维空间中的样本点,在这个低维子空间中更容易进行学习。

24.3 MDS降维方法

++若要求原始高维空间中样本之间的距离 (代表数据分布的内部规律) 在低维空间中得以保持++ ,即得到++"多维缩放" (Multiple Dimensional Scaling,简称MDS)算法 ​++Cox and Cox,2001,这是一种经典的降维方法。

MDS算法如下:

24.3.1 算法解读

MDS算法解读如下:

假定m个样本在原始d维空间的距离矩阵为 D∈Rm×m,其第i行j列的元素 distij 为样本xi到xj的距离。++目标是获得样本在d'低维空间的表示 Z∈Rd′×m++ ,++且任意两个样本在d′低维空间中的欧氏距离等于原始空间中的距离,即‖zi-zj‖ = distij++。

令B=ZᵀZ=(Rd′×m)ᵀ(Rd′×m)∈Rm×m,其中B为降维后样本的内积矩阵,bij=ziᵀzj,则有

distij^2 = ‖zi-zj‖^2 = ‖zi‖^2 + ‖zj‖^2 - 2ziᵀzj = bii+bjj-2bij

令降维后的样本Z被中心化,即Σ(i=1,m)zi=0,则矩阵B的行之和、列之和均为零,即Σ(i=1,m)bij = Σ(j=1,m)bij = 0。

Σ(i=1,m)distij^2 = Σ(i=1,m)bii + mbjj = tr(B) + mbjj

Σ(j=1,m)distij^2 = Σ(j=1,m)bjj + mbii = tr(B) + mbii

Σ(i=1,m)Σ(j=1,m)distij^2 = Σ(i=1,m)tr(B) + Σ(i=1,m)mbii = 2mtr(B)

其中,tr(B) = Σ(i=1,m)bii 表示矩阵的迹(trace)。

即:

disti·^2 = (1/m)tr(B)+bii

dist·j^2 = (1/m)tr(B)+bjj

dist··^2 = (2/m)tr(B)

则有 :

bij = -(1/2)(distij^2-bii-bjj) =-(1/2)(distij^2 -disti·^2 -dist·j^2 +dist··^2)

得出降维后样本的内积矩阵B内元素 bij 与样本之间的距离 distij 的对应关系,

由此即可通过降维前后样本之间距离保持不变的距离矩阵D求取内积矩阵B。

对内积矩阵B做++特征值分解(eigenvalue decomposition),B=VΛVᵀ,其中Λ=diag(λ1, λ2, ..., λd)为特征值构成的对角矩阵 (λ1≥λ2≥...≥λd),V为相应的特征向量矩阵++ 。

假定其中有d*个非零特征值,构成对角矩阵 Λ* = diag(λ1, λ2, ..., λd*),令V*表示相应的特征向量矩阵,则Z可表达为

在现实应用中为了有效降维,往往仅需降维之后的样本距离与原始空间中的样本距离尽可能接近,而不必严格相等。此时可取d'≪d个最大特征值构成对角矩阵 Λ'=diag(λ1, λ2, ..., λd'),令V'表示相应的特征向量矩阵,则Z可表达为

24.4 引子 : 线性降维方法

一般来说,欲获得低维子空间,最简单的方法是对原始高维空间进行线性变换。++给定原始d维空间中的样本 X=(x1,x2,...,xm) ∈ Rd×m,变换之后得到 d'≤d 维空间中的样本:
Z=WᵀX
其中 W ∈ Rd×d′是变换矩阵,Z ∈ Rd′×m是样本在新空间中的表达++ 。

变换矩阵W可视为d'个d维基向量,zi=Wᵀxi 是d维向量xi与这d'个d维基向量分别做内积而得到的d'维向量。也就是说,++zi是原d维向量xi通过新坐标系{w1, w2, ..., wd′} (wi是d维向量) 转换得到的d'维向量++。若新坐标系是一个正交坐标系,此时W为正交变换,则新空间中的属性是原空间中属性的线性组合。

基于线性变换进行降维的方法称为线性降维方法,都符合 Z=WᵀX 的基本形式,不同之处是对低维子空间的性质有不同的要求,相当于对W施加了不同的约束。

在下一篇我们将会看到,要求低维子空间对样本具有最大可分性的一种极为常用的线性降维方法。

Enjoy!

相关推荐
牧艺24 分钟前
Cursor Rules / Skills 分层设计:让 Agent 像「团队新同事」
前端·人工智能·cursor
yszaygr213829 分钟前
Verilog参数化游程编码RLE模块
算法
shepherd11131 分钟前
一文带你掌握 LLM、Token、Context、Prompt、RAG、MCP、Skill、Agent 等 AI 核心概念
人工智能·后端·ai编程
望易42 分钟前
刚设计的大模型架构-双域耦合认知框架
算法·架构
小林ixn1 小时前
MCP 保姆级入门指南:AI 的“万能充电口”到底怎么玩?
人工智能
转转技术团队2 小时前
没有测试的核心代码,怎么交给 AI 重构
人工智能
爱读源码的大都督3 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
半个落月4 小时前
LLM如何预测下一个Token?一文拆解Transformer核心流程
人工智能
触底反弹4 小时前
🔥 2026 年爆火的 Harness Engineering 到底是什么?从原理到实战一文讲透
javascript·人工智能·程序员