강의

멘토링

커뮤니티

Inflearn Community Q&A

kingmbc's profile image
kingmbc

asked

[Revised Edition] The Complete Guide to Python Machine Learning

Matrix factorization practice using SVD and understanding NMF (Non Negative Matrix Factorization)

사이킷런에서의 TruncatedSVD, NMF 에서 리턴하는 값

Written on

·

180

0

안녕하세요.

사이킷런에서의 TruncatedSVD, NMF 에서

transform을 하면 리턴하는 값이

행렬 분해식에서 보면

A = U * Σ * Vt (SVD)

V = W * H (NMF) 

각각, U와 W 인건가요?

'''

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)

'''

통계머신러닝 배워볼래요? python

Answer 1

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Instructor

안녕하십니까, 

사이킷런에서 제공하는 TruncatedSVD와 NMF는 불친절하게도(?) 행렬 분해된 U   Σ  Vt나 W, H와 같은 개별 분해 행렬을 반환하지 않습니다. 사이킷런의 TruncatedSVD의 fit() 을 수행하면 내부적으로 원본 행렬을 U   Σ  Vt 로 분해하고, transform() 을 수행하면 이 U * Σ * Vt을 재 결합하여 차원 축소가 적용된 최종 변환 행렬만을 반환합니다.NMF 역시 마찬가지 입니다. 

반면에 사이파이의 svds (scipy.sparse.linalg import svds)는 개별 분해 행렬을 반환하고, 이를 재 결합(dot연산)하여 차원 축소를 수행할 수 있습니다.

감사합니다.

kingmbc's profile image
kingmbc

asked

Ask a question