Factorizarea matriceală non-negativă (NMF)

Învățare nesupervizată în Python

Benjamin Wilson

Director of Research at lateral.io

Factorizarea matriceală non-negativă

  • NMF = "factorizare matriceală non-negativă"
  • Tehnică de reducere a dimensionalității
  • Modelele NMF sunt interpretabile (spre deosebire de PCA)
  • Ușor de interpretat înseamnă ușor de explicat!
  • Toate caracteristicile eșantioanelor trebuie să fie non-negative (>= 0)
Învățare nesupervizată în Python

Părți interpretabile

  • NMF exprimă documentele ca combinații de subiecte (sau „teme")

 

Casetă text: DataCamp is the first and foremost leader in Data Science Education offering skill-based training, pioneering technical innovation... semn aproximativ egal cu 0,6 ori casetă cu cuvintele program, r, python, function, method, plus 0,5 ori casetă cu cuvintele data, analysis, cluster, statistics, mean, plus 0,7 ori casetă cu cuvintele teaching, learn, lesson, lessons, course

Învățare nesupervizată în Python

Părți interpretabile

  • NMF exprimă imaginile ca combinații de tipare

 

casetă cu 3 dungi aproximativ egal cu 0,98 ori casetă cu o dungă plus 0,91 ori casetă cu o altă dungă plus 0,95 ori casetă cu o altă dungă

Învățare nesupervizată în Python

Utilizarea NMF din scikit-learn

  • Urmează modelul fit() / transform()
  • Trebuie specificat numărul de componente, ex. NMF(n_components=2)
  • Funcționează cu matrice NumPy și cu csr_matrix
Învățare nesupervizată în Python

Exemplu de matrice frecvențe cuvinte

  • Matrice frecvențe cuvinte, 4 cuvinte, mai multe documente
  • Prezența cuvintelor în fiecare document se măsoară cu „tf-idf"
    • „tf" = frecvența cuvântului în document
    • „idf" reduce influența cuvintelor frecvente

Matrice frecvențe cuvinte

Învățare nesupervizată în Python

Exemplu de utilizare NMF

  • samples este matricea frecvențelor de cuvinte
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Învățare nesupervizată în Python

Componentele NMF

  • NMF are componente
  • ... similar cu componentele principale din PCA
  • Dimensiunea componentelor = dimensiunea eșantioanelor
  • Valorile sunt non-negative
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Învățare nesupervizată în Python

Caracteristicile NMF

  • Valorile caracteristicilor NMF sunt non-negative
  • Pot fi utilizate pentru a reconstrui eșantioanele
  • ... combină valorile caracteristicilor cu componentele
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Învățare nesupervizată în Python

Reconstrucția unui eșantion

print(samples[i,:])
[ 0.12  0.18  0.32  0.14]
print(nmf_features[i,:])
[ 0.15  0.12]

Componentele NMF înmulțite cu valoarea caracteristicii și adunate

Învățare nesupervizată în Python

Reconstrucția eșantionului

  • Înmulțiți componentele cu valorile caracteristicilor și adunați
  • Poate fi exprimat și ca produs de matrice
  • Aceasta este "Factorizarea Matriceală" din "NMF"
Învățare nesupervizată în Python

NMF se aplică doar pe date non-negative

  • Frecvențele cuvintelor în fiecare document
  • Imagini codificate ca matrice
  • Spectrograme audio
  • Istoricul achizițiilor pe site-uri de e-commerce
  • ... și multe altele!
Învățare nesupervizată în Python

Să exersăm!

Învățare nesupervizată în Python

Preparing Video For Download...