La NMF apprend des parties interprétables

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Exemple : la NMF apprend des parties interprétables

  • Tableau de fréquence des mots (tf-idf)
  • 20 000 articles scientifiques (lignes)
  • 800 mots (colonnes)

Tableau des fréquences de mots dans des articles

Unsupervised Learning in Python

Application de la NMF aux articles

print(articles.shape)
(20000, 800)
from sklearn.decomposition import NMF
nmf = NMF(n_components=10)
nmf.fit(articles)
NMF(n_components=10)
print(nmf.components_.shape)
(10, 800)
Unsupervised Learning in Python

Les composantes NMF sont des sujets

 

nmf.components_

Unsupervised Learning in Python

Les composantes NMF sont des sujets

 

une ligne de nmf.components_ sélectionnée et un diagramme à barres pour chaque mot où la hauteur représente le tf-idf

Unsupervised Learning in Python

Les composantes NMF sont des sujets

 

encadré avec mots principaux et valeurs : species 2.95, plant 1.05, plants 0.78, etc.

Unsupervised Learning in Python

Les composantes NMF sont des sujets

 

nouvel encadré avec mots principaux d'une autre ligne de nmf.components_ : university 3.57, prof 1.19, college 0.88, etc.

Unsupervised Learning in Python

Composantes de la NMF

  • Pour les documents :
    • Les composantes NMF représentent des sujets
    • Les caractéristiques NMF combinent des sujets en documents
  • Pour les images, les composantes NMF sont des parties d'images

 

boîte avec 3 bandes ≈ 0,98 × boîte avec une bande + 0,91 × boîte avec une autre bande + 0,95 × boîte avec une autre bande

Unsupervised Learning in Python

Images en niveaux de gris

  • Image « niveaux de gris » = pas de couleurs, seulement des gris
  • Mesurer la luminosité des pixels
  • Représenter par une valeur entre 0 et 1 (0 = noir)
  • Convertir en tableau 2D

rectangle 2 par 3 de pixels avec divers degrés de blanc/noir/gris

Unsupervised Learning in Python

Exemple d'image en niveaux de gris

  • Une image 8×8 de la lune en niveaux de gris, écrite comme un tableau

 

illustration pixellisée de la lune avec flèche pointant vers un tableau de nombres de mêmes dimensions, entre 0 et 1

Unsupervised Learning in Python

Images en niveaux de gris comme tableaux plats

  • Énumérer les entrées
  • Ligne par ligne
  • De gauche à droite, de haut en bas

boîte de 2 par 3 pixels pointant vers un tableau de nombres

Unsupervised Learning in Python

Images en niveaux de gris comme tableaux plats

  • Énumérer les entrées
  • Ligne par ligne
  • De gauche à droite, de haut en bas

boîte 2 par 3 pixels pointant vers un tableau 2 par 3 de nombres pointant vers un tableau 1 par 6 de nombres

Unsupervised Learning in Python

Encoder une collection d'images

  • Collection d'images de même taille
  • Encoder en tableau 2D
  • Chaque ligne correspond à une image
  • Chaque colonne correspond à un pixel
  • … on peut appliquer la NMF !

Une ligne de nmf.components_ qui représente l'image 2×3 pixels

Unsupervised Learning in Python

Visualiser des échantillons

print(sample)
[ 0.   1.   0.5  1.   0.   1. ]
bitmap = sample.reshape((2, 3))
print(bitmap)
[[ 0.   1.   0.5]
 [ 1.   0.   1. ]]
from matplotlib import pyplot as plt
plt.imshow(bitmap, cmap='gray', interpolation='nearest')
plt.show()
Unsupervised Learning in Python

Passons à la pratique !

Unsupervised Learning in Python

Preparing Video For Download...