Broccoli's House

#3-(3) 비지도 변환 : 비음수 행렬 분해(NMF) 본문

공부/머신러닝

#3-(3) 비지도 변환 : 비음수 행렬 분해(NMF)

김콜리 2018. 2. 3. 23:53

※ 이 글의 내용은 O'REILLY의 <파이썬 라이브러리를 활용한 머신러닝> 책을 기반으로 한다.




비지도 변환 : NMF(비음수 행렬 분해)




  • 비음수 행렬 분해
 - 비음수 행렬 분해(Non-negative Matrix Factorization) : 음수가 포함되지 않은, 전체 원소가 양수인 행렬 V를 음수를 포함하지 않는 행렬 W와 H의 곱으로 분해하는 알고리즘이다. 행렬에 음수가 없으면 분해한 결과 행렬을 찾기 쉽게 만든다. 일반적으로 행렬 분해는 정확한 해가 없기 때문에, 이 알고리즘은 대략적인 해를 구하게 된다. 

 - NMF 알고리즘은 PCA와 유사하고 차원 축소에도 사용할 수 있다. PCA처럼 어떤 성분의 가중치 합으로 각 데이터 포인트를 나타낼 수 있다. 다만 PCA에서는 데이터의 분산이 가장 크고 수직인 성분을 찾았다면, NMF에서는 음수가 아닌 성분과 계수 값을 찾는다. 즉, 주성분과 계수가 모두 0보다 크거나 같아야 한다. 당연하게도, 이 방식은 음수가 아닌 특성을 가진 데이터에만 적용할 수 있다.


 - 간단하게 말해서 NMF와 PCA 모두 알고리즘이 생성한 일정 개수의 성분을 사용해 데이터의 특성을 분해하여 차원을 축소할 수 있지만, PCA는 최대 분산의 방향을 주성분이라 하여 성분 간의 우열이 있는 반면 NMF는 특성이 양수이기만 하면 성분의 우열이 없이 특징을 나눌 수 있는 것이다. 또한 행렬을 어떻게 나누냐에 따라서 성분의 개수 모두 변경이 가능하다.





 - 행렬 W의 각 열은 데이터의 특성이 되고, 행은 '특성에 대한 적합도', 즉 특성에 대한 가중치를 나타낸다. 행렬 H의 각 행은 특성이 되고, 열은 '특성에 대한 중요도'를 나타낸다.



 


 - PCA를 사용할 때와는 달리 NMF로 데이터를 다루려면 주어진 데이터가 양수인지 확인해야 한다. 이 말은 데이터가 원점에서 상대적으로 어디에 놓여있는 지가 NMF에서는 중요하다는 뜻이다. 따라서 원점에서 데이터로 가는 방향을 추출한 것으로 음수가 포함되지 않은 성분을 이해할 수 있다. 


 - 왼쪽 그래프는 성분이 둘인 NMF로, 데이터 세트의 모든 포인트를 양수로 이루어진 두 개의 성분으로 표현할 수 있다. 즉 특성의 개수만큼 성분이 많다면, 알고리즘은 데이터의 각 특성 끝에 위치한 포인트를 가리키는 방향을 선택한다. 우측의 그래프는 하나의 성분만을 사용한 것이다. 하나의 성분만을 사용한다면 NMF는 데이터를 가장 잘 표현할 수 있는 평균으로 향하는 성분을 만든다. PCA와는 반대로 성분의 개수를 줄이면 특정 방향이 제거될  뿐만 아니라 전체 성분이 완전히 바뀌어버린다. 

Comments