Non-negative matrix factorization (NMF)

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Non-negative matrix factorization

  • NMF = "non-negative matrix factorization" (faktorisasi matriks tak-negatif)
  • Teknik reduksi dimensi
  • Model NMF mudah ditafsirkan (tidak seperti PCA)
  • Mudah ditafsirkan berarti mudah dijelaskan
  • Namun, semua fitur sampel harus tidak negatif (>= 0)
Unsupervised Learning in Python

Bagian yang dapat ditafsirkan

  • NMF merepresentasikan dokumen sebagai gabungan topik (atau "tema")

 

Kotak teks: DataCamp adalah pemimpin utama dalam Pendidikan Sains Data yang menawarkan pelatihan berbasis keterampilan, inovasi teknis terdepan... kira-kira sama dengan 0,6 kali kotak teks berisi kata program, r, python, function, dan method, plus 0,5 kali kotak teks berisi data, analysis, cluster, statistics, mean plus 0,7 kali kotak teks berisi teaching, learn, lesson, lessons, dan course

Unsupervised Learning in Python

Bagian yang dapat ditafsirkan

  • NMF merepresentasikan gambar sebagai gabungan pola

 

kotak dengan 3 garis ≈ 0,98 × kotak dengan satu garis + 0,91 × kotak dengan garis lain + 0,95 × kotak dengan garis lain

Unsupervised Learning in Python

Menggunakan NMF di scikit-learn

  • Mengikuti pola fit() / transform()
  • Harus menentukan jumlah komponen, mis. NMF(n_components=2)
  • Bekerja dengan array NumPy dan csr_matrix
Unsupervised Learning in Python

Contoh array frekuensi kata

  • Array frekuensi kata, 4 kata, banyak dokumen
  • Ukur kemunculan kata per dokumen dengan "tf-idf"
    • "tf" = frekuensi kata dalam dokumen
    • "idf" mengurangi pengaruh kata yang terlalu sering

Array frekuensi kata

Unsupervised Learning in Python

Contoh penggunaan NMF

  • samples adalah array frekuensi kata
from sklearn.decomposition import NMF

model = NMF(n_components=2)
model.fit(samples)
NMF(n_components=2)
nmf_features = model.transform(samples)
Unsupervised Learning in Python

Komponen NMF

  • NMF memiliki komponen
  • ... seperti PCA memiliki komponen utama
  • Dimensi komponen = dimensi sampel
  • Nilai entri tidak negatif
print(model.components_)
[[ 0.01  0.    2.13  0.54]
 [ 0.99  1.47  0.    0.5 ]]
Unsupervised Learning in Python

Fitur NMF

  • Nilai fitur NMF tidak negatif
  • Dapat merekonstruksi sampel
  • ... gabungkan nilai fitur dengan komponen
print(nmf_features)
[[ 0.    0.2 ]
 [ 0.19  0.  ]
  ...
 [ 0.15  0.12]]
Unsupervised Learning in Python

Rekonstruksi sampel

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

Komponen NMF dikalikan nilai fitur lalu dijumlahkan

Unsupervised Learning in Python

Rekonstruksi sampel

  • Kalikan komponen dengan nilai fitur, lalu jumlahkan
  • Juga bisa dinyatakan sebagai perkalian matriks
  • Inilah "Matrix Factorization" pada "NMF"
Unsupervised Learning in Python

NMF hanya cocok untuk data tak-negatif

  • Frekuensi kata per dokumen
  • Gambar yang dikodekan sebagai array
  • Spektrogram audio
  • Riwayat pembelian di e-commerce
  • ... dan banyak lagi!
Unsupervised Learning in Python

Ayo berlatih!

Unsupervised Learning in Python

Preparing Video For Download...