ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Matlab实现GNMF测试阶段投影:将新数据映射到低维表示

Matlab实现GNMF测试阶段投影:将新数据映射到低维表示

在实际应用非负矩阵分解(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)

即:

  1. 计算UTU = U^T * U(对称矩阵)

  2. 计算UTX = U^T * X

    </
返回列表