NMF(Non - Negative Matrix Factorization)


NMF는 Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사 방식의 변형이다.

NMF는 원본 행렬 내의 모든 원소 값이 모두 양수라는것이 보장되면 다음과 같이 좀 더 간단하게 두 개의 기반 양수 행렬로 분해 될 수 있는 기법을 지칭한다.

이렇게 분해된 행렬은 잠재 요소를 특성으로 가지게 된다.

분해 행렬 W는 원본 행에 대해서 이 잠재 요소에 값이 얼마나 되는지에 대응하며, 분해 행렬 H는 이 잠재 요소가 원본 열 (즉, 원본속성)으로 어떻게 구성됐는지를 나타내는 행렬이다.

NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출등의 영역에서 사용되고 있다. 사이킷런에서 NMF는 NMF 클래스를 이용해 지원한다.

붓꽃 데이터를 NMF를 이용해 2개의 컴포넌트로 변환하고 이를 시각화 해보자.

NMF

from sklearn.decomposition import NMF
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
%matplotlib inline

iris = load_iris()
iris_ftrs = iris.data
nmf = NMF(n_components=2)
nmf.fit(iris_ftrs)
iris_nmf = nmf.transform(iris_ftrs)
plt.scatter(x=iris_nmf[:,0], y= iris_nmf[:,1], c= iris.target)
plt.xlabel('NMF Component 1')
plt.ylabel('NMF Component 2')
Text(0,0.5,'NMF Component 2')

NMF도 SVD와 유사하게 이미지 압축을 통한 패턴 인식, 텍스트의 토픽 모델링 기법, 문서 유다소 및 클러스터링에 잘 사용된다. 또한 영화 추천과 같은 추천 영역에 활발하게 적용 된다.

사용자의 상품 평가 데이터 셋인 사용자-평가 순위 데이터 셋을 행렬 분해 기법을 통해 분해하면서 사용자가 평가하지 않은 상품에 대한 잠재적인 요소를 추출해 이를 통해 평가 순위를 예측하고, 높은 순위로 예측된 상품을 추천해주는 방식이다.

'머신러닝' 카테고리의 다른 글

군집 평가 - 실루엣 분석  (2) 2020.08.24
군집화 - K-Means  (0) 2020.08.24
Truncated SVD  (0) 2020.08.23
SVD  (0) 2020.08.23
차원축소 / PCA(주성분 분석)  (0) 2020.08.22

+ Recent posts