Non-Negative Matrix Factorization (NMF) : Benjamin Wilson
Non-Negative Matrix Factorization (NMF) : Benjamin Wilson
factorization (NMF)
UNSUPERVISED LEARNING IN PYTHON
Benjamin Wilson
Director of Research at lateral.io
Non-negative matrix factorization
NMF = "non-negative matrix factorization"
NMF(alpha=0.0, ... )
nmf_features = model.transform(samples)
print(model.components_)
print(nmf_features)
[[ 0. 0.2 ]
[ 0.19 0. ]
...
[ 0.15 0.12]]
print(nmf_features[i,:])
[ 0.15 0.12]
Audio spectrograms
Benjamin Wilson
Director of Research at lateral.io
Example: NMF learns interpretable parts
Word-frequency array articles (tf-idf)
(20000, 800)
NMF(alpha=0.0, ... )
print(nmf.components_.shape)
(10, 800)
Convert to 2D array
Row-by-row
Row-by-row
Encode as 2D array
[ 0. 1. 0.5 1. 0. 1. ]
[[ 0. 1. 0.5]
[ 1. 0. 1. ]]
Benjamin Wilson
Director of Research at lateral.io
Finding similar articles
Engineer at a large online newspaper
But all versions lie on the same line through the origin
import pandas as pd
norm_features = normalize(nmf_features)
df = pd.DataFrame(norm_features, index=titles)
current_article = df.loc['Dog bites man']
similarities = df.dot(current_article)
Benjamin Wilson
Director of Research at lateral.io
Congratulations!
UNSUPERVISED LEARNING IN PYTHON