Saya ingin mengelompokkan dataset besar yang saya hanya memiliki jarak berpasangan. Saya menerapkan algoritma k-medoid, tetapi butuh waktu terlalu lama untuk dijalankan sehingga saya ingin memulai dengan mengurangi dimensi masalah saya dengan menerapkan PCA. Namun, satu-satunya cara saya tahu untuk melakukan metode ini adalah dengan menggunakan matriks kovarians yang tidak saya miliki dalam situasi saya.
Apakah ada cara untuk menerapkan PCA dengan mengetahui jarak berpasangan saja?
pca
dimensionality-reduction
multidimensional-scaling
pohon besar
sumber
sumber
Jawaban:
Pembaruan: Saya sepenuhnya menghapus jawaban asli saya, karena didasarkan pada kebingungan antara jarak Euclidean dan produk skalar. Ini adalah versi baru dari jawaban saya. Permintaan maaf.
Jika dengan jarak berpasangan yang Anda maksud jarak Euclidean, maka ya, ada cara untuk melakukan PCA dan untuk menemukan komponen utama. Saya menjelaskan algoritma dalam jawaban saya untuk pertanyaan berikut: Apa perbedaan antara analisis komponen utama dan penskalaan multidimensi?
Secara singkat, matriks jarak Euclidean dapat dikonversi menjadi matriks Gram terpusat, yang dapat langsung digunakan untuk melakukan PCA melalui eigendekomposisi. Prosedur ini dikenal sebagai penskalaan multidimensi [klasik] (klasik) .
Jika jarak berpasangan Anda bukan Euclidean, maka Anda tidak dapat melakukan PCA, tetapi masih dapat melakukan MDS, yang tidak akan setara dengan PCA lagi. Namun, dalam situasi ini MDS cenderung lebih baik untuk tujuan Anda.
sumber
PCA dengan matriks jarak ada, dan itu disebut penskalaan multi-dimensi (MDS). Anda dapat mempelajari lebih lanjut di wikipedia atau di buku ini .
Anda dapat melakukannya
R
dengan fungsi mdscmdscale
. Untuk sampelx
, Anda dapat memeriksanyaprcomp(x)
dancmdscale(dist(x))
memberikan hasil yang sama (di manaprcomp
PCA dandist
hanya menghitung jarak euclidian antara elemen x)sumber
Ini terlihat seperti masalah yang bisa diterapkan pada pengelompokan spektral. Karena Anda memiliki matriks jarak berpasangan, Anda dapat menentukan grafik yang sepenuhnya terhubung di mana setiap node memiliki koneksi N, sesuai dengan jaraknya dari setiap node lain dalam grafik. Dari ini, Anda dapat menghitung grafik Laplacian (jika ini terdengar menakutkan, jangan khawatir - ini adalah perhitungan yang mudah) dan kemudian ambil vektor eigen dari yang terkecilnilai eigen (di sinilah berbeda dari PCA). Jika Anda mengambil 3 vektor eigen, misalnya, Anda akan memiliki matriks Nx3. Dalam ruang ini, titik-titik harus (mudah-mudahan) dipisahkan dengan baik karena beberapa teori grafik rapi yang menunjukkan bahwa ini adalah potongan optimal untuk memaksimalkan aliran (atau jarak, dalam hal ini) antara cluster. Dari sana, Anda bisa menggunakan k-means atau algoritma serupa untuk mengelompokkan dalam 3-ruang. Saya sarankan memeriksa langkah-langkah luar biasa ini untuk wawasan lebih lanjut:
http://arxiv.org/abs/0711.0189
sumber
Jarak berpasangan juga membentuk matriks persegi seperti matriks co-variance. PCA hanya SVD ( http://en.wikipedia.org/wiki/Singular_value_decomposition ) yang diterapkan pada matriks co-variance. Anda harus tetap dapat melakukan pengurangan dimensi menggunakan SVD pada data Anda. Saya tidak begitu yakin bagaimana menafsirkan output Anda, tetapi itu pasti sesuatu untuk dicoba. Anda bisa menggunakan metode pengelompokan seperti k-means atau pengelompokan hierarkis. Lihat juga teknik reduksi dimensi lain seperti penskalaan multidimensi. Apa yang Anda coba untuk keluar dari kelompok Anda?
sumber