NMF învață părți interpretabile

Învățare nesupervizată în Python

Benjamin Wilson

Director of Research at lateral.io

Exemplu: NMF învață părți interpretabile

  • Tablou frecvență-cuvinte (tf-idf)
  • 20.000 de articole științifice (rânduri)
  • 800 de cuvinte (coloane)

Tablou frecvență-cuvinte pentru articole

Învățare nesupervizată în Python

Aplicarea NMF pe articole

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)
Învățare nesupervizată în Python

Componentele NMF sunt teme

 

nmf.components_

Învățare nesupervizată în Python

Componentele NMF sunt teme

 

un rând selectat din nmf.components_ și un grafic cu bare pentru fiecare cuvânt, unde înălțimea reprezintă tf-idf

Învățare nesupervizată în Python

Componentele NMF sunt teme

 

casetă cu cuvintele de top și valori: species 2.95, plant 1.05, plants 0.78, etc.

Învățare nesupervizată în Python

Componentele NMF sunt teme

 

casetă nouă cu cuvintele de top din diferite rânduri ale nmf.components_: university 3.57, prof 1.19, college 0.88, etc.

Învățare nesupervizată în Python

Componentele NMF

  • Pentru documente:
    • Componentele NMF reprezintă teme
    • Caracteristicile NMF combină temele în documente
  • Pentru imagini, componentele NMF sunt părți ale imaginilor

 

casetă cu 3 dungi ≈ 0,98 × casetă cu o dungă + 0,91 × casetă cu o altă dungă + 0,95 × casetă cu o altă dungă

Învățare nesupervizată în Python

Imagini în tonuri de gri

  • Imagine „în tonuri de gri" = fără culori, doar nuanțe de gri
  • Măsoară luminozitatea pixelilor
  • Reprezentare cu valori între 0 și 1 (0 = negru)
  • Conversie în tablou 2D

dreptunghi 2×3 de pixeli cu grade variate de alb/negru/gri

Învățare nesupervizată în Python

Exemplu de imagine în tonuri de gri

  • O imagine 8×8 în tonuri de gri a lunii, reprezentată ca tablou

 

ilustrație pixelată a lunii cu săgeată spre un tablou de numere de aceleași dimensiuni, cu valori între 0 și 1

Învățare nesupervizată în Python

Imagini în tonuri de gri ca tablouri plate

  • Enumerarea intrărilor
  • Rând cu rând
  • De la stânga la dreapta, de sus în jos

casetă de 2×3 pixeli cu săgeată spre un tablou de numere

Învățare nesupervizată în Python

Imagini în tonuri de gri ca tablouri plate

  • Enumerarea intrărilor
  • Rând cu rând
  • De la stânga la dreapta, de sus în jos

casetă de 2×3 pixeli cu săgeată spre tablou 2×3 de numere, cu săgeată spre tablou 1×6 de numere

Învățare nesupervizată în Python

Codificarea unei colecții de imagini

  • Colecție de imagini de aceeași dimensiune
  • Codificare ca tablou 2D
  • Fiecare rând corespunde unei imagini
  • Fiecare coloană corespunde unui pixel
  • ... se poate aplica NMF!

Un rând din nmf.components_ reprezentând imaginea de 2×3 pixeli

Învățare nesupervizată în Python

Vizualizarea eșantioanelor

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()
Învățare nesupervizată în Python

Să exersăm!

Învățare nesupervizată în Python

Preparing Video For Download...