250x250
Link
๋‚˜์˜ GitHub Contribution ๊ทธ๋ž˜ํ”„
Loading data ...
Notice
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Data Science LAB

[Python]NMF ๋ณธ๋ฌธ

๐Ÿ›  Machine Learning/์ฐจ์› ์ถ•์†Œ

[Python]NMF

ใ…… ใ…œ ใ…” ใ…‡ 2022. 3. 8. 15:33
728x90

NMF ๊ฐœ์š”

NMF๋Š” Truncated SVD์™€ ๊ฐ™์ด ๋‚ฎ์€ ๋žญํฌ๋ฅผ ํ†ตํ•œ ํ–‰๋ ฌ ๊ทผ์‚ฌ ๋ฐฉ์‹์˜ ๋ณ€ํ˜•์ด๋‹ค. NMF๋Š” ์›๋ณธ ํ–‰๋ ฌ ๋‚ด์˜ ๋ชจ๋“  ์›์†Œ ๊ฐ’์ด ๋ชจ๋‘ 0 ์ด์ƒ์ด๋ผ๋Š”๊ฒŒ ๋ณด์žฅ๋˜๋ฉด ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‘ ๊ฐœ์˜ ์–‘์ˆ˜ ํ–‰๋ ฌ๋กœ ๋ถ„ํ•ด๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์„ ์ง€์นญํ•œ๋‹ค. 

 

4×6 ์›๋ณธ ํ–‰๋ ฌ V๋Š” 4×2 ํ–‰๋ ฌ W์™€ 2×6ํ–‰๋ ฌ H๋กœ ๊ทผ์‚ฌํ•ด ๋ถ„ํ•ด๋  ์ˆ˜ ์žˆ๋‹ค. ํ–‰๋ ฌ ๋ถ„ํ•ด(Matrix Factorization)๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ SVD์™€ ๊ฐ™์€ ํ–‰๋ ฌ ๋ถ„ํ•ด ๊ธฐ๋ฒ•์„ ํ†ต์นญํ•œ๋‹ค. ์ด์ฒ˜๋Ÿผ ํ–‰๋ ฌ ๋ถ„ํ•ด๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด W์™€ Hํ–‰๋ ฌ์„ ๊ธธ๊ณ  ๊ฐ€๋Š” ํ–‰๋ ฌW์™€ ์ž‘๊ณ  ๋„“์€ ํ–‰๋ ฌ H๋กœ ๋ถ„ํ•ด๋œ๋‹ค. ๋ถ„ํ•ด๋œ ํ–‰๋ ฌ์€ ์ž ์žฌ ์š”์†Œ๋ฅผ ํŠน์„ฑ์œผ๋กœ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š”๋ฐ, ๋ถ„ํ•ด ํ–‰๋ ฌ W๋Š” ์›๋ณธ ํ–‰์— ๋Œ€ํ•ด ์ด ์ž ์žฌ ์š”์†Œ์˜ ๊ฐ’์ด ์–ผ๋งˆ๋‚˜ ๋˜๋Š”์ง€์— ๋Œ€์‘ํ•˜๋ฉฐ, ๋ถ„ํ•ด ํ–‰๋ ฌ H๋Š” ์ด ์ž ์žฌ ์š”์†Œ๊ฐ€ ์›๋ณธ ์—ด๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ ๋๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. 

 

NMF๋Š” SVD์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ฐจ์› ์ถ•์†Œ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€ ๋ณ€ํ™˜ ๋ฐ ์••์ถ•, ํ…์ŠคํŠธ์˜ ํฌํ‹ฑ ๋„์ถœ ๋“ฑ์˜ ์˜์—ญ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

 

iris data์— ์ ์šฉ

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")

iris ๋ฐ์ดํ„ฐ๋ฅผ NMF๋ฅผ ํ†ตํ•ด 2๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์‹œ๊ฐํ™” ํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. 

728x90

'๐Ÿ›  Machine Learning > ์ฐจ์› ์ถ•์†Œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] SVD(Singular Value Decomposition)  (0) 2022.03.07
[Python] LDA(Linear Discriminant Analysis)  (0) 2022.03.07
[Python] PCA ์˜ˆ์ œ  (0) 2022.03.06
[Python] PCA(Principal Component Analysis)  (0) 2022.03.05
Comments