python-nmf實(shí)現(xiàn)
參考
http://nimfa.biolab.si/

簡(jiǎn)單實(shí)現(xiàn)
需要下載包nimfa,然后在python上完成非負(fù)矩陣分解。首先先生成一個(gè)稀疏矩陣
[[1 0 2 4]
?[0.5?0 1 2]
?[4 0 5 6]]
然后進(jìn)行NMF非負(fù)矩陣分解,真實(shí)秩為2。代碼如下:
結(jié)果如下:

可以看出,分解前后矩陣的歐式矩陣誤差為1.5,可以看出有些位置的元素能夠很好的恢復(fù),有些位置的元素,分解恢復(fù)后誤差很大,比如第一個(gè)位置的元素。
下面試一下圖片的分解恢復(fù)效果。



可以看出,歸一化后能夠很好適用于圖片數(shù)據(jù),且能較好的恢復(fù)出原始圖片。

度量LSNMF
LSNMF?- Alternating nonnegative least squares matrix factorization using projected gradient method for subproblems?[Lin2007]

可以看出,該方法可以準(zhǔn)確恢復(fù)原始矩陣。

BMF矩陣分解
BMF?- Binary matrix factorization?[Zhang2007]。使用默認(rèn)參數(shù)、多次運(yùn)行和用于共識(shí)矩陣計(jì)算的因子跟蹤的 BMF。https://ranger.uta.edu/~chqding/papers/icdm07-binary.pdf。論文將標(biāo)準(zhǔn)的NMF推廣到BMF:給定一個(gè)二進(jìn)制輸入矩陣X,我們想把X分解成兩個(gè)滿足X≈WH的二進(jìn)制矩陣W,H。 BMF保留了X最重要的整數(shù)性質(zhì)。提出并研究了罰函數(shù)分解和閾值分解兩種分解方法。
