NMF——非负矩阵分解。如果你事先了解PMF[概率矩阵分解]的话,那么其实只要在PMF的基础上多加上一点,就是NMF了。
方法一:
在PMF中使用SGD【随机梯度下降】进行优化时,使用如下的迭代公式:
其中P、Q分别代表原始矩阵R的两个维度的隐含矩阵,在推荐应用中,一般讲P看做用户矩阵、Q看做物品矩阵。
从公式中不难看出,无论P矩阵还是Q矩阵都会出现负值的情况,上述公式并未对P、Q矩阵的值做任何限制。
在应用中,有时候需要分解出来的矩阵中不存在小于0的值,也即要求所有值非负。
怎么做到呢?其实很简单,在上述两个迭代公式中加个约束即可,如下公式:
很简单,是吧。这其实是非负矩阵分解实现中最常用的一种。
方法二:
在很早之前,大概是2001年的样子,Daniel D. Lee and H. Sebastian Seung.这两个家伙写了篇文章:
《Algorithms for non-negative matrix factorization》,其中讲了另外一种关于求解非负矩阵分解的方法,我们叫它迭代相乘法。
怎么做的呢?其实也很简单。
上一个方法中是用加减法来调整P、Q矩阵,既然加减不能保证非负,那用乘