Sadece mesafe matrisi ile PCA gerçekleştirmek


12

Sadece çift mesafelere sahip olduğum büyük bir veri kümesini kümelemek istiyorum. Bir k-medoid algoritması uyguladım, ancak çalışması çok uzun sürüyor, bu yüzden PCA'yı uygulayarak sorunumun boyutunu azaltarak başlamak istiyorum. Ancak, bu yöntemi gerçekleştirmenin tek yolu benim durumumda olmayan kovaryans matrisini kullanmaktır.

PCA'yı sadece çift mesafeleri bilerek uygulamak için bir yol var mı?


1
Böylece, kümelemek istediğiniz noktalar arasında büyük bir kare matris matrisiniz var. (BTW hangi mesafe? Öklid?) Kümelenmeyi engelleyen nokta sayısının (kardinalite) değil, bu noktaların yayıldığı boyutların sayısı olduğunu düşünmenizi sağlayan nedir?
ttnphns

1
Puan sayısı "çok büyük" değildir (birkaç bin). Kullandığım mesafe, bu noktalar arasındaki pearson korelasyonudur
bigTree

2
Ama sorum şuydu: gerçekten boyutsallığı (ve eğer evet ise, neden?) Veya kardinaliteyi (puan sayısını ) azaltmak istiyor musunuz? Çünkü sorunuz belirsiz .
ttnphns

1
@ttnphns: Ah oğlum, elbette önceki yorumumu yanlış yazdım. Olası karışıklığı ortadan kaldırmak için şimdi bu yorumu sileceğim ve burada söylediğim şeyi doğru ifadelerle tekrarlayacağım: "Bu durumda kardinaliteyi azaltmak, mesafe matrisinizi daha küçük yapmak ( azaltmak) demektir. değiştirmeden, daha alt sıralara PCA tutarlar. ikincisi "ve eski hedefi ile gerçekten yardıma yok. N-xN-N-N-
amip

1
Sizin için en kolay yolun (a) kümeleme yöntemini veya (b) bu ​​tür bir uygulamayı veya (c) 6000 nesneyi alacak ve sınıflandıracak kadar güçlü (yeterli RAM) bir bilgisayar kullanmak olduğunu düşünüyorum (neden bilmiyorum medoid program zor bulur. 6000 büyük, ama çok büyük değil.). Bazı yöntemler (K-araçları gibi) X nesneleri veri verilerini gerektirir. Metrik MDS aracılığıyla bu gibi verileri nesnelerin mesafe matrisinden oluşturabilirsiniz (eğer bilgisayarınız / MDS programınız 6000 nesneye izin veriyorsa).
ttnphns

Yanıtlar:


8

Güncelleme: Orijinal cevabımı tamamen kaldırdım, çünkü Öklid mesafeleri ve skaler ürünler arasındaki karışıklığa dayanıyordu. Bu cevabımın yeni bir versiyonudur. Özür.

İkili mesafelerle Öklid mesafelerini kastediyorsanız, o zaman evet, PCA yapmanın ve ana bileşenleri bulmanın bir yolu vardır. Algoritmayı şu soruya cevabımda tanımlıyorum: Temel bileşenler analizi ile çok boyutlu ölçekleme arasındaki fark nedir?

Çok kısaca, Öklid mesafelerinin matrisi, özdokompozisyon yoluyla PCA gerçekleştirmek için doğrudan kullanılabilen ortalanmış bir Gram matrisine dönüştürülebilir. Bu prosedür [klasik] çok boyutlu ölçekleme (MDS) olarak bilinir .

Çiftli mesafeleriniz Öklid değilse, PCA gerçekleştiremezsiniz, ancak yine de artık PCA'ya eşdeğer olmayacak olan MDS gerçekleştirebilirsiniz. Ancak, bu durumda MDS'nin sizin amaçlarınız için daha iyi olması muhtemeldir.


Kullandığım mesafe bir korelasyon (Pearson korelasyonu) ve bu nedenle Öklid mesafesi değildir. Bu benzer şekilde çalışır mı?
bigTree

1
@bigTree: Öklid mesafesi değilse, PCA'yı çalıştırmanın bir yolu yoktur. Bununla birlikte, tam olarak ikili mesafeler matrisini kullanan (herhangi bir mesafe olabilir) boyutsallık azaltma tekniği olan çok boyutlu ölçeklemeyi kullanabilirsiniz . Başka bir not: Orijinal veri noktaları (sahip olmadığınız) korelasyonları hakkındaki belirli varsayımlar altında Öklid mesafelerine dönüştürülebilir. Varsayımlar: (1) sıfır ortalamaya sahip, (2) sabit, örneğin birim uzunluğa sahip. Verileriniz için herhangi bir tesadüf mü?
amip

Bunların hiçbiri doğru değil veya verilerim, ama MDS'yi deneyeceğim teşekkürler
bigTree

1
PCA çekirdeğini kullanamaz mısınız? Bunun sadece ikili nokta ürünlere ihtiyacı olacağını hayal ediyorum, ancak sorun hakkında çok şey bilmiyorum, bu yüzden mantıklı olup olmadığını bilmiyorum
rep_ho

4

Mesafe matrisine sahip PCA mevcuttur ve buna Çok boyutlu ölçekleme (MDS) denir. Vikipedi hakkında veya bu kitaptan daha fazla bilgi edinebilirsiniz .

Bunu Rmds fonksiyonu ile yapabilirsiniz cmdscale. Bir örnek için x, bunu kontrol edebilir prcomp(x)ve cmdscale(dist(x))aynı sonucu verebilirsiniz ( prcompPCA ve distx öğelerinin arasındaki öklid mesafelerini nerede hesaplar)


3

Bu, spektral kümelemenin uygulanabileceği bir soruna benziyor. Çift yönlü mesafe matrisine sahip olduğunuzdan, her düğümün grafikteki diğer düğümlerden uzaklığına karşılık gelen N bağlantısına sahip olduğu tamamen bağlı bir grafik tanımlayabilirsiniz. Bundan, Laplacian grafiğini (bu korkutucu geliyorsa, endişelenmeyin - bu kolay bir hesaplama) hesaplayabilir ve daha sonra en küçüklerin özvektörlerini alabilirsiniz.özdeğerler (burası PCA'dan farklıdır). Örneğin 3 özvektör alırsanız, Nx3 matrisiniz olur. Bu alanda, noktalar (umarım), bazı kümeler arasındaki akışı (veya bu durumda mesafeyi) en üst düzeye çıkarmak için optimal bir kesim olduğunu düşündüren bazı düzgün grafik teorisi nedeniyle iyi ayrılmalıdır. Oradan, 3 alanda kümelenmek için bir k-aracı veya benzer bir algoritma kullanabilirsiniz. Daha fazla bilgi için bu müthiş izlenmesine göz atmanızı tavsiye ederim:

http://arxiv.org/abs/0711.0189


0

Çift mesafeler aynı ko-varyans matrisi gibi bir kare matris oluşturur. PCA sadece ko-varyans matrisine uygulanan SVD'dir ( http://en.wikipedia.org/wiki/Singular_value_decomposition ). Yine de verilerinizde SVD kullanarak boyut küçültme yapabilmeniz gerekir. Çıktınızı nasıl yorumlayacağınızdan tam olarak emin değilim ama kesinlikle denemek için bir şey. K-ortalaması veya hiyerarşik kümeleme gibi kümeleme yöntemlerini kullanabilirsiniz. Ayrıca çok boyutlu ölçekleme gibi diğer boyut küçültme tekniklerine de göz atın. Kümelerinizden ne çıkarmaya çalışıyorsunuz?


Andrew Cassidy'nin cevabı aslında geçerlidir. Mesafe ölçünüz pearson korelasyonuysa, aslında bir kovaryans matrisine sahip olmaktan "çok uzak" bir standartlaştırma faktörü olursunuz. Bu nedenle, SVD'nin uygulanması temel olarak PCA yapmakla aynı şeydir.
Matthew Anthony
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.