NMF se učí interpretovatelné části

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Příklad: NMF se učí interpretovatelné části

  • Pole četnosti slov v článcích (tf-idf)
  • 20 000 vědeckých článků (řádky)
  • 800 slov (sloupce)

Pole četnosti slov v článcích

Unsupervised Learning in Python

Použití NMF na články

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

Komponenty NMF jsou témata

 

nmf.components_

Unsupervised Learning in Python

Komponenty NMF jsou témata

 

jeden vybraný řádek nmf.components_ a sloupcový graf pro každé slovo, kde výška představuje tf-idf

Unsupervised Learning in Python

Komponenty NMF jsou témata

 

pole s nejčastějšími slovy a hodnotami: species 2,95, plant 1,05, plants 0,78 atd.

Unsupervised Learning in Python

Komponenty NMF jsou témata

 

nové pole s nejčastějšími slovy z jiného řádku nmf.components_: university 3.57, prof 1.19, college 0.88 atd.

Unsupervised Learning in Python

Komponenty NMF

  • Pro dokumenty:
    • Komponenty NMF představují témata
    • Příznaky NMF kombinují témata do dokumentů
  • Pro obrázky jsou komponenty NMF části obrázků

 

pole se 3 pruhy přibližně rovná 0,98násobku pole s jedním pruhem plus 0,91násobku pole s jiným pruhem plus 0,95násobku pole s dalším pruhem

Unsupervised Learning in Python

Obrázky ve stupních šedi

  • Obrázek ve stupních šedi = bez barev, pouze odstíny šedé
  • Měření jasu pixelů
  • Hodnota mezi 0 a 1 (0 = černá)
  • Převod na 2D pole

obdélník pixelů 2×3 s různými stupni bílé/černé/šedé

Unsupervised Learning in Python

Příklad obrázku ve stupních šedi

  • Obrázek měsíce 8×8 ve stupních šedi zapsaný jako pole

 

pixelovaná ilustrace měsíce se šipkou ukazující na pole čísel stejné dimenze s hodnotami 0 až 1

Unsupervised Learning in Python

Obrázky ve stupních šedi jako plochá pole

  • Výčet prvků
  • Po řádcích
  • Zleva doprava, shora dolů

pole pixelů 2×3 ukazující na pole čísel

Unsupervised Learning in Python

Obrázky ve stupních šedi jako plochá pole

  • Výčet prvků
  • Po řádcích
  • Zleva doprava, shora dolů

pole pixelů 2×3 ukazující na pole 2×3 s čísly ukazující na pole 1×6 s čísly

Unsupervised Learning in Python

Kódování kolekce obrázků

  • Kolekce obrázků stejné velikosti
  • Zakódování jako 2D pole
  • Každý řádek odpovídá jednomu obrázku
  • Každý sloupec odpovídá jednomu pixelu
  • ... lze použít NMF!

Jeden řádek nmf.components_ představující obrázek 2×3 pixely

Unsupervised Learning in Python

Vizualizace vzorků

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

Pojďme cvičit!

Unsupervised Learning in Python

Preparing Video For Download...