前言
非負矩陣分解顧名思義:是一個矩陣分解,并且分解矩陣非負。看起來這句話給人的信息量不大,背后卻能挖掘NMF為什么會被提出且廣泛被運用的原因。
首先是NMF是一個矩陣分解,它和PCA(主成分分析)、ICA(獨立成分分析)、SVD(奇異值分解)和VQ(矢量量化)等矩陣分解一樣:在當前數據量龐大且巨大的時代,對數據的維數進行消減和高濃度壓縮十分重要。
其次是為什么非負,在上述提到的矩陣分解方法中,原始的大矩陣V被近似分解為低維(秩)的V=WH形式。這些方法的共同特點是,因子W和H中的元素可為正或負,即使輸入的初始矩陣元素是全正的,傳統的秩削減算法也不能保證原始數據的非負性。在數學上,從計算的觀點看,分解結果中存在負值是正確的,但負值元素在實際問題中往往是沒有意義的。例如圖像數據中不可能有負值的像素點;在文檔統計中,統計個數也不可能是負值。
基本思想?
因此,NMF的基本思想就是:對于任意給定的一個非負矩陣V,找到兩個非負矩陣W,H,使得一個非負的矩陣分解為左右兩個非負矩陣的乘積。
數學上:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
同時要求矩陣W,H非負。
如果你僅僅知道什么是NMF,到這里就有現成的工具包供你調用,你也能得到想要的結果(W,H)。但為什么會保證得到的結果一定是正的,并且怎么得到解都對我們理解NMF有著很大幫助。這也是工作學習一直值得提倡的:授之以魚不如授之以漁。
數學模型與求解
既然我們的目的是為了找到兩個非負矩陣使得它們的乘積等于原矩陣,那么就可以變成求解下面的最小化問題:
? ??????????????????????????????????????????????????????????????????????????????????????
? ????????????????????????????????????????????????????????????????????????????????????????
這種形式的問題,我們首先要想到的梯度下降來求解。而基于梯度下降的方法,加減運算是無法保證非負的。但事實上,我們可以基于乘法運算來保證與梯度下降是等價的。
首先上述損失函數能夠寫成:
? ??????????????????????????????????????????????????????????????????????????????
然后對其求梯度:
? ??????????????????????????????????????????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
再依據梯度下降的思路:

令? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
代入上述的迭代方程就能夠得到H矩陣的更新形式。

W矩陣的求解過程和H是一樣的,這里就不在重復敲公式了 - -。只給出最后的更新形式,有興趣的自己推導

代碼實現只要根據上述兩個迭代公式從初始隨機產生的H,W一步步迭代找到最優(yōu)值就行。
這樣,基于非負矩陣分解的原理和求解過程就了然于胸了~
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。