Makine Öğrenmesi · Bölüm 7
Temel bileşen analizi (PCA)
İki IMU ölçümünü, bilgiyi kaybetmeden tek sayıya indirmek
Veri. Rampa çıkan robotun IMU’su 200 kez ileri ve yan ivmeyi ölçtü. Robot rampaya çapraz durduğu için iki sayı birlikte artıp azalıyor: aslında tek bir şeyi, rampanın eğimini anlatıyorlar.
ileri ve yan ivme200 ölçüm
1 / 46
pca.pypython
import numpy as npfrom imu import A # 200 ölçüm: [ax, ay], m/s²Z = A - A.mean(0) # ortalaS = Z.T @ Z / len(Z) # kovaryans matrisivals, vecs = np.linalg.eigh(S) # özdeğerler, özvektörlerpc = vecs[:, vals.argmax()] # en çok değişen yönz = Z @ pc # her ölçüm artık tek sayıprint(vals.max() / vals.sum()) # korunan varyans oranı
Sahnedeki her sayı, aynı algoritmanın tarayıcında yapılan gerçek çalıştırmasından gelir (sabit tohum, her seferinde aynı sonuç). Python kodunu kendi bilgisayarında çalıştırırsan rastgele başlangıçlar farklı olacağı için sayılar biraz değişebilir.
Nasıl çalışır
- Önce veri ortalanır: her ölçümden ortalama çıkarılır.
- Kovaryans matrisi, iki sayının birlikte nasıl değiştiğini özetler.
- En büyük özdeğerin özvektörü, veriyi o yöne izdüşürünce varyansın en büyük olduğu yöndür. Sahnede eksen döndükçe varyansın nasıl değiştiğini görürsün.
- Noktalar bu çizgiye izdüşürülür: iki sayı yerine bir sayı. Korunan varyans oranı ne kadar bilgi kaldığını söyler.
Neden önemli
Çok boyutlu sensör verisini sıkıştırmak, gürültüyü azaltmak ve görselleştirmek için ilk araçtır. Görüntü işlemede yüz tanımadan (özyüzler) nokta bulutlarında yüzey yönünü bulmaya kadar, robotikte her yerde karşına çıkar.
ESOF 323, 11. hafta: robotlarda derin öğrenme →