非负矩阵分解(NMF)有两种常见的目标函数形式:一种基于Frobenius范数(欧氏距离平方),另一种基于广义KL散度(也称I-divergence)。后者在处理计数数据、概率分布或TF-IDF表示的文本数据时往往更合适,因为KL散度更符合泊松噪声模型,能更好地捕捉数据的相对比例关系。
图正则化非负矩阵分解(GNMF)的KL散度版本(有时也称为Locality Preserving NMF或LPNMF)在标准KL-NMF的基础上加入了流形正则项,通过样本间的邻接图强制低维表示V保持数据的局部几何结构。这使得它在文档聚类、图像表示等任务中,既能保留部分-整体结构,又能尊重数据的内在流形分布。
今天分享的这个Matlab函数GNMF_KL正是实现了这一算法的核心入口。它采用乘性更新规则,支持稀疏矩阵输入、NCW权重预处理以及多次随机初始化,确保收敛稳定且结果可靠。
算法目标函数
给定非负数据矩阵X(m×n),GNMF_KL最小化以下目标:
D(X || U V^T) + α × Tr(V^T L V)其中:
D(·||·) 为广义KL散度:∑ (X_ij log(X_ij / (UV^T)_ij) - X_ij + (UV^T)_ij)
Tr(V^T L V) 为图拉普拉斯正则项,L = D - W 为拉普拉斯矩阵
α 控制流形正则强度(默认100,α=0时退化为普通KL-NMF)
通过精心设计的乘性迭代规则,可以保证目标函