Saya ingin menerapkan biplot untuk analisis komponen utama (PCA) dalam JavaScript. Pertanyaan saya adalah, bagaimana cara menentukan koordinat panah dari keluaran dari dekomposisi vektor singular (SVD) dari matriks data?
Berikut adalah contoh biplot yang diproduksi oleh R:
biplot(prcomp(iris[,1:4]))
Saya mencoba mencarinya di artikel Wikipedia tentang biplot tetapi tidak terlalu berguna. Atau benar. Tidak yakin yang mana.
biplot()
. Juga, mengapa repot-repot dengan integrasi R-JS untuk sesuatu yang hanya membutuhkan beberapa baris kode.Jawaban:
Ada banyak cara berbeda untuk menghasilkan biplot PCA dan karenanya tidak ada jawaban unik untuk pertanyaan Anda. Berikut ini gambaran singkatnya.
Kami berasumsi bahwa matriks data memiliki titik data dalam baris dan berpusat (artinya kolom berarti semua nol). Untuk saat ini, kami tidak menganggap itu standar, yaitu kami menganggap PCA pada matriks kovarians (bukan pada matriks korelasi). PCA berjumlah dekomposisi nilai singular Anda dapat melihat jawaban saya di sini untuk perincian: Hubungan antara SVD dan PCA. Bagaimana cara menggunakan SVD untuk melakukan PCA? n X = U S V ⊤ ,X n
Dalam biplot PCA, dua komponen utama pertama diplot sebagai plot pencar, yaitu kolom pertama diplot terhadap kolom kedua. Tetapi normalisasi bisa berbeda; mis. seseorang dapat menggunakan:U
Selanjutnya, variabel asli diplot sebagai panah; yaitu koordinat dari th panah endpoint diberikan oleh nilai -th di kolom pertama dan kedua dari . Tetapi sekali lagi, orang dapat memilih normalisasi yang berbeda, misalnya:i i V(x,y) i i V
Ini adalah bagaimana semua itu terlihat untuk dataset Fisher Iris:
Menggabungkan setiap subplot dari atas dengan subplot apa pun dari bawah akan membentuk kemungkinan normalisasi. Tetapi menurut definisi asli dari sebuah biplot yang diperkenalkan dalam Gabriel, 1971, Tampilan grafik biplot dari matriks dengan penerapan analisis komponen utama (omong-omong, makalah ini memiliki 2k kutipan), matriks yang digunakan untuk biplot harus, ketika dikalikan bersama, mendekati (itulah intinya). Jadi "biplot yang tepat" dapat menggunakan misalnya dan . Karena itu, hanya tiga dari merupakan "biplots yang tepat": yaitu kombinasi dari setiap subplot dari atas dengan yang langsung di bawah.X U S α β V S ( 1 - α ) / β 99 X USαβ VS(1−α)/β 9
[Apa pun kombinasi yang digunakan seseorang, mungkin perlu untuk menskalakan panah berdasarkan faktor konstan sewenang-wenang sehingga baik panah dan titik data muncul secara kasar pada skala yang sama.]
Menggunakan memuat, yaitu , untuk panah memiliki manfaat besar karena mereka memiliki interpretasi yang berguna (lihat juga di sini tentang memuat). Panjang panah pemuatan mendekati standar deviasi variabel asli (panjang kuadrat mendekati perbedaan), produk skalar antara dua panah mendekati kovarians di antara mereka, dan garis sudut antara panah memperkirakan korelasi antara variabel asli. Untuk membuat "biplot yang tepat", seseorang harus memilih , yaitu PC standar, untuk titik data. Gabriel (1971) menyebut ini "PCA biplot" dan menulis itu U √VS/n−1−−−−−√ Un−1−−−−−√
Menggunakan dan memungkinkan interpretasi yang bagus: panah adalah proyeksi dari vektor basis asli ke bidang PC, lihat ilustrasi ini oleh @ hxd1011 .VUS V
Seseorang bahkan dapat memilih untuk memplot PC mentah bersamaan dengan memuat. Ini adalah "biplot yang tidak benar", tetapi misalnya dilakukan oleh @vqv pada biplot paling elegan yang pernah saya lihat: Visualisasi sejuta, edisi PCA - ini menunjukkan PCA dari dataset anggur.US
Angka yang Anda poskan (hasil defaultU VS 0.8 n/(n−1) 1
biplot
fungsi R ) adalah "biplot yang tepat" dengan dan . Fungsi ini menskala dua subplot sedemikian sehingga mereka menjangkau area yang sama. Sayangnya, fungsi ini membuat pilihan aneh untuk menskalakan semua panah ke bawah dengan faktor dan menampilkan label teks di mana titik akhir panah seharusnya berada. (Juga, tidak mendapatkan skala dengan benar dan bahkan berakhir sampai merencanakan skor dengan jumlah kuadrat, bukan Lihat penyelidikan rinci ini dengan @AntoniParellada:. Arrows of mendasari variabel dalam PCA biplot di R . )V S 0,8 n / ( n - 1 ) 1biplot
biplot
PCA pada matriks korelasi
Jika kita mengasumsikan bahwa matriks data telah distandarisasi sehingga standar deviasi kolom semua sama dengan , maka kita melakukan PCA pada matriks korelasi. Berikut ini adalah gambar yang sama: 1X 1
Di sini bebannya bahkan lebih menarik, karena (selain sifat-sifat yang disebutkan di atas), mereka memberikan tepat (dan tidak kurang) koefisien korelasi antara variabel asli dan PC. Korelasi semuanya lebih kecil dari dan panah pemuatan harus berada di dalam "lingkaran korelasi" jari-jari , yang kadang-kadang digambar pada biplot juga (saya memplotnya pada subplot yang sesuai di atas). Perhatikan bahwa biplot oleh @vqv (ditautkan di atas) dilakukan untuk PCA pada matriks korelasi, dan juga menggunakan lingkaran korelasi.R = 11 R=1
Bacaan lebih lanjut:
sumber