Nieujemna faktoryzacja macierzy (NMF)

Uczenie nienadzorowane w Pythonie

Benjamin Wilson

Director of Research at lateral.io

Nieujemna faktoryzacja macierzy

  • NMF = „nieujemna faktoryzacja macierzy"
  • Technika redukcji wymiarowości
  • Modele NMF są interpretowalне (w odróżnieniu od PCA)
  • Łatwa interpretacja oznacza łatwe wyjaśnianie!
  • Wszystkie cechy próbek muszą być nieujemne (>= 0)
Uczenie nienadzorowane w Pythonie

Interpretowalне części

  • NMF wyraża dokumenty jako kombinacje tematów

 

Pole tekstowe: DataCamp is the first and foremost leader in Data Science Education offering skill-based training, pioneering technical innovation... ≈ 0,6 razy pole ze słowami program, r, python, function, method plus 0,5 razy pole ze słowami data, analysis, cluster, statistics, mean plus 0,7 razy pole ze słowami teaching, learn, lesson, lessons, course

Uczenie nienadzorowane w Pythonie

Interpretowalне części

  • NMF wyraża obrazy jako kombinacje wzorców

 

Pole z 3 paskami ≈ 0,98 razy pole z jednym paskiem plus 0,91 razy pole z innym paskiem plus 0,95 razy pole z innym paskiem

Uczenie nienadzorowane w Pythonie

Korzystanie z NMF w scikit-learn

  • Stosuje wzorzec fit() / transform()
  • Należy podać liczbę składowych, np. NMF(n_components=2)
  • Działa z tablicami NumPy oraz csr_matrix
Uczenie nienadzorowane w Pythonie

Przykładowa tablica częstości słów

  • Tablica częstości słów, 4 słowa, wiele dokumentów
  • Obecność słów mierzona metodą „tf-idf"
    • „tf" = częstość słowa w dokumencie
    • „idf" zmniejsza wpływ często występujących słów

Tablica częstości słów

Uczenie nienadzorowane w Pythonie

Przykład użycia NMF

  • samples to tablica częstości słów
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Uczenie nienadzorowane w Pythonie

Składowe NMF

  • NMF ma składowe
  • ... podobnie jak PCA ma główne składowe
  • Wymiar składowych = wymiar próbek
  • Wartości są nieujemne
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Uczenie nienadzorowane w Pythonie

Cechy NMF

  • Wartości cech NMF są nieujemne
  • Można ich użyć do rekonstrukcji próbek
  • ... kombinując wartości cech ze składowymi
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Uczenie nienadzorowane w Pythonie

Rekonstrukcja próbki

print(samples[i,:])
[ 0.12  0.18  0.32  0.14]
print(nmf_features[i,:])
[ 0.15  0.12]

Składowe NMF pomnożone przez wartości cech i zsumowane

Uczenie nienadzorowane w Pythonie

Rekonstrukcja próbki

  • Mnożymy składowe przez wartości cech i sumujemy
  • Można to wyrazić jako iloczyn macierzy
  • To jest „Faktoryzacja Macierzy" w „NMF"
Uczenie nienadzorowane w Pythonie

NMF działa tylko z danymi nieujemnymi

  • Częstości słów w dokumentach
  • Obrazy zakodowane jako tablice
  • Spektrogramy dźwięku
  • Historie zakupów w sklepach internetowych
  • ... i wiele więcej!
Uczenie nienadzorowane w Pythonie

Czas na ćwiczenia!

Uczenie nienadzorowane w Pythonie

Preparing Video For Download...