局部敏感判别分析(LSDA)算法详解与MATLAB实现
在有监督降维任务中,经典的线性判别分析(LDA)追求全局类间分离和类内紧致,但往往忽略数据的局部几何结构。当数据分布在非线性流形上时,LDA 的表现会大打折扣。局部敏感判别分析(Locality Sensitive Discriminant Analysis, LSDA)正是为此而生,它巧妙地将局部保持思想与判别分析相结合,同时最大化局部类间分离、最小化局部类内距离,从而在保持流形结构的同时提升分类性能。
LSDA 的核心在于构造两个图:类内图(Within-class graph)Ww 和类间图(Between-class graph)Wb。通过调节两者权重,实现“同类局部相连拉近、异类局部相连推远”的目标。该算法在人脸识别、手写数字分类等任务中表现出色,常被视为 LPP 与 LDA 的强强联合。
本文详细解析一个高效的 LSDA MATLAB 实现,重点介绍其图构造策略、权重平衡机制、归一化处理以及与统一图嵌入框架(LGE)的无缝集成,帮助你在实际有标签数据降维任务中灵活运用。
算法核心设计
LSDA 的优化目标可表述为:
最大化局部类间散度,同时最小化局部类内散度。
具体通过构建:
类内权重矩阵 Ww:同类样本间连接(全局或局部 k 近邻)
类间权重矩阵 Wb:异类样本间连接(全局或局部 k 近邻)
最终组合权重为: