k-girişte özel mesafe matrisi ile uygulama anlamına gelir


14

Birisi bana girişte mesafe matrisini alabilecek bir k-araç uygulaması (matlab'da daha iyi olurdu) gösterebilir mi? Standart matlab uygulaması girdi olarak gözlem matrisine ihtiyaç duyar ve benzerlik ölçüsünü özel olarak değiştirmek mümkün değildir.


2
Öklid mesafeleri matrisinize karşılık gelen ham veriler üretmeyi deneyebilir ve bunları K-Ortalamalarına girebilirsiniz. Alternatif kolay yaklaşım, matrisin hiyerarşik kümelenmesi için Ward yöntemini kullanmak olabilir: K-Means ve Ward, bir kümenin ne olduğuna benzer bir ideolojiyi paylaşır.
11:22, ttnphns


Matlab değil, ancak python sayfası, kendi-mesafe-işlevinizi kullanarak-belirtmek mümkündür-scikits-learn-k-anlamına gelir scipy.spatial içindeki 20 tek metrikten herhangi birini kullanabilir. mesafe.
denis

Yanıtlar:


13

K-araçlarının kümelemek istediğiniz noktaların farklı alt kümelerinin araçlarını bulması gerektiğinden , girdi olarak bir mesafe matrisi alan k-araçlarının bir sürümünü istemek gerçekten mantıklı değildir.

Bunun yerine k-medoidleri deneyebilirsiniz . Orada bazı matlab uygulamaları mevcuttur.


1
Merhaba, cevap için teşekkürler; doğrudan mesafe matrisini vermek yerine girdi olarak özel bir mesafe metriği vermek mümkün müdür? Mesele şu ki, iki kümeleme yöntemini karşılaştırmam gerekiyor ve ikincisinde özel bir benzerlik matrisi kullandığımdan, adil bir karşılaştırma elde etmek için kmeans ile aynı yaklaşımı kullanmak istiyorum.
Eugenio

2
ELKI, k-ortalamaları ile rasgele mesafe fonksiyonları kullanmanızı sağlar. Algoritmanın yakınsamada başarısız olabileceğini unutmayın. K-araçları gerçekten kare öklid mesafesi (karelerin toplamı) için tasarlanmıştır . Diğer mesafelerde, ortalama artık optimize edilmeyebilir ve patlama, algoritma sonunda birleşmez. Cidden, k-medoid kullanmayı düşünün. Aslında k-araç fikrinin arbirary mesafelerinde kullanılmasına izin vermek için yazılmıştır .
QUIT - Anony-Mousse

Ayrıca, özel bir metrik işlevi sağlamanıza
CpILL

8

Mesafeler matrisinizi ham verilere dönüştürebilir ve bunları K-Ortalama kümelenmesine girebilirsiniz. Adımlar aşağıdaki gibi olacaktır:

1) N noktalarınız arasındaki mesafeler, öklid kare şeklinde olmalıdır. Matrisin " çift ​​merkezleme " işlemini gerçekleştirin : Her elemandan alt özet satır ortalaması; sonuçta, her elemandan alt-özet sütun ortalaması; sonuç olarak, her bir öğeye matris ortalaması ekleyin; Şimdi eksi 2'ye bölün. Kökeni N nokta bulutunun geometrik merkezine yerleştirdiğiniz noktalarınız arasındaki SSCP (karelerin toplamı ve çarpı çarpımı) matrisi. ( Burada çift ​​merkezlemenin açıklamasını okuyun .)

2) Bu matris üzerinde PCA (Ana bileşen analizi) gerçekleştirin ve NxN bileşen yükleme matrisini elde edin . Son sütunlarının bazıları muhtemelen 0 olacaktır - bu yüzden onları kesin. Şimdi kaldığınız şey asıl bileşen puanları, N noktalarınızın koordinatları, bulutunuzdan eksenler olarak geçen ana bileşenlere. Bu veriler K-Ortalamalar girdisi için uygun ham veri olarak değerlendirilebilir.

PS Mesafeleriniz geometrik olarak doğru kareli öklidik değilse sorunla karşılaşabilirsiniz: SSCP matrisi pozitif (yarı) kesin olmayabilir. Bu sorun, çeşitli yollarla ancak hassasiyet kaybı ile başa çıkabilir.


Cevabınız için teşekkürler! Aslında gerçek bir mesafe matrisim yok ama nesneler arasında bir benzerlik matrisi (0 ... 1) var ve benzerlikler tam olarak öklid mesafeleri kullanılarak değil, ham verileri dikkate alan özel bir algoritma ile hesaplanıyor, ancak standart yol. Sanırım bu durumda prosedürünüzü uygulayamam, değil mi?
Eugenio

Benzerlikleri mesafelere dönüştürdükten sonra da yapabilirsiniz. İkincisi muhtemelen gerçek öklid olmayacak (ve böylece SSCP'nin bazı negatif özdeğerleri olacaktır); sonra SSCP neg kaybedene kadar mesafelere küçük bir sabit eklemeyi deneyin. eig. Bu soruna geçici bir çözüm bulmak için başka yollar da vardır. Ve lütfen kare mesafeli matrisin iki merkezli olduğunu unutmayın .
ttnphns

PS Ve bu arada. Matrisiniz benzerlikler ise, o zaman, daha da iyidir. Sadece bahsettiğim SSCP matrisi gibi davranın ve onunla PCA yapın. Yine de, olası negatif özdeğerler sorunu devam etmektedir.
ttnphns

@ttnphns, ben 1.adım'da mesafe matrisi sizin açıklama özlüyorum üzgün Xyüzden, simetrik olacak (hadi N * N söylemek) colMeans(X) =rowMeans(X) : ve çıkarma satır veya sütun vasıtası kez Y=X-rowMeans(X), mean(Y)0'dır
Zhubarb

1
@Zhubarb, You could turn your matrix of distances into raw data(1 ve 2. noktalar) dediğimde , esasen, çift ​​merkezlemenin ilk adım olduğu Torgerson'ın çok boyutlu ölçeklendirmesine (MDS) atıfta bulunuyorum . Lütfen bu sitede (ve Google'da da) bu prosedür hakkında arama yapın. "Çift merkezleme", (kare) mesafelerin, nokta bulutunun centroidine konan orijin üzerinde tanımlanan karşılık gelen skaler ürün matrisine dönüştürülmesidir.
ttnphns

3

Lütfen tanıdıklarımdan biri tarafından yazılan bu makaleye bakın;)

http://arxiv.org/abs/1304.6899

Giriş olarak keyfi bir mesafe matrisini alan genelleştirilmiş bir k-ortalama uygulaması ile ilgilidir. Sıfır diyagonal herhangi bir simetrik negatif olmayan matris olabilir. Tuhaf mesafe matrisleri için mantıklı sonuçlar vermeyebileceğini unutmayın. Program C # ile yazılmıştır.

Kaynak kodu, yukarıdaki bağlantıyı ziyaret edip Diğer Biçimler'i ve ardından Kaynağı İndir'i tıklayarak elde edilebilir. Sonra Program.cs içeren bir .tar.gz alırsınız. Alternatif olarak, kaynak kodu PDF'den de kopyalanabilir.


3

Java Machine Learning Library'yi kullanabilirsiniz. K-Ortalamalar uygulaması var. Biri yapıcıları üç argüman kabul eder

  1. K Değeri.
  2. Bunun bir nesnesi DistanceMeasure Sınıfının bir örneğidir .
  3. Yineleme sayısı.

İstenen sonucu elde etmek için DistanceMeasure sınıfını kolayca genişletebilirsiniz. Buradaki fikir, bu sınıfın ölçü (Örnek x, Örnek y) yöntemindeki özel bir mesafe matrisinden değerler döndürmektir.

K-Ortalamaları, mesafe metriğinin belirli özelliklerini varsayarak birleşmek üzere uyarılır. Öklid mesafesi, Manhattan mesafesi veya diğer standart metrikler bu varsayımları karşılar. Özel bir mesafe metriği bu varsayımları karşılayamayabileceğinden, kurucuda kümeyi oluşturmak için çalıştırılacak yineleme sayısını belirten üçüncü bir parametre bulunur.

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.