NMF lernt interpretierbare Bestandteile

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Beispiel: NMF lernt interpretierbare Bestandteile

  • Worthäufigkeit-Array für Artikel (tf-idf)
  • 20.000 wissenschaftliche Artikel (Zeilen)
  • 800 Wörter (Spalten)

Wortfrequenz-Array der Artikel

Unsupervised Learning in Python

NMF auf die Artikel anwenden

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

NMF-Komponenten sind Themen

 

nmf.components_

Unsupervised Learning in Python

NMF-Komponenten sind Themen

 

Eine Reihe von nmf.components_ ausgewählt und ein Balkendiagramm für jedes Wort, wobei die Höhe den TF-IDF-Wert darstellt.

Unsupervised Learning in Python

NMF-Komponenten sind Themen

 

Box mit den häufigsten Wörtern und Werten: Arten 2,95, Pflanze 1,05, Pflanzen 0,78 usw.

Unsupervised Learning in Python

NMF-Komponenten sind Themen

 

Neue Box mit den Top-Wörtern aus verschiedenen Zeilen von nmf.components_: Universität 3,57, Prof. 1,19, Hochschule 0,88 usw.

Unsupervised Learning in Python

NMF-Komponenten

  • Für Dokumente:
    • NMF-Komponenten repräsentieren Themen.
    • NMF-Funktionen kombinieren Themen zu Dokumenten.
  • Bei Bildern sind NMF-Komponenten Teile von Bildern.

 

Die Box mit drei Streifen ist ungefähr 0,98 mal so groß wie die Box mit einem Streifen plus 0,91 mal so groß wie die Box mit einem anderen Streifen plus 0,95 mal so groß wie die Box mit einem anderen Streifen.

Unsupervised Learning in Python

Graustufenbilder

  • Graustufenbild = keine Farben, nur Graustufen
  • Pixelhelligkeit messen
  • Mit einem Wert zwischen 0 und 1 darstellen (0 ist schwarz)
  • In ein 2D-Array umwandeln

2 x 3 Pixel großes Rechteck mit unterschiedlichen Weiß-/Schwarz-/Grautönen

Unsupervised Learning in Python

Beispiel für ein Graustufenbild

  • Ein 8x8-Graustufenbild vom Mond, als Array geschrieben

 

Pixelige Illustration des Mondes mit einem Pfeil, der auf eine Reihe von Zahlen mit derselben Dimension zeigt, die Zahlen zwischen 0 und 1 enthalten.

Unsupervised Learning in Python

Graustufenbilder als flache Arrays

  • Durchnummerieren der Einträge
  • Zeile für Zeile
  • Von links nach rechts, von oben nach unten

2 x 3 Pixel großes Feld, das auf ein Array mit Zahlen zeigt

Unsupervised Learning in Python

Graustufenbilder als flache Arrays

  • Durchnummerieren der Einträge
  • Zeile für Zeile
  • Von links nach rechts, von oben nach unten

2 x 3 Pixel großes Feld, das auf ein 2 x 3-Array mit Zahlen zeigt, die auf ein 1 x 6-Array mit Zahlen zeigen

Unsupervised Learning in Python

Eine Sammlung von Bildern kodieren

  • Sammlung von Bildern gleicher Größe
  • Als 2D-Array kodieren
  • Jede Zeile ist ein Bild
  • Jede Spalte ist ein Pixel
  • NMF kann angewendet werden!

Eine Reihe von nmf.components_, die das 2x3-Pixel-Bild darstellt

Unsupervised Learning in Python

Visualisierung von Proben

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

Lass uns üben!

Unsupervised Learning in Python

Preparing Video For Download...