Varyans
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 70/112
- 5 dk
PCA, en çok varyansı açıklayan bileşenleri seçer.
Varyansı korumak
PCA'nın hedefi, boyutu düşürürken toplam varyansın olabildiğince çoğunu korumaktır. Her bileşenin taşıdığı varyans, verinin kovaryans matrisinin bir özdeğeridir; bileşen yönleri ise özvektörlerdir:
C = np.cov(Xs, rowvar=False)
ozdeger = np.linalg.eigvalsh(C)[::-1] # büyükten küçüğe
print(np.allclose(ozdeger[:3], PCA(3).fit(Xs).explained_variance_)) # TrueÖlçekli veride her özelliğin varyansı 1 olduğundan toplam varyans özellik sayısına eşittir.
Dönüşüm varyansı korur
Tüm bileşenler tutulursa PCA yalnızca bir döndürmedir: hiçbir bilgi kaybolmaz ve toplam varyans aynı kalır. Bilgi kaybı yalnızca bileşen atınca olur:
tam = PCA().fit(Xs)
print(round(tam.explained_variance_.sum(), 3)) # ~13 (n-1 düzeltmesiyle)
print(round(Xs.var(axis=0, ddof=1).sum(), 3)) # aynısıPCA'nın varyansları ddof=1 ile hesaplanır; karşılaştırmada aynı düzeltme kullanılmalıdır.
Uygulama Özdeğerlerle doğrula
Ölçekli şarap verisinin kovaryans matrisinin özdeğerlerini np.linalg.eigvalsh ile büyükten küçüğe sırala. İlk üçünün PCA(n_components=3).fit(Xs).explained_variance_ ile aynı olduğunu np.allclose ile yazdır. Ardından tüm özdeğerlerin toplamını round(..., 3) ile yazdır.
Başlangıç kodu
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
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)
ozdeger = np.linalg.eigvalsh(np.cov(Xs, rowvar=False))[::-1]
print(np.allclose(ozdeger[:3], PCA(n_components=3).fit(Xs).explained_variance_))
print(round(ozdeger.sum(), 3))Beklenen çıktı
True 13.073
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 13 özellikli ölçekli veride (her biri varyans ≈ 1) toplam varyans yaklaşık kaçtır?
- 0
- 13 Doğru cevap
- 1
- 169
Açıklama: Toplam varyans sütun varyanslarının toplamıdır; dönüşüm bunu korur.
2 Kovaryans matrisini sütunlar arasında hesapla.
C = np.cov(Xs, ____=False)
C = np.cov(Xs, rowvar=False)
Açıklama: rowvar=False her sütunu bir değişken sayar.
3 Kavramları eşleştir.
| Kavram | Anlamı |
|---|---|
özdeğer |
Bileşenin varyansı |
özvektör |
Bileşen yönü |
tüm bileşenler |
Kayıpsız döndürme |
bileşen atmak |
Bilgi kaybı |