NMF leert interpreteerbare onderdelen

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Voorbeeld: NMF leert interpreteerbare onderdelen

  • Woordfrequentie-array van artikelen (tf-idf)
  • 20.000 wetenschappelijke artikelen (rijen)
  • 800 woorden (kolommen)

Artikelen woordfrequentie-array

Unsupervised Learning in Python

NMF toepassen op de artikelen

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-componenten zijn topics

 

nmf.components_

Unsupervised Learning in Python

NMF-componenten zijn topics

 

één rij van nmf.components_ geselecteerd en een staafdiagram per woord waarbij de hoogte de tfidf toont

Unsupervised Learning in Python

NMF-componenten zijn topics

 

box met topwoorden en waarden: species 2.95, plant 1.05, plants 0.78, etc.

Unsupervised Learning in Python

NMF-componenten zijn topics

 

nieuwe box met topwoorden uit een andere rij van nmf.components_: university 3.57, prof 1.19, college 0.88, etc.

Unsupervised Learning in Python

NMF-componenten

  • Voor documenten:
    • NMF-componenten representeren topics
    • NMF-features combineren topics tot documenten
  • Voor afbeeldingen zijn NMF-componenten onderdelen

 

box met 3 strepen is ongeveer gelijk aan 0,98 keer box met één streep plus 0,91 keer box met een andere streep plus 0,95 keer box met een andere streep

Unsupervised Learning in Python

Grijswaardenafbeeldingen

  • "Grijswaarden"-afbeelding = geen kleuren, alleen grijstinten
  • Meet pixelhelderheid
  • Waarde tussen 0 en 1 (0 is zwart)
  • Zet om naar 2D-array

2 bij 3 rechthoek van pixels met variërende wit/zwart/grijs-tinten

Unsupervised Learning in Python

Voorbeeld grijswaardenafbeelding

  • Een 8x8 grijswaardenafbeelding van de maan, als array

 

gepixelustreerde maan met pijl naar array met dezelfde afmetingen met waarden tussen 0 en 1

Unsupervised Learning in Python

Grijswaarden als platte arrays

  • Nummer de entries
  • Rij voor rij
  • Van links naar rechts, van boven naar beneden

2 bij 3 pixelvak met pijl naar array met getallen

Unsupervised Learning in Python

Grijswaarden als platte arrays

  • Nummer de entries
  • Rij voor rij
  • Van links naar rechts, van boven naar beneden

2 bij 3 pixelvak met pijl naar 2 bij 3 array met getallen en pijl naar een 1 bij 6 array met getallen

Unsupervised Learning in Python

Een verzameling afbeeldingen coderen

  • Verzameling afbeeldingen met dezelfde afmeting
  • Codeer als 2D-array
  • Elke rij is een afbeelding
  • Elke kolom is een pixel
  • ... dan kun je NMF toepassen!

Eén rij van nmf.components_ die de 2x3-pixelafbeelding voorstelt

Unsupervised Learning in Python

Samples visualiseren

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

Laten we oefenen!

Unsupervised Learning in Python

Preparing Video For Download...