TOP
class="layout-aside-left paging-number">
본문 바로가기
[파이썬 Projects]/<파이썬 머신러닝>

[머신러닝] 차원 축소 - NMF

by 기록자_Recordian 2024. 10. 24.
728x90
반응형
차원 축소란?
 

[머신러닝] 차원 축소(Dimension Reduction)

차원 축소(Dimension Reduction)차원 축소의 중요한 의미는차원 축소를 통해 좀 더 데이터를 잘 설명할 수 있는잠재적인 요소를 추출하는 데 있다.차원 축소: 매우 많은 피처로 구성된 다차원 데이터

puppy-foot-it.tistory.com


NMF(Non-Negative Matrix Factorization, 비음수 행렬 분해)

 

비음수 행렬 분해(Non-negative matrix factorization, NMF)는 음수를 포함하지 않은 행렬 V를 음수를 포함하지 않은 행렬 W와 H의 곱으로 분해하는 알고리즘이다. 행렬이 음수를 포함하지 않는 성질은 분해 결과 행렬을 찾기 쉽게 만든다. 일반적으로 행렬 분해는 정확한 해가 없기 때문에 이 알고리즘은 대략적인 해를 구하게 된다. 비음수 행렬 분해는 컴퓨터 시각 처리, 문서 분류, 음파 분석, 계량분석화학, 추천 시스템 등에 쓰인다.

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

 

NMF는 Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사(Low-Rank Approximation) 방식의 변형이다. NMF는 원본 행렬 내의 모든 원소 값이 모두 양수(0 이상)라는 게 보장되면 좀 더 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법을 지칭한다.

행렬 분해(Matrix Factorization)는 일반적으로 SVD와 같은 행렬 분해 기법을 통칭하는 것인데, 행렬 분해를 하게 되면 W 행렬과 H 행렬은 일반적으로 아래와 같이 분해되며, 이렇게 분해된 행렬은 잠재 요소를 특성으로 가지게 된다.

  • 길고 가는 행렬 W 즉, 원본 행렬의 행 크기와 같고 열 크기보다 작은 행렬 ▶ 원본 행에 대해서 이 잠재 요소의 값이 얼마나 되는지에 대응
  • 작고 넓은 행렬 H 즉, 원본 행렬의 행 크기보다 작고 열 크기와 같은 행렬 ▶ 이 잠재 요소가 원본 열(원본 속성)로 어떻게 구성됐는지를 나타내는 행렬

사이킷런에서 NMF는 NMF 클래스를 이용해 지원된다.

 

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

from sklearn.decomposition import NMF
from sklearn.datasets import load_iris
import pandas as pd
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')


다음 내용

 

[머신러닝] 군집화 (Clustering)

군집화(Clustering) [군집]군집은 비슷한 샘플을 클러스터 또는 비슷한 샘플의 그룹으로 할당하는 작업으로, 데이터 분석, 고객 분류, 추천 시스템, 검색 엔진, 이미지 분할, 준지도 학습, 차원 축소

puppy-foot-it.tistory.com


[출처]

파이썬 머신러닝 완벽 가이드

위키백과

728x90
반응형