我对NMF的理解是一个反反复复的过程,时懂时不懂,因此在这里简单记录下我目前清醒的认知。
NMF的基本思想可以简单描述为:对于任意给定的一个非负矩阵A,NMF算法能够寻找到一个非负矩阵U和一个非负矩阵V,使得满足 ,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。
分解前后可理解为:原始矩阵 的列向量是对左矩阵
中所有列向量的加权和,而权重系数就是右矩阵对应列向量的元素,故称 为基矩阵, 为系数矩阵。一般情况下 ( 矩阵的列数)的选择要比 小,满足 ,这时用系数矩阵代替原始矩阵,就可以实现对原始矩阵进行降维,得到数据特征的降维矩阵,从而减少存储空间,减少计算机资源。
原矩阵V中的一列向量可以解释为对左矩阵W中所有列向量(称为基向量)的加权和,而权重系数为右矩阵H中对应列向量中的元素。这种基于基向量组合的表示形式具有很直观的语义解释,它反映了人类思维中“局部构成整体”的概念。
比如原矩阵V第2行第4列的红色三角形是由矩阵W的第2行与矩阵H的第4列相乘的结果!
这也就不难理解维基百科中的介绍:
虽然NMF是一个很厉害的算法,但其实质是加权和,我们可以在原理上等效为基本的线性方程:
y 构成了原矩阵中的元素, a 系列值是权重, x 系列变量是特征。矩阵乘法中特征用列向量表示,权重系数用行向量表示,所以成了图中所看到的样子。