在实际应用非负矩阵分解(NMF)或图正则化非负矩阵分解(GNMF)时,我们通常会先在训练集上学习基矩阵U,然后面对新来的测试数据时,需要快速得到其在同一低维空间中的表示V。这就是out-of-sample或测试阶段投影问题。
标准的NMF在测试阶段可以通过简单的非负最小二乘求解,但GNMF由于引入了图正则项,训练过程更复杂,直接对新样本重新优化整个目标函数会非常耗时且不现实。因此,一个高效的做法是:固定训练得到的基矩阵U,对新数据X_test求解V,使得X_test ≈ U * V^T,同时保持V非负。
今天分享的这个小函数GNMFtest正是实现这一功能的简洁高效工具。它假设U已经由GNMF训练好,直接通过闭式解的形式快速计算测试样本的低维系数矩阵V,非常适合在聚类、分类或检索任务中使用GNMF作为特征提取器时的测试流程。
函数的核心原理
给定训练得到的基矩阵U(mFea × k)和测试数据矩阵X(mFea × nTest),目标是求解:
min ||X - U V^T||² s.t. V ≥ 0这是一个典型的非负最小二乘问题(NNLS)。当U的列线性无关时,可以通过以下方式近似求解:
V^T = (U^T U)^-1 U^T X → 再强制非负:V^T = max(0, (U^T U)^-1 U^T X)即:
计算UTU = U^T * U(对称矩阵)
计算UTX = U^T * X
</