Setelah beberapa pencarian, saya menemukan sangat sedikit pada penggabungan bobot pengamatan / kesalahan pengukuran ke dalam analisis komponen utama. Apa yang saya temukan cenderung mengandalkan pendekatan berulang untuk memasukkan bobot (misalnya, di sini ). Pertanyaan saya adalah mengapa pendekatan ini perlu? Mengapa kita tidak bisa menggunakan vektor eigen dari matriks kovarian tertimbang?
pca
measurement-error
weighted-data
tanpa nama
sumber
sumber
Jawaban:
Tergantung pada apa sebenarnya bobot Anda berlaku.
Bobot baris
Misalkan menjadi matriks data dengan variabel dalam kolom dan n observasi x i dalam baris. Jika setiap pengamatan memiliki berat terkait w i , maka itu memang mudah untuk menggabungkan bobot ini ke dalam PCA.X n xsaya wsaya
Pertama, kita perlu menghitung rata-rata tertimbang dan kurangi dari data untuk memusatkannya .μ = 1∑ wsaya∑ wsayaxsaya
Kemudian kita menghitung matriks kovarians tertimbang , di mana adalah matriks diagonal dari bobot, dan menerapkan PCA standar untuk menganalisisnya.1∑ wsayaX⊤W X W =diag( bsaya)
Bobot sel
Makalah oleh Tamuz et al., 2013 , yang Anda temukan, menganggap kasus yang lebih rumit ketika bobot berbeda diterapkan pada setiap elemen dari matriks data. Maka memang tidak ada solusi analitis dan kita harus menggunakan metode berulang. Perhatikan bahwa, sebagaimana diakui oleh penulis, mereka menemukan kembali roda, karena bobot umum seperti itu tentu telah dipertimbangkan sebelumnya, misalnya dalam Gabriel dan Zamir, 1979, Perkiraan Tingkat Bawah dari Matriks oleh Kuadrat Terkecil Dengan Setiap Pilihan Berat . Ini juga dibahas di sini .wsaya j
Sebagai komentar tambahan: jika bobot bervariasi dengan variabel dan pengamatan, tetapi simetris, sehingga , maka solusi analitik dimungkinkan lagi, lihat Koren dan Carmel, 2004, Robust Pengurangan Dimensi Linier .wsaya j wsaya j= wj i
sumber
Terima kasih banyak amuba untuk wawasan tentang bobot baris. Saya tahu bahwa ini bukan stackoverflow, tetapi saya mengalami beberapa kesulitan untuk menemukan implementasi PCA berbobot baris dengan penjelasan dan, karena ini adalah salah satu hasil pertama ketika googling untuk PCA tertimbang, saya pikir akan lebih baik untuk melampirkan solusi saya , mungkin bisa membantu orang lain dalam situasi yang sama. Dalam cuplikan kode Python2 ini, PCA yang diberi bobot dengan kernel RBF seperti yang dijelaskan di atas digunakan untuk menghitung garis singgung dari dataset 2D. Saya akan sangat senang mendengar tanggapan!
Dan output sampel (melakukan hal yang sama untuk setiap titik):
Ceria,
Andres
sumber