非負因式矩陣分解

從數據中提取重要特徵的技術,被稱為非負矩陣因式分解。

基本介紹

  • 中文名:非負矩陣因式分解
  • 外文名:NMF
名稱來源,算法本質,特徵矩陣,數學描述,權重矩陣,算法介紹,原始碼,

名稱來源

非負矩陣因式分解,是因為通過這種方式計算出來的結果,也就是特徵和權重,都是非負數。
在現實中,這意味著所有的特徵值都必須是正數或者零。這有很明顯的現實性作用。

算法本質

非負矩陣因式分解,就是對目標矩陣進行因式分解,也就是通過找到兩個更小的矩陣,使得二者相乘的結果等於原來的矩陣。這兩個更小的矩陣分別是特徵矩陣和權重矩陣。

特徵矩陣

在該矩陣中,每個特徵對應一行,每個特徵值對應一列,它所對應的數字,代表了某個特徵的重要程度。

數學描述

對於任意給定的一個非負矩陣A,NMF算法能夠尋找到一個非負矩陣W和一個非負矩陣H,使得滿足A=WH,從而將一個非負的矩陣分解為左右兩個非負矩陣的乘積。

權重矩陣

該矩陣的作用是將特徵映射到原始矩陣。其中每一行對應原始矩陣的一組源數據,每一列對應一個特徵。

算法介紹

在大部分實際情況下,都找不到A=WH的絕對值。一般都是找到可用的近似值。
因為分解的結果不是完全精確的,W*H只是A的一個低秩估計,這是因為分解算法的本質就是尋找W、H使得A與W*H之間的平方最小。
D = pow(A-W*H)
非負矩陣因式分解常用的算法為模擬退火最佳化算法,生物遺傳算法,以及專門針對矩陣計算的 乘法更新法則算法。

原始碼

#計算 非負因式矩陣分解的結果和目標的擬合值
#author:范芳銘
def dif_cost(a,b):
dif=0
#計算結果
for i in range(shape(a)[0]):
for j in range(shape(a)[1]):
# 將差值的平方累加,也是曼哈頓距離
dif+=pow(a[i,j]-b[i,j],2)
return dif

相關詞條

熱門詞條

聯絡我們