1. 程式人生 > >關於NMF(Non-negative Matrix Factorization )

關於NMF(Non-negative Matrix Factorization )

 著名的科學雜誌《Nature》於1999年刊登了兩位科學家D.D.Lee和H.S.Seung對數學中非負矩陣研究的突出成果。該文提出了一種新的矩陣分解思想――非負矩陣分解(Non-negative Matrix Factorization,NMF)演算法,即NMF是在矩陣中所有元素均為非負數約束條件之下的矩陣分解方法。該論文的發表迅速引起了各個領域中的科學研究人員的重視:一方面,科學研究中的很多大規模資料的分析方法需要通過矩陣形式進行有效處理,而NMF思想則為人類處理大規模資料提供了一種新的途徑;另一方面,NMF分解演算法相較於傳統的一些演算法而言,具有實現上的簡便性、分解形式和分解結果上的可解釋性,以及佔用儲存空間少等諸多優點。
  資訊時代使得人類面臨分析或處理各種大規模資料資訊的要求,如衛星傳回的大量影象、機器人接受到的實時視訊流、資料庫中的大規模文字、Web上的海量資訊等。處理這類資訊時,矩陣是人們最常用的數學表達方式,比如一幅影象就恰好與一個矩陣對應,矩陣中的每個位置存放著影象中一個畫素的空間位置和色彩資訊。由於實際問題中這樣的矩陣很龐大,其中存放的資訊分佈往往不均勻,因此直接處理這樣的矩陣效率低下,這對很多實際問題而言就失去了實用意義。為高效處理這些通過矩陣存放的資料,一個關鍵的必要步驟便是對矩陣進行分解操作。通過矩陣分解,一方面將描述問題的矩陣的維數進行削減,另一方面也可以對大量的資料進行壓縮和概括。

  在科學文獻中,討論利用矩陣分解來解決實際問題的分析方法很多,如PCA(主成分分析)、ICA(獨立成分分析)、SVD(奇異值分解)、VQ(向量量化)等。在所有這些方法中,原始的大矩陣V被近似分解為低秩的V=WH形式。這些方法的共同特點是,因子W和H中的元素可為正或負,即使輸入的初始矩陣元素是全正的,傳統的秩削減演算法也不能保證原始資料的非負性。在數學上,從計算的觀點看,分解結果中存在負值是正確的,但負值元素在實際問題中往往是沒有意義的。例如影象資料中不可能有負值的畫素點;在文件統計中,負值也是無法解釋的。因此,探索矩陣的非負分解方法一直是很有意義的研究問題,正是如此,Lee和Seung兩位科學家的NMF方法才得到人們的如此關注。
  NMF是一種新的矩陣分解演算法,它克服了傳統矩陣分解的很多問題,通過尋找上下文有意義的解決方法,提供解釋資料的更深看法。NMF通過尋找低秩,非負分解那些都為非負值的矩陣。這在現實的應用中有很多例子,如數字影象中的畫素一般為非負數,文字分析中的單詞統計也總是非負數,股票價格也總是正數等等。NMF的基本思想可以簡單描述為:對於任意給定的一個非負矩陣A,NMF演算法能夠尋找到一個非負矩陣U和一個非負矩陣V,使得滿足,從而將一個非負的矩陣分解為左右兩個非負矩陣的乘積。由於分解前後的矩陣中僅包含非負的元素,因此,原矩陣A中的一列向量可以解釋為對左矩陣U中所有列向量(稱為基向量)的加權和,而權重係數為右矩陣V中對應列向量中的元素。這種基於基向量組合的表示形式具有很直觀的語義解釋,它反映了人類思維中“區域性構成整體”的概念。研究指出,非負矩陣分解是個NP問題,可以劃為優化問題用迭代方法交替求解U和V。NMF演算法提供了基於簡單迭代的求解U,V的方法,求解方法具有收斂速度快、左右非負矩陣儲存空間小的特點,它能將高維的資料矩陣降維處理,適合處理大規模資料。利用NMF進行文字、影象大規模資料的分析方法,較傳統的處理演算法速度更快、更便捷。NMF思想的提出迅速得到了很多人的重視,並有很多將這種思想應用到實際中成功解決具體實際問題的例子。
  非負矩陣的具體演算法如下:

  輸入引數:X,R,MAXITER,其中X為被分解的矩陣,R為降階後B的秩,MAXITER為迭代次數

  輸出引數:B,H

  1):初始化矩陣B,H為非負數,同時對B的每一列資料歸一化

   2):for i=1:MAXITER

       a:更新H矩陣一行元素:H(i,j)=H(i,j)*(B'*X)(i,j)/(B'*B*H)(i,j)

      b:更新B的一列元素:B(k,j)=B(k,j)*(X*H')(k,j)/(B*H*H')(k,j);

                     c:重新對B進行列歸一化

       3)end

matlab源程式如下:

dim=size(X);                                    %計算x的規格
X=double(X);
B=10*rand(dim(1),r);                            %初始化BH,為非負數
B=B./(ones(dim(1),1)*sum(B));                   %歸一化B的每一列

H=10*rand(r,dim(2));

maxiter=100;                                    %最大迭代次數
for iter=1:maxiter
    H=H.*(B'*(X./(B*H)));
    B=B.*((X./(B*H))*H');
    B=B./(ones(dim(1),1)*sum(B));
end

效果如下:

    

                         原始圖片                                                                  分解後重構的圖片

參考文獻:

基於非負矩陣分解的人臉表情識別研究

非負矩陣分解:數學的奇妙力量

相片來自我大姨(攝於2005.02)

下一步嘗試採用NMF提取特徵。     

好文,轉自:http://fxy1211.blog.163.com/blog/static/68255322007826111015905/

相關推薦

關於NMFNon-negative Matrix Factorization

 著名的科學雜誌《Nature》於1999年刊登了兩位科學家D.D.Lee和H.S.Seung對數學中非負矩陣研究的突出成果。該文提出了一種新的矩陣分解思想――非負矩陣分解(Non-negative Matrix Factorization,NMF)演算法,即NMF是在矩陣中所有元素均為非負數約束條件之下的矩

Algorithms for Non-negative Matrix Factorization 非負矩陣分解

NIPS 2000 經典論文翻譯。 摘要 非負矩陣分解(NMF)是一種可以有效處理多變數資料的方法。本文介紹、分析了兩種不同的 NMF 演算法,這兩種演算法僅在更新規則(update rule)中使用的乘性因子(multiplicative factor)有所區別。其中一種可以對傳統的最小二乘誤

Bayesian non-negative matrix factorization核心過程推導

       最近閱讀了一篇老文章—Bayesian non-negative matrix factorization,是個論文集,本文在540-547頁,這篇文章用貝葉斯方法重做了一遍非負矩陣分解,

概率矩陣分解Probabilistic Matrix Factorization

 摘要 很多現有的協同過濾的方法既不能處理非常大的資料集,也不能容易地應對有非常少的評價的使用者。在這篇論文中,我們提出了概率矩陣分解(PMF)模型,它的規模與觀察值的數目線性相關,並且更重要的是,它在非常大的、稀疏的和非常失衡的Netflix資料集上表現優異。我們更進一步

矩陣分解MATRIX FACTORIZATION在推薦系統中的應用

前言 最近一段時間隱語義模型(Latent Factor Model,LFM)在推薦系統中的應用越來越廣泛,本文所介紹的矩陣分解方法也是基於這個隱語義模型。 這裡需要說明的一點是,這裡所說的矩陣分解並不是SVD,之前在這個問題糾結了很久,因為網上很多人還有周圍的人都把矩

【推薦演算法筆記二】矩陣因式分解Matrix Factorization

基於顯示反饋(explicit feedback)的推薦將使用者的顯式反饋記錄,記錄在一個評分矩陣中:矩陣中的數字代表使用者對物品的評分、?表示缺失值。如果我們能夠估計矩陣中每個?的值,我們就可以為每個使用者做推薦。為什麼選擇矩陣因式分解(Matrix Factorizati

論文閱讀——矩陣填補模型之深度矩陣分解Deep Matrix Factorization

1,論文相關資訊 Paper:Matrix completion by deep matrix factorization Journal:Neural Networks Year:2018 2,研究動機 (1)傳統的矩陣填補模型(matrix c

證明多項式複雜程度的非線性問題Non-deterministic Completeness Problem

NP就是Non-deterministic Polynomial的問題,也即是多項式複雜程度的非確定性問題。 有些計算問題是確定性的,比如加減 乘除之類,你只要按照公式推導,按部就班一步步來,就可以得到結果。但是,有些問題是無法按部就班直接地計算出來。比如,

吳恩達機器學習筆記59-向量化:低秩矩陣分解與均值歸一化Vectorization: Low Rank Matrix Factorization & Mean Normalization

接受 span amp 14. 實現 新的 mean 情況 rank 一、向量化:低秩矩陣分解     之前我們介紹了協同過濾算法,本節介紹該算法的向量化實現,以及說說有關該算法可以做的其他事情。   舉例:1.當給出一件產品時,你能否找到與之相關的其它產品。2.一位用

LeetCode 59. Spiral Matrix II 螺旋矩陣之二

question hms 參考 ger should rate spa 條件 日期 Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order

UVA 1608 Non-boring sequences 分冶+遞歸

iostream col 容易 不存在 ons mage 搜索 pos 子序列 一、題目概述 二、題目釋義 要求序列s的所有子序列,若所有這些子序列中均存在一個自己序列內是唯一的數,則稱這個序列s是不無聊的 三、思路分析 從序列s開始考慮,序列s的整個長度為n,若序列s中

博科300交換機不中斷non-disruptive固件升級

老版本 發現 process brocade 配置文件 交換機配置 希望 1.2 str HPE OEM Brocade 300,當前的固件版本v6.4.1b,需要升級到v7.4.2b。官方建議的升級路徑:v6.4.1b>v7.0.1a>v7.1.2b>v

如何在Unity中開發Leap Motion桌面版Non-VRAPP

互動 pre camera pmo pca face color asset ive 最近因需要,翻出幾年前的Leapmotion感測器,準備用Unity3D做個互動APP,於是連上官網下載SDK。等下載下來一安裝調試,瞬間傻眼,居然要求VR設備。我們Lab倒是不缺VR,有

HihoCoder1336 Matrix Sum樹狀數組

you 輸出 val ostream ace sin const begin 二維數組 HihoCoder1336 Matrix Sum 描述 You are given an N × N matrix. At the beginning every element is

HDU - 6314 Matrix廣義容斥原理

bsp tar std sdn spa -i const long span http://acm.hdu.edu.cn/showproblem.php?pid=6314 題意 對於n*m的方格,每個格子只能塗兩種顏色,問至少有A列和B行都為黑色的方案數是多少。 分析

LeetCode 240. 搜尋二維矩陣 IISearch a 2D Matrix II

題目描述   編寫一個高效的演算法來搜尋 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性: 每行的元素從左到右升序排列。 每列的元素從上到下升序排列。 示例: 現有矩陣 matrix 如下: [

POJ 3422 - Kaka's Matrix Travels最小費用流

題目連結 https://cn.vjudge.net/problem/POJ-3422 【題意】 給出一個N*N的矩陣,然後從左上角走到右下角,每次走只能是往下或者往右走,走一次就將這個位置上的數字加到sum和中,然後這個位置的數字置為0。從左上到右下走K次,問最大和。 【思路】 最

graph isomorphicusing adjacency matrix

圖同構(isomorphic)的定義:(不理解直接跳過即可) if and only if there exists a bijection alpha from vertex set of G to the vertex set of H,such that alpha of u,a

leet Reshape the Matrix

Title:Reshape the Matrix    566 Difficulty:Easy 原題leetcode地址:https://leetcode.com/problems/array-partition-i/   1. 採用了一位陣列作為中

leetcode Non-decreasing Array

Title:Non-decreasing Array    665 Difficulty:Easy 原題leetcode地址:https://leetcode.com/problems/non-decreasing-array/   1.