NMF(Non-Negative Matrix Factorization)
NMF 개요
- NMF는 TruncatedSVD와 같이 낮은 Rank를 통한 행렬 근사 방식의 변형이다.
- NMF는 원본 행렬 내의 모든 원소값이 양수라는게 보장되면 더 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법이다.
- NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출 등의 영역에서 사용되고 있다.
In [1]:
from sklearn.datasets import load_iris
from sklearn.decomposition import NMF
import matplotlib.pyplot as plt
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')
Out[1]:
Text(0, 0.5, 'NMF Component 2')
NMF도 SVD와 유사하게 이미지 압축을 통한 패턴 인식, 텍스트의 토픽 모델링 기법, 문서 유서도 및 클러스터링에 잘 사용된다.
또한 영화 추천과 같은 추천 영역에 활발하게 적용된다.
→ 사용자의 상품 평가 데이터셋인 사용자-평가 순위 데이터셋을 행렬 분해 기법을 통해 분해하면서 사용자가 평가하지 않은 상품에 대한 잠재적인 요소를 추출해 이를 통해 평가 순위를 예측하고, 높은 순위로 예측된 상품을 추천해주는 방식
(이를 잠재 요소 기반의 추천이라고 한다)
차원 축소는 단순히 피처의 개수를 줄이는 개념보다는 이를 통해 데이터를 잘 설명할 수 있는 잠재적인 요소를 추출하는 데 큰 의미가 있다.
'Data Science > 파이썬 머신러닝 완벽 가이드' 카테고리의 다른 글
[sklearn] (43) 군집 평가(Cluster Evaluation), 실루엣 계수(Silhouette Score) (0) | 2023.07.19 |
---|---|
[sklearn] (42) 군집화, K-평균 알고리즘, K-Means Clustering (0) | 2023.07.18 |
[sklearn] (40) 차원 축소, SVD(Singular Value Decomposition) (0) | 2023.07.17 |
[sklearn] (39) 차원 축소, LDA(Linear Discriminant Analysis) (0) | 2023.07.17 |
[sklearn] (38) 차원 축소, PCA(Principal Component Analysis) (0) | 2023.07.14 |