非負矩陣分解(non-negative matrix factorization),作為一種非監督式的降維方法,其主要思想正如其名字描述的那樣:將乙個非負原始矩陣分解為兩個非負矩陣的積(vm
∗n=w
m∗r⋅
v′r∗
n vm∗
n=wm
∗r⋅v
r∗n′
)。矩陣v
v
為原始資料矩陣,包含
n' role="presentation" style="position: relative;">n
n個樣本,共
m m
個特徵。矩陣v′
' role="presentation" style="position: relative;">v′v
′為降維後的資料矩陣,包含
n n
個樣本,共
r' role="presentation" style="position: relative;">r
r個特徵(
r<
m r
<
m)。矩陣
w w
為權重係數矩陣。
要求降維後的矩陣元素非負,在現實應用中非常廣泛,如影象或文字資料,一些負值是沒有意義的。
找到合適的矩陣
w' role="presentation" style="position: relative;">ww和
v′v
′使得: e=
v−w⋅
v′e =v
−w⋅v
′||e
||| |e
||
最小,e
e
矩陣也被稱為雜訊矩陣,假設雜訊服從不同的概率分布,通過最大似然函式會得到不同型別的目標函式,或者使用基於kl散度的優化目標,優化目標函式即可得到目標矩陣。
細節可以參考:nmf
可以使用sklearn庫中的nmf類,其考慮了不同的初始化方,優化的目標函式以及迭代的學習率等問題。
非負矩陣分解 NMF 簡介
非負矩陣分解,顧名思義就是,將非負的大矩陣分解成兩個非負的小矩陣。回顧矩陣分解本身,在 公式 1 中的v是乙個n m維的矩陣,其中每一列就是 那麼非負和其它的有什麼不同呢?下面我就盜一張圖來直觀地展示幾種矩陣分解方法的效果差異。出自lee and seung 1999 圖中就對比了三種方法的區別。v...
python 非負矩陣分解 NMF
非負矩陣分解是矩陣中所有元素均為非負數約束條件下的矩陣分解,其基本思想 給定乙個非負矩陣v,nmf能夠找到乙個非負矩陣w和乙個非負矩陣h,使得矩陣w和矩陣h的乘積近似等於矩陣v中的值。h矩陣 係數矩陣 nmf廣泛應用於影象分析,文字挖掘和語音處理鄰域。nmf矩陣分解優化目標 最小化w矩陣h矩陣的乘積...
NMF演算法 非負矩陣分解演算法 python實現
nmf演算法 非負矩陣分解演算法。目標 將乙個大矩陣分解成兩個稍小的矩陣 利用矩陣的乘法 要求 待分解矩陣不能有負值。因為負值對於資料是無效的。假定有乙個元資料矩陣v,目標是將其分解成兩個非負矩陣w和h相乘的形式。v w h 這邊需要注意一些維度也就是角標,我就會直接寫了 其中,w稱為權重係數矩陣,...