SVD
SVD역시 PCA와 유사한 행렬 분해 기법을 이용합니다. PCA의 경우 정방행렬(즉, 열의 크기가 같은 행렬)만을 고유벡터로 분해할 수 있지만, SVD는 정방행렬뿐만 아니라 행과 열의 크기가 다른 행렬에도 적용할 수 있습니다.
사이킷런의 TruncatedSVD 클래스는 사이파이의 svds와 같이 Truncated SVD연산을 수행해 원본 행렬을 분해한 U, sigma, Vt행렬을 반환하지는 않습니다. 사이킷런의 TruncatedSVD 클래스는 PCA 클래스와 유사하게 fit()와 transform()을 호출해 원본 데이터를 몇 개의 주요 컴포넌트로 차원을 축소해 변환합니다.
from sklearn.decomposition import TruncatedSVD, PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
%matplotlib inline
iris = load_iris()
iris_ftrs = iris.data
# 2개의 주요 component로 TruncatedSVD 변환
tsvd = TruncatedSVD(n_components=2)
tsvd.fit(iris_ftrs)
iris_tsvd = tsvd.transform(iris_ftrs)
# Scatter plot 2차원으로 TruncatedSVD 변환 된 데이터 표현. 품종은 색깔로 구분
plt.scatter(x=iris_tsvd[:,0], y= iris_tsvd[:,1], c= iris.target)
plt.xlabel('TruncatedSVD Component 1')
plt.ylabel('TruncatedSVD Component 2')
NMF
NMF는 Truncated SVD와 가티 낮은 랭크를 통한 행렬 근사(Low-Rank Approximation)방식의 변형입니다. NMF는 원본 행렬 내의 모든 원소 값이 모두 양수(0 이상)라는 게 보장되면 다음과 같이 좀 더 간단하게 두 개의 기반 양수 행렬로 분해될 수 있는 기법을 지칭합니다.
NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 도픽 도출 등의 영역에서 사용되고 있습니다.
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')
NMF도 SVD와 유사하게 이미지 압축을 통한 패턴 인식, 텍스트의 토픽 모델링 기법, 문서 유사도 및 클러스터링에 잘 사용됩니다. 또한 영화 추천과 같은 추천영역에 활발하게 적용됩니다.
사용자의 상품 평가 데이터 세트인 사용자-평가 순위 데이터 세트를 행렬 분해 기법을 통해 분해하면서 사용자가 평가하지 않은 상품에 대한 잠재적인 요소르 추출해 이를 통해 평가 순위(rank)를 예측하고, 높은 순위로 예측된 상품을 추천해주는 방식입니다.
'Lecture ML' 카테고리의 다른 글
머신러닝 강좌 #36] 군집화 - GMM(Gaussian Mixture Model) 소개 (0) | 2021.08.21 |
---|---|
머신러닝 강좌 #35] 군집화 - K평균 알고리즘과 실루엣 분석 (0) | 2021.08.21 |
머신러닝 강좌 #33] 차원 축소 : LDA(Linear Discriminant Analysis) (0) | 2021.08.17 |
머신러닝 강좌 #32] 차원 축소 : PCA(Principal Component Analysis) (0) | 2021.08.16 |
머신러닝 강좌 #31] 차원 축소 / Dimension Reduction (0) | 2021.08.16 |
머신러닝 강좌 #30] 회귀실습 - 캐글 주택 가격: 고급 회귀 기법 (1) | 2021.08.16 |
머신러닝 강좌 #29] 회귀실습 - 자전거 대여 수요 예측 (0) | 2021.08.16 |
머신러닝 강좌 #28] 로지스틱 회귀에 대해 (0) | 2021.07.09 |