非负矩阵分解

基本思想

非负矩阵分解(Non-negative Matrix Factorization)于 1999 年由 Lee 和 Seung 发表于《Nature》上,其基本思想可以简单描述为:对矩阵中所有元素进行非负数的约束,即对于任意给定的非负矩阵 V,NMF 算法能够寻找一个非负矩阵 W 和一个非负矩阵 H,使 V=WH。原始矩阵中的列向量可以解释为矩阵 W 列向量的加权和,加权系数为 H 中对应列向量的元素。这种基于向量组合的表示方式具有很直观的语义解释,反映人类思维中「局部构成整体」的概念。

矩阵分解的方法有很多,比如 PCA(主成分分析)、ICA(独立成分分析)、SVD(奇异值分解)、VQ(矢量量化)等。在这些方法中,原始矩阵 V 被近似分解为低秩的 V=WH 的形式,因子 W 和 H 中的元素可正可负,即使输入的初始矩阵的元素全为正,传统的秩削减算法也不能保证原始数据的非负性。在数学上,从计算的观点看,分解结果中存在负值是正确的,但负值元素在实际问题中往往是没有意义的(如图像、文档)。具体的比较参考文献 2。

算法

输入参数:V,r,MAXITER,其中 V 为被分解的矩阵,r 为降阶后 W 的秩,MAXITER 为迭代次数.

输出参数:W,H

1):初始化矩阵 W,H 为非负数,同时对  W 的每一列数据归一化.

2):for i=1:MAXITER

            a:更新 H 矩阵一行元素:H(i,j)=H(i,j)*(B'*X)(i,j)/(B'*B*H)(i,j)

            b:更新 W 的一列元素:W(k,j)=W(k,j)*(V*H')(k,j)/(W*H*H')(k,j);

             c :重新对 W 进行列归一化

3)end

参考文献

1. Lee D D, Seung H S. Learning the parts of objects by non-negative matrix factorization[J]. Nature, 1999, 401(6755): 788-791.

2. http://lijiancheng0614.github.io/2015/08/13/2015_08_13_NMF/

3. 科学网博客

4. http://blog.csdn.net/lilyth_lilyth/article/details/8958147

5. LDA和NMF的区别?

你可能感兴趣的:(非负矩阵分解)