Reduksi dimensi dengan PCA

Unsupervised Learning in Python

Benjamin Wilson

Director of Research at lateral.io

Reduksi dimensi

  • Mewakili data yang sama dengan lebih sedikit fitur
  • Bagian penting dari pipeline machine learning
  • Dapat dilakukan dengan PCA
Unsupervised Learning in Python

Reduksi dimensi dengan PCA

  • Fitur PCA diurutkan menurun menurut varians
  • Mengasumsikan fitur ber-varians rendah adalah "noise"
  • ... dan fitur ber-varians tinggi informatif

Diagram batang: nomor fitur PCA vs varians, garis vertikal antara 1 dan 2, panah kiri bertanda informative dan kanan noisy

Unsupervised Learning in Python

Reduksi dimensi dengan PCA

  • Tentukan jumlah fitur yang akan dipertahankan
  • Mis. PCA(n_components=2)
  • Menyimpan 2 fitur PCA pertama
  • Dimensi intrinsik adalah pilihan baik
Unsupervised Learning in Python

Reduksi dimensi dataset iris

  • samples = array pengukuran iris (4 fitur)
  • species = daftar nomor spesies iris
from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(samples)
PCA(n_components=2)
transformed = pca.transform(samples)
print(transformed.shape)
(150, 2)
Unsupervised Learning in Python

Dataset Iris dalam 2 dimensi

  • PCA mereduksi dimensi menjadi 2
  • Menyimpan 2 fitur PCA dengan varians tertinggi
  • Info penting terjaga: spesies tetap berbeda
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

Plot sebar PCA pada dataset Iris

Unsupervised Learning in Python

Reduksi dimensi dengan PCA

  • Membuang fitur PCA bervarians rendah
  • Mengasumsikan fitur bervarians tinggi informatif
  • Umumnya benar di praktik (mis. untuk iris)
Unsupervised Learning in Python

Array frekuensi kata

  • Baris = dokumen, kolom = kata
  • Entri mengukur kemunculan tiap kata di tiap dokumen
  • ... diukur dengan "tf-idf" (dibahas nanti)

Array frekuensi kata

Unsupervised Learning in Python

Array spars dan csr_matrix

  • "Spars" (jarang): sebagian besar entri nol
  • Dapat gunakan scipy.sparse.csr_matrix alih-alih array NumPy
  • csr_matrix hanya menyimpan entri non-nol (hemat ruang!)

Array frekuensi kata

Unsupervised Learning in Python

TruncatedSVD dan csr_matrix

  • scikit-learn PCA tidak mendukung csr_matrix
  • Gunakan scikit-learn TruncatedSVD sebagai gantinya
  • Melakukan transformasi yang sama
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Unsupervised Learning in Python

Ayo berlatih!

Unsupervised Learning in Python

Preparing Video For Download...