Analisis komponen utama (PCA) biasanya dijelaskan melalui dekomposisi eigen dari matriks kovarians. Namun, dapat juga dilakukan melalui dekomposisi nilai singular (SVD) dari data matriks . Bagaimana cara kerjanya? Apa hubungan antara kedua pendekatan ini? Apa hubungan antara SVD dan PCA?
Atau dengan kata lain, bagaimana cara menggunakan SVD dari matriks data untuk melakukan pengurangan dimensionalitas?
Jawaban:
Biarkan matriks data berukuran n × p , di mana n adalah jumlah sampel dan p adalah jumlah variabel. Mari kita asumsikan bahwa itu berpusat , artinya kolom telah dikurangi dan sekarang sama dengan nol.X n × p n hal
Kemudian kovarians matriks C diberikan oleh C = X ⊤ X / ( n - 1 ) . Ini adalah matriks simetris dan sehingga dapat didiagonalisasi: C = V L V ⊤ , di mana V adalah matriks vektor eigen (setiap kolom adalah vektor eigen) dan L adalah matriks diagonal dengan nilai eigen λ i dalam urutan menurun di diagonal . Vektor eigen disebut sumbu utama atau arah utamap × p C C = X⊤X / (n-1)
Jika sekarang kita melakukan dekomposisi nilai singular , kita memperoleh dekomposisi X = U S V ⊤ , di mana U adalah matriks kesatuan dan S adalah matriks diagonal dari nilai singular s i . Dari sini orang dapat dengan mudah melihat bahwa C = V S U ⊤ U S V ⊤ / ( n - 1 ) = V S 2X
Untuk meringkas:
Tautan lebih lanjut
Apa hubungan intuitif antara SVD dan PCA - utas yang sangat populer dan sangat mirip tentang matematika.SE.
Mengapa PCA data menggunakan SVD data? - diskusi tentang apa manfaat melakukan PCA melalui SVD [jawaban singkat: stabilitas numerik].
PCA dan analisis Korespondensi dalam hubungannya dengan Biplot - PCA dalam konteks beberapa teknik kongenerik, semuanya didasarkan pada SVD.
Apakah ada kelebihan SVD dibandingkan PCA? - pertanyaan yang menanyakan apakah ada manfaat dalam menggunakan SVD daripada PCA [jawaban singkat: pertanyaan buruk].
Memahami analisis komponen utama, vektor eigen & nilai eigen - jawaban saya memberikan penjelasan non-teknis PCA. Untuk menarik perhatian, saya mereproduksi satu gambar di sini:
sumber
Saya menulis cuplikan Python & Numpy yang menyertai jawaban @ amoeba dan saya tinggalkan di sini kalau-kalau itu berguna untuk seseorang. Komentar sebagian besar diambil dari jawaban @ amoeba.
sumber
Biarkan saya mulai dengan PCA. Misalkan Anda memiliki n titik data yang masing-masing terdiri dari angka d (atau dimensi). Jika Anda memusatkan data ini (kurangi titik data rata-rata dari setiap vektor data x i ), Anda dapat menumpuk data untuk membuat matriksμ xsaya
Matriks kovarians
Saya membahas lebih detail dan manfaat hubungan antara PCA dan SVD dalam artikel yang lebih panjang ini .
sumber