PCA ile boyut indirgeme

Python'da Unsupervised Learning

Benjamin Wilson

Director of Research at lateral.io

Boyut indirgeme

  • Aynı veriyi daha az özellikle temsil eder
  • Makine öğrenimi boru hatlarında önemlidir
  • PCA ile yapılabilir
Python'da Unsupervised Learning

PCA ile boyut indirgeme

  • PCA özellikleri, varyansa göre azalan sıradadır
  • Düşük varyanslı özelliklerin “gürültü” olduğunu varsayar
  • ... ve yüksek varyanslı özelliklerin bilgilendirici olduğunu

PCA özellik numarasına karşı varyans çubuğu grafiği; 1 ile 2 arasında dikey çizgi, solda bilgilendirici, sağda gürültülü okları

Python'da Unsupervised Learning

PCA ile boyut indirgeme

  • Kaç özelliğin tutulacağını belirtin
  • Örn. PCA(n_components=2)
  • İlk 2 PCA özelliğini tutar
  • İçsel boyut iyi bir seçimdir
Python'da Unsupervised Learning

Iris veri setinde boyut indirgeme

  • samples = iris ölçümleri dizisi (4 özellik)
  • species = iris tür numaraları listesi
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)
Python'da Unsupervised Learning

İki boyutta Iris veri seti

  • PCA boyutu 2’ye indirdi
  • En yüksek varyanslı 2 PCA özelliği korundu
  • Önemli bilgi korundu: türler ayrık kaldı
import matplotlib.pyplot as plt
xs = transformed[:,0]
ys = transformed[:,1]
plt.scatter(xs, ys, c=species)
plt.show()

İris veri setinde PCA saçılım grafiği

Python'da Unsupervised Learning

PCA ile boyut indirgeme

  • Düşük varyanslı PCA özelliklerini atar
  • Yüksek varyanslı özelliklerin bilgilendirici olduğunu varsayar
  • Varsayım pratikte genelde geçerlidir (örn. iris)
Python'da Unsupervised Learning

Kelime frekansı dizileri

  • Satırlar belgeleri, sütunlar kelimeleri temsil eder
  • Hücreler her kelimenin her belgede bulunmasını ölçer
  • ... ölçüm “tf-idf” ile yapılır (ileride)

Kelime frekansı dizisi

Python'da Unsupervised Learning

Seyrek diziler ve csr_matrix

  • “Seyrek”: girişlerin çoğu sıfır
  • NumPy yerine scipy.sparse.csr_matrix kullanılabilir
  • csr_matrix yalnızca sıfır olmayanları tutar (yer tasarrufu!)

Kelime frekansı dizisi

Python'da Unsupervised Learning

TruncatedSVD ve csr_matrix

  • scikit-learn PCA csr_matrix’i desteklemez
  • Bunun yerine scikit-learn TruncatedSVD kullanın
  • Aynı dönüşümü uygular
from sklearn.decomposition import TruncatedSVD
model = TruncatedSVD(n_components=3)
model.fit(documents)  # documents is csr_matrix
transformed = model.transform(documents)
Python'da Unsupervised Learning

Haydi pratik yapalım!

Python'da Unsupervised Learning

Preparing Video For Download...