NMF uczy się interpretowalnych części

Uczenie nienadzorowane w Pythonie

Benjamin Wilson

Director of Research at lateral.io

Przykład: NMF uczy się interpretowalnych części

  • Tablica częstości słów w artykułach (tf-idf)
  • 20 000 artykułów naukowych (wiersze)
  • 800 słów (kolumny)

Tablica częstości słów w artykułach

Uczenie nienadzorowane w Pythonie

Zastosowanie NMF do artykułów

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)
Uczenie nienadzorowane w Pythonie

Komponenty NMF jako tematy

 

nmf.components_

Uczenie nienadzorowane w Pythonie

Komponenty NMF jako tematy

 

wybrany jeden wiersz nmf.components_ i wykres słupkowy dla każdego słowa, gdzie wysokość odpowiada tf-idf

Uczenie nienadzorowane w Pythonie

Komponenty NMF jako tematy

 

pole z najważniejszymi słowami i wartościami: species 2.95, plant 1.05, plants 0.78, itd.

Uczenie nienadzorowane w Pythonie

Komponenty NMF jako tematy

 

nowe pole z najważniejszymi słowami z innego wiersza nmf.components_: university 3.57, prof 1.19, college 0.88, itd.

Uczenie nienadzorowane w Pythonie

Komponenty NMF

  • Dla dokumentów:
    • Komponenty NMF reprezentują tematy
    • Cechy NMF łączą tematy w dokumenty
  • Dla obrazów komponenty NMF to części obrazów

 

pole z 3 paskami ≈ 0,98 × pole z jednym paskiem + 0,91 × pole z innym paskiem + 0,95 × pole z innym paskiem

Uczenie nienadzorowane w Pythonie

Obrazy w skali szarości

  • Obraz „w skali szarości" = bez kolorów, tylko odcienie szarości
  • Pomiar jasności pikseli
  • Wartość z przedziału od 0 do 1 (0 = czarny)
  • Konwersja do tablicy 2D

prostokąt 2×3 pikseli o różnych odcieniach bieli/czerni/szarości

Uczenie nienadzorowane w Pythonie

Przykład obrazu w skali szarości

  • Obraz Księżyca 8×8 pikseli w skali szarości zapisany jako tablica

 

pikselowa ilustracja Księżyca ze strzałką wskazującą tablicę liczb o tych samych wymiarach, zawierającą wartości od 0 do 1

Uczenie nienadzorowane w Pythonie

Obrazy w skali szarości jako płaskie tablice

  • Wyliczenie elementów
  • Wiersz po wierszu
  • Od lewej do prawej, od góry do dołu

pole 2×3 pikseli ze strzałką wskazującą tablicę liczb

Uczenie nienadzorowane w Pythonie

Obrazy w skali szarości jako płaskie tablice

  • Wyliczenie elementów
  • Wiersz po wierszu
  • Od lewej do prawej, od góry do dołu

pole 2×3 pikseli ze strzałką wskazującą tablicę 2×3 liczb, a następnie tablicę 1×6 liczb

Uczenie nienadzorowane w Pythonie

Kodowanie zbioru obrazów

  • Zbiór obrazów tego samego rozmiaru
  • Kodowanie jako tablica 2D
  • Każdy wiersz odpowiada jednemu obrazowi
  • Każda kolumna odpowiada jednemu pikselowi
  • ... można zastosować NMF!

Jeden wiersz nmf.components_ reprezentujący obraz 2×3 piksele

Uczenie nienadzorowane w Pythonie

Wizualizacja próbek

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()
Uczenie nienadzorowane w Pythonie

Czas na ćwiczenia!

Uczenie nienadzorowane w Pythonie

Preparing Video For Download...