CodeBlanks Logo Icon CodeBlanks

PCA nedir?

PCA (Principal Component Analysis), veriyi en çok varyansı koruyacak şekilde boyut indirger.

PCA nedir?

Temel bileşen analizi (PCA), veriyi en çok yayıldığı yönlere döndüren doğrusal bir dönüşümdür. Birinci bileşen varyansın en büyük olduğu yön, ikincisi ona dik ve kalan varyansın en büyük olduğu yöndür; böyle devam eder.

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
Z = pca.fit_transform(Xs)   # 13 özellik -> 2 bileşen
print(Z.shape)

Az sayıda bileşen verinin bilgisinin çoğunu taşıyorsa boyut büyük ölçüde azaltılabilir.

Önce ölçekle

PCA varyansa baktığı için birimi büyük özellik ilk bileşeni ele geçirir. Şarap verisinde proline (~1000) ölçeklenmeden PCA yapılırsa ilk bileşen neredeyse tamamen proline olur:

ham = PCA(n_components=1).fit(X)
print(abs(ham.components_[0]).argmax())   # 12: proline
olcekli = PCA(n_components=1).fit(Xs)
print(abs(olcekli.components_[0]).round(2))  # yük birçok özelliğe dağılır

Farklı birimli verilerde PCA'dan önce StandardScaler neredeyse her zaman gereklidir.

Uygulama Ölçeğin etkisi

Ham X ve ölçekli Xs üzerinde tek bileşenli PCA eğit. Her biri için ilk bileşende mutlak yükü en büyük özelliğin indeksini aynı satırda yazdır (önce ham).

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

X, y = load_wine(return_X_y=True)
Xs = StandardScaler().fit_transform(X)

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import load_wine
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

X, y = load_wine(return_X_y=True)
Xs = StandardScaler().fit_transform(X)

ham = PCA(n_components=1).fit(X)
olcekli = PCA(n_components=1).fit(Xs)
print(abs(ham.components_[0]).argmax(), abs(olcekli.components_[0]).argmax())

Beklenen çıktı

12 6

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 PCA'nın ikinci bileşeni birinciyle nasıl ilişkilidir?

  • Aynı yöndür
  • İlişki yoktur, rastgeledir
  • Ona diktir (ilişkisizdir) Doğru cevap
  • Ona paraleldir

Açıklama: Bileşenler birbirine diktir; dönüştürülmüş sütunlar arasında korelasyon yoktur.

2 Veriyi iki temel bileşene indir.

Soru
Z = PCA(____=2).fit_transform(Xs)
Cevap
Z = PCA(n_components=2).fit_transform(Xs)

Açıklama: n_components tutulacak bileşen sayısıdır.

3 Kavramları eşleştir.

Kavram Anlamı
1. bileşen En büyük varyans yönü
2. bileşen Birinciye dik
components_ Bileşen yönleri
ölçekleme Birim baskınlığını önler

Orta seviye bölümündeki tüm dersler