알고리즘

Non negative Matrix Factorization ( NMF )

고요한하늘... 2009. 5. 20. 17:10

하나의 배열을 비음수( 양수 + 0 )으로 구성된 두개의 배열로 인수분해 하는 방법

 

A( M by N ) = W(M by K) X H( K by N )

 

 

W,H 행렬에 임의의 값을 넣는다.( ?(T) = Transpose )

W = ||W*H-A||

H = ||H(T)W(T)-A(T)||

 

W*H 가 A에 가장 가까워질때까지 위 연산을 반복한다.

 



NMF는 다변향 분석 알고리즘의 하나이고,선형대수학에서 행렬 X는 두개의 행렬로 인수분해된다.

행렬을 인수분해하는 것이 유일하지는 않고, 다른 제약조건의 통합에 의해 개발된 여러개의 방법들이 있다( eg. PCA, SVD )

NMF는 분해요소 W와 H의 값이 반드시 비음수여야 한다는 것이 다른 방법들과의 차이점이다.즉 모든 요소는 0이상의 값이어야 한다.

초기에 NMF는 1990년도 중반까지 양수분해(positive matrix factorization)라는 이름으로 Finnish그룹의 연구원에 의해 연구되었다.

NMF로써 널리 알려지게된건 Lee와 Seung에 의해 알고리즘의 특징이 연구되고, 상당히 단순하고 유용한 두가지 종류의 인수분해 방법을 발표하면서 부터이다.


Approximative non-negative matrix factorization

NMF에서 보통 W의 열의 수와 H의 행의 수는 X에 근사화된 WH의 산출물에 의해 선택된다.

X의 완전분해는 나머지 U와 비음수 행렬 W와 H의 총합이다.

그래서 X=WH+H가 되고 남머지 행렬의 값은 양수또는 음수가 될수 있다.

W와 H가 X보다 작아지면 쉽게 저장하고 다룰수 있다.


NMF의 여러가지 유형은 X와 WH사이의 차이값을 측정하는 비용함수를 사용함으로써 그리고 W와 H의 조정에 의해 발생한다. 

Lee와 Seung에 의해 연구된 두개의 단수한 차이함수는 Squared 에러(Frobenius norm)가  있다.



링크 : http://wyb330.egloos.com/4099071 

링크 : http://www.hiit.fi/node/70

링크 : http://www.codeproject.com/KB/WPF/NNMFSearchResultClusterin.aspx

동영상 강의 : http://videolectures.net/icml08_ghodsi_nmf/

동영상 강의 : http://mathnet.kaist.ac.kr/mathnet/vod_list7.php?no=423( real player 필요 )



-- 계속 --

'알고리즘' 카테고리의 다른 글

FP-TREE( Frequent Pattern Tree )  (0) 2009.06.02
NMF 테스트 결과  (0) 2009.05.28
LSH( Locality sensitive hashing )  (0) 2008.10.07
Expectation Maximization  (0) 2008.09.15
index-compression( relative-10 )  (0) 2007.12.14