비음수 행렬 분해(Non-negative matrix factorization, NMF)는 음수를 포함하지 않은 행렬 V를 음수를 포함하지 않은 행렬 W와 H의 곱으로 분해하는 알고리즘이다.[1] 행렬이 음수를 포함하지 않는 성질은 분해 결과 행렬을 찾기 쉽게 만든다. 일반적으로 행렬 분해는 정확한 해가 없기 때문에 이 알고리즘은 대략적인 해를 구하게 된다.
비음수 행렬 분해는 컴퓨터 시각 처리, 문서 분류, 음파 분석, 계량분석화학, 추천 시스템 등에 쓰인다.
계량분석화학에서 자기 모델링 그래프 분해라는 이름으로 오랫동안 행해져 왔다. 이 경우 오른쪽 행렬에 있는 벡터들은 떨어져 있는 값보다는 연속적인 값을 갖게 된다. 또 한 핀란드의 연구자들은 양수 행렬 분해라는 이름으로 1990년대 중에 이 알고리즘을 연구해왔다. 연구자 Lee와 Seung이 이 분해의 성질과 두 개의 간단한 분해 알고리즘을 비음수 행렬 분해로 소개한 뒤 널리 알려졌다.
일반적으로 W의 열 개수와 H의 행 개수가 WH=V가 되도록 결정된다. 기존 행렬 V와 분해한 비음수 행렬 W와 H의 곱과의 차이를 오차 U라고 이야기한다. V=WH+U. U의 원소들은 양수나 음수가 될 수 있다.
W와 H의 크기가 V보다 작기 때문에 저장하거나 다루기에 용이하다. 또 V를 원래 정보보다 상대적으로 적은 정보로 표현하여 분해한 행렬 하나가 전체 정보의 대략적인 정보를 제시할 수 있다.
어떤 비용 함수를 사용하느냐, 어떤 정형화 기법을 사용하느냐에 따라 분해의 종류가 나뉜다. 널리 쓰이는 두 가지 분해 방법에는 Lee와 Seung가 연구한 최소 제곱 오차와 양수 행렬에 대한 쿨백-라이블러 발산(Kullback–Leibler divergence) 방법을 이용한 것이 있다. 두 방법은 다른 알고리즘으로 취급된다.
가장 보편적인 최소 제곱 오차를 이용한 분해를 아래에 서술한다. 다른 분해의 방법으로는 총 표준 변화를 이용한 방법이 있다. L1 정칙화가 최소 제곱 오차에 같이 사용되었을 때 성긴 코딩과 형태가 유사하여 음수가 아닌 성긴 코딩이라고도 부른다.
비음수 행렬 분해는 입력 데이터를 한번에 다루는 특징이 있다. 따라서 이 알고리즘은 저장하기에 너무 크거나 스트리밍과 같은 데이터에 대해서는 적용하기 힘들다. 이렇게 많은 사용자나 많은 입력이 있거나 새로운 정보가 계속 들어와 계산을 새로 해야하는 경우에는 협업 필터링을 사용할 수도 있다. 이 때 비용 함수는 같을 수도 다를 수도 있지만 알고리즘은 달라져야 한다.
보조정리1의 를 보조정리2의 로 바꾸면 아래와 같은 최신화 규칙을 얻는다.
▽
보조정리2의 가 보조함수이므로, 보조정리1에 의해 함수 F는 비증가함수이다.
방정식을 풀면,
즉, H에 대한 최신화 규칙을 유도한 것이다.
보조정리1과 보조정리2의 W와 H의 위치를 바꿔주면 W에 대한 최신화 규칙 역시 쉽게 유도할 수 있다.
보조정리3에서의 함수 의 최솟값을 구하기 위해 미분값을 0으로 할 때의 h값을 찾는다.
그러므로
G가 보조 함수이므로, 함수 F는 최신화를 거듭할수록 그 함수값이 감소 내지 일정하게 유지된다. 위의 식을 행렬 형식으로 바꾸면, 발산값에서의 H 최신화 규칙과 동일한 것을 알 수 있다.
H와 W의 위치를 바꿔서, 발산값에서의 W의 최신화 규칙 역시 비증가함을 증명할 수 있다.
일반적으로 비음수 행렬 분해는 근사를 통해 이루어지지만, 추가적인 조건이 더해지면 정확한 행렬 분해를 얻을 수 있다.
1) 행렬 V가 자신의 계수와 같은 계수를 가진 단항 부분 행렬을 가지고 있을 때 정확한 비음수 행렬 분해를 구할 수 있다.
2) 행렬 V가 대칭성을 가지고 있으며 자신의 계수와 같은 계수를 가진 대각 부분 행렬을 가지고 있을 때, 정확한 비음수 행렬 분해를 구할 수 있다.
3) 행렬 W가 분리 조건을 만족하면 정확한 비음수 행렬 분해를 구할 수 있다.
비음수 행렬 분해는 군집 성질을 가진다. 즉, 이 행렬 분해는 입력 자료 행렬의 행들을 무조건 군집화한다.
구체적으로, 를 로 근사할 때 오차 함수를 최소화하는 방식을 택한다.
만약 라는 조건이 추가된다면, 위의 최소화 과정은 K-평균 군집화의 최소화과정과 동일-음이 아니라는 것만 제외하면-한 것이다.
최소 제곱 오차가 아닌 발산값을 비용 함수로 고려하는 경우에 이 행렬 분해는, 이미 대중적인 문서 군집 방법인 확률적 잠재 의미 분석과 동일하다.
Learning the parts of objects by non-negative matrix factorization에서는 비음수 행렬 분해를 이용하여 부분 기반 사진 분해를 하였다. 이 논문에서 비음수 행렬 분해를 벡터 정량화나 주성분 분석 기법과 비교했는데, 세 기법 모두 분해를 기반하고 있지만 제약 조건이 달라 결과가 모두 다르게 나왔다.
비음수 행렬 분해는 좀 더 일반적인 확률 모델인 다항 주성분 분석 기법과 동일시 될 수 있다. 특히, Kullback-Leibler 발산값을 최소화시키면, 비음수 행렬 분해는 확률적 잠재 의미 분석과 동일시 될 수 있다.
비음수 행렬 분해는 완화된 형태의 k 평균 알고리즘으로 동일시 할 수 있다. 이는 비음수 행렬 분해를 데이터 군집화에 사용하는 이론적 토대가 된다. 그러나 k-평균 알고리즘은 비음수이라는 제약 조건을 가지고 있지 않다는 차이가 있다.
비음수 행렬 분해는 텍스트 마이닝에 응용할 수 있다. 텍스트 마이닝에서 문서-용어 행렬은 문서에서 용어들의 가중치 정보를 담고 있다. 이 행렬은 비음수 행렬 분해를 이용하여 용어-요소 행렬과 요소-문서 행렬로 분해할 수 있다. 이 요소들은 문서의 내용으로부터 도출되고, 요소-문서 행렬은 관련 문서들의 정보 군집에 대한 정보를 담는다.
Ngoc-Diep Ho, Paul Van Dooren and Vincent Blondel (2008). “Descent Methods for Nonnegative Matrix Factorization”. arXiv:(영어) 0801.3199 (영어)|arxiv= 값 확인 필요 (도움말) [cs.NA].더 이상 지원되지 않는 변수를 사용함 (도움말)
Cédric Févotte, Nancy Bertin, and Jean-Louis Durrieu (2009). “Nonnegative Matrix Factorization with the Itakura-Saito Divergence: With Application to Music Analysis”. 《Neural Computation》 21 (3): 793–830 (영어). doi:10.1162/neco.2008.04-08-771. PMID18785855. CS1 관리 - 여러 이름 (링크)