Factorisation non-négative de la matrice (NMF)

Apprentissage non supervisé en Python

Benjamin Wilson

Director of Research at lateral.io

Factorisation non-négative de la matrice

  • NMF = factorisation non-négative de la matrice
  • Technique de réduction de dimension
  • Les modèles NMF sont interprétables (contrairement à la PCA)
  • Facile à interpréter signifie facile à expliquer !
  • Cependant, toutes les caractéristiques de l'échantillon doivent être non négatives (>= 0)
Apprentissage non supervisé en Python

Éléments interprétables

  • La NMF représente les documents sous forme de combinaisons de sujets (ou « thèmes »)

 

Text box: DataCamp is the first and foremost leader in Data Science Education offering skill-based training, pioneering technical innovation... approximately equals sign 0.6 times text box with words program, r, python, function, and method, plus 0.5 times text box with words data, analysis, cluster, statistics, mean plus 0.7 times text box with words teaching, learn, lesson, lessons, and course

Apprentissage non supervisé en Python

Éléments interprétables

  • La NMF représente les images sous forme de combinaisons de motifs

 

box with 3 stripes approximately equals 0.98 times box with one stripe plus 0.91 times box with a different stripe plus 0.95 times box with a different stripe

Apprentissage non supervisé en Python

Utilisation de scikit-learn NMF

  • Suit le modèle fit() / transform()
  • Il est nécessaire de préciser le nombre de composants, par exemple : NMF(n_components=2)
  • Fonctionne avec les tableaux NumPy et avec csr_matrix
Apprentissage non supervisé en Python

Exemple de tableau de fréquence des mots

  • Tableau de fréquence des mots, 4 mots, nombreux documents
  • Mesurer la présence de mots dans chaque document à l'aide de "tf-idf"
    • "tf" = fréquence du mot dans le document
    • "idf" réduit l'influence des mots fréquents

Word frequency array

Apprentissage non supervisé en Python

Exemple d'utilisation de NMF

  • samples est le tableau de fréquence des mots
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Apprentissage non supervisé en Python

Composantes NMF

  • La NMF comprend des composants
  • … tout comme la PCA a des composantes principales
  • Dimension des composants = dimension des échantillons
  • Les entrées sont non négatives
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Apprentissage non supervisé en Python

Caractéristiques NMF

  • Les valeurs des caractéristiques NMF sont non négatives
  • Peut être utilisé pour reconstruire les échantillons
  • … associer les valeurs des caractéristiques aux composants
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Apprentissage non supervisé en Python

Reconstruction d'un échantillon

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

Components of NMF multiplied by feature value and added up

Apprentissage non supervisé en Python

Reconstruction d’échantillon

  • Multiplier les composants par les valeurs des caractéristiques, puis additionner
  • Peut également être exprimé comme un produit de matrices
  • Il s'agit de la « factorisation **de la matrice** » dans « NMF »
Apprentissage non supervisé en Python

La NMF s'applique uniquement aux données non négatives

  • Fréquence des mots dans chaque document
  • Images encodées sous forme de tableaux
  • Spectrogrammes audio
  • Historique des achats sur les sites de commerce électronique
  • … et bien d'autres encore !
Apprentissage non supervisé en Python

Passons à la pratique !

Apprentissage non supervisé en Python

Preparing Video For Download...