在上一篇文章中,我们介绍了SDNMF的主入口函数,今天深入其核心优化部分——乘法更新规则的实现。SDNMF(Non-negative Matrix Factorization with Sinkhorn Distance)通过将传统的Frobenius重构误差替换为带熵正则化的Sinkhorn距离(也称为熵正则化的最优传输距离),并结合图拉普拉斯正则项,使得分解得到的基矩阵U和系数矩阵V不仅能很好地重构原始数据,还能保留样本间的局部几何结构。
该函数SDNMF_Multi实现了完整的乘法迭代更新过程,这是非负矩阵分解中最常用、最稳定的优化策略之一,能够自然保证U和V的非负性,同时收敛速度较快。
算法迭代流程详解
初始化:
若未提供初始U和V,则随机生成正值矩阵。
调用NormalizeUV进行归一化处理(支持L1或L2范数,可选择对U或V归一化),确保分解的唯一性和数值稳定性。
预计算:
根据距离矩阵M计算核矩阵K = exp(-λ M - 1)。
对X和重构矩阵进行γ次幂变换(X^γ),这是Sinkhorn距离中熵正则化的关键技巧。
若有图正则(alpha > 0),构建度矩阵D并缩放W。
主迭代循环: