Kümeleme sonuçlarının karşılaştırmasını anlama


13

Verileri gruplara ayırmayı deniyorum. Bu konuda oldukça yeniyim ve bazı analizlerin çıktılarını anlamaya çalışıyorum.

Quick-R'den örnekler kullanarak çeşitli Rpaketler önerilir. Ben ( fpcve kmeansişlevini kullanarak) bu paketlerin iki kullanmayı denedim mclust. Bu analizin anlamadığım bir yönü sonuçların karşılaştırılmasıdır.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

fpc Kılavuzun ilgili kısımlarını okudum ve neyi hedeflemem gerektiği konusunda net değilim. Örneğin, bu iki farklı kümeleme yaklaşımını karşılaştırma sonucudur:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Buradaki birincil sorum, bu küme karşılaştırmasının sonuçlarını nasıl yorumlayacağımızı daha iyi anlamak.


Daha önce, verilerin ölçeklendirilmesinin ve bir mesafe matrisinin hesaplanmasının etkisi hakkında daha fazla soru sormuştum. Ancak bu mariana soffer tarafından açıkça cevaplandı ve sadece iki farklı kümeleme algoritmasının karşılaştırması olan çıktımın yorumlanmasıyla ilgilendiğimi vurgulamak için sorumu yeniden düzenliyorum.

Sorunun bir önceki bölümü : Herhangi bir tür kümeleme yapıyorsam her zaman verileri ölçeklendirmeli miyim? Örneğin, dist()ölçeklenmiş veri kümemdeki cluster.stats()işlevi işleve giriş olarak kullanıyorum , ancak neler olduğunu tam olarak anlamıyorum. dist() Burada okudum ve şunu belirtiyor:

bu işlev, bir veri matrisinin satırları arasındaki mesafeleri hesaplamak için belirtilen mesafe ölçüsünü kullanarak hesaplanan mesafe matrisini hesaplar ve döndürür.


Daha fazla açıklama mı arıyorsunuz yoksa @ mariana'nın yanıtından memnun değil misiniz? Sanırım ilk sorunuzla ilgili (2. §). Bu durumda, belki de insanlar bu soruya niçin bir ödül koyduğunuzu anlamaları için sorunuzu güncellemelisiniz.
chl

@chl Daha açık hale getirmek için güncelleyeceğim. Çıktının ne anlama geldiğini anlamadım, sadece kümelenme karşılaştırmalarını yorumlamak için bazı rehberler arıyorum. @ mariana'nın yanıtı, bu yöntemle ilişkili bazı terimleri açıklamakta çok yardımcı oldu.
celenius

Yanıtlar:


13

Öncelikle size burada tüm önlemleri tam olarak açıklamayacağımı söyleyeyim, ancak size kümeleme yöntemlerinin ne kadar iyi karşılaştırılacağı hakkında bir fikir vereceğim (diyelim ki 2 kümeleme yöntemini aynı numarayla karşılaştırıyoruz. kümeleri).

  1. Örneğin, kümenin çapı büyüdükçe kümelenme en kötüdür, çünkü kümeye ait noktalar daha dağınıktır.
  2. Her kümelenmenin ortalama mesafesi ne kadar yüksek olursa, kümeleme yöntemi o kadar kötü olur. (Ortalama mesafenin kümedeki her noktadan kümenin merkezine kadar olan mesafelerin ortalaması olduğunu varsayalım.)

Bunlar en çok kullanılan iki metriktir. Ne anlama geldiğini anlamak için bu bağlantıları kontrol edin:

  • kümeler arası mesafe (daha yüksek daha iyi, farklı küme sentroidleri arasındaki mesafenin özetidir)
  • küme içi mesafe (ne kadar düşük o kadar iyi, küme üyeleri arasındaki kümenin merkezine olan mesafenin toplamıdır)

Yukarıdaki metrikleri daha iyi anlamak için bunu kontrol edin .

Daha sonra, hangi önlemlerin her birini temsil ettiğini anlamak için kullandığınız kitaplık ve işlevlerin kılavuzunu okumalısınız veya bunlar dahil edilmemişse, dahil edilenin anlamını bulmaya çalışın. Ancak burada bahsettiğim kişilerle uğraşmam ve uğraşmam.

Yaptığınız sorulara devam edelim:

  1. Ölçekleme verileri ile ilgili olarak: Evet, verileri her zaman kümeleme için ölçeklendirmelisiniz, aksi takdirde farklı boyutların (değişkenlerin) farklı ölçeklerinin, verilerin nasıl kümelendiğinde farklı etkileri olur, değişkendeki değerler ne kadar yüksek olursa, değişken o kadar etkili olur kümelenmenin nasıl yapıldığına bakacak olsa da, aslında hepsi aynı etkiye sahip olmalıdır (belirli bir garip nedenden ötürü bu şekilde istemediğiniz sürece).
  2. Uzaklık fonksiyonları bir noktadan diğerine tüm mesafeleri hesaplar. En yaygın uzaklık ölçüsü Öklid'dir, örneğin diyelim ki örnek 1'den örnek 2'ye olan mesafeyi ölçmek istediğinizi varsayalım (sadelik için sadece 2 örneğiniz olduğunu varsayalım). Ayrıca en her örnek 3 değerlere sahip olduğunu varsayalım (x1, x2, x3), bu I1=0.3, 0.2, 0.5ve I2=0.3, 0.3, 0.4: I1 ve I2 arasından Öklid mesafe çok olur sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, dolayısıyla mesafe matris neden olur:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Mesafe matrisinin daima simetrik olduğuna dikkat edin.

Öklid uzaklık formülü var olan tek formül değildir. Bu matrisi hesaplamak için kullanılabilecek başka birçok mesafe vardır. Örneğin Wikipedia Manhattain Mesafesinde ve nasıl hesaplanacağını kontrol edin. Öklid Mesafesi için Wikipedia sayfasının sonunda ( formülünü de kontrol edebileceğiniz yerde) başka hangi mesafelerin olduğunu kontrol edebilirsiniz.


Çok kapsamlı cevabınız için teşekkür ederim - çok faydalı.
celenius

Size yardımcı olduğu için çok mutluyum.
mariana soffer

@marianasoffer Stanford sayfasının bağlantısı çalışmıyor. Lütfen güncelleyin veya erişilebilir hale getirin. Teşekkür ederim
Herman Toothrot

7

Bence, kümelenme için en iyi kalite ölçüsünün , etiketli ve etiketsiz verilerle Seeger'de Öğrenme tarafından verilen küme varsayımı olduğunu düşünüyorum :

Örneğin, X = Rd ve "küme varsayımı" nın geçerliliğini, yani iki nokta x, x'in, X'te yalnızca nispeten yüksek P (x bölgelerinden geçen bölgeler arasında bir yol varsa, aynı t etiketine sahip olduğunu varsayalım. ).

Evet, bu tüm sentroid ve merkez fikrini aşağıya çekiyor. Sonuçta, verilerinizin gerçekte çalıştığınız alanın doğrusal olmayan bir altmanifoldunda olabileceğini düşünüyorsanız, bu oldukça keyfi kavramlardır.

Karışım modellerinin bozulduğu sentetik veri kümesini kolayca oluşturabilirsiniz. Bu bir örneğin: bulut içindeki bir daire.

Uzun lafın kısası: Kümeleme algoritmasının kalitesini minimum düzeyde ölçeceğim. En iyi kümeleme algoritması, bir noktanın aynı kümenin en yakın komşusuna olan maksimum mesafesini en aza indirirken, bir noktanın farklı bir kümeden en yakın komşusuna olan minimum mesafesini maksimuma çıkarır.

Ayrıca ilginizi çekebilir Parametrik Olmayan Bir Bilgi Teorik Kümeleme Algoritması .


Minimax yaklaşımı kullanarak küme uyumunu nasıl inceleyebilirim? Kümeleme konusundaki bilgi düzeyim çok temel, bu yüzden şu anda sadece iki farklı kümeleme yaklaşımını nasıl karşılaştıracağımı anlamaya çalışıyorum.
celenius

Ekteki rakam için R kodunu paylaşabilir misiniz?
Andrej

@Andrej Tahminim x<-rnorm(N);rnorm(N)->y3 parçaya bölünmüş bir Gauss bulutudur ( ) ve bunlardan biri kaldırılmıştır.

Bu kalite ölçüsüne uygun pratik bir algoritma bilmiyorum. Muhtemelen hala K-Means ve ark. Ancak yukarıdaki önlem bozulursa, baktığınız verilerin bu algoritma için (henüz!) Uygun olmadığını bilirsiniz.
bayerj

@Andrej R kullanmıyorum (istatistikler yerine ML'den geliyor :) ama mbq'nin önerdiği şey iyi görünüyor.
bayerj
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.