Verilerin kümelenme algoritmalarının anlamlı sonuçlar üretmesi için yeterince “kümelenmiş” olup olmadığını nasıl anlarım?


78

(Yüksek boyutlu) verilerinizin, kmean'lardan veya diğer kümelenme algoritmasından elde edilen sonuçların gerçekten anlamlı olması için yeterli kümelenme gösterip göstermediğini nasıl bilebilirdiniz?

Özellikle k-aracı algoritması için kümelenme varyansındaki düşüşün ne kadarının gerçek kümelenme sonuçlarının anlamlı (ve sahte olmayan) olması gerekir?

Kümelenme, verilerin boyutsal olarak azaltılmış bir şekli çizildiğinde ortaya çıkmalı mı ve kümelenme görselleştirilemiyorsa, kmeanlardan (veya başka yöntemlerden) elde edilen sonuçlar anlamsız mıdır?


1
El yazısı rakamlar kümelenme için iyi bir test yapar: biri 10 adet iyi ayrılmış küme bekler ancak bu , en azından 64d'deki Euclid metriklerinde k = 10'luk bir diz olmadığını gösterir.
denis,


2
Bu soru, bir dereceye kadar kümelenme sonuçlarınızın geçerliliğini nasıl kontrol edeceğiniz ve “daha ​​iyi” bir yöntemi nasıl seçeceğiniz sorusuyla ilgilidir. Bkz . Stats.stackexchange.com/q/195456/3277 .
ttnphns

Yanıtlar:


77

Özellikle k-aracı hakkında, Gap istatistiklerini kullanabilirsiniz. Temel olarak, fikir, artan sayıda küme için bir referans dağılımına kıyasla, ortalama dağılıma dayalı bir kümelenme önleminin iyiliğini hesaplamaktır. Orijinal belgede daha fazla bilgi bulunabilir:

Tibshirani, R., Walther, G. ve Hastie, T. (2001). Boşluk istatistiği yoluyla bir veri kümesinde küme sayısının tahmin edilmesi . JR Statist. Soc. B, 63 (2): 411-423.

Ben verdiğiniz yanıt , ilgili soruya verilen bir veri kümesi bir yapının çeşit sergiler olmadığını kontrol etmek için kullanılabilecek diğer genel geçerlik indeksleri vurgulamaktadır.

Yalnızca gürültü olup olmadığını bulmak için ne bekleyeceğinize dair hiçbir fikriniz yoksa, yeniden örnekleme kullanmak ve kümelerin kararlılığını incelemek iyi bir yaklaşımdır. Başka bir deyişle, verilerinizi yeniden örnekleyin (önyükleme yoluyla veya küçük gürültü ekleyerek) ve Jaccard benzerlikleriyle ölçülen sonuç bölümlerinin "yakınlığını" hesaplayın . Kısacası, verilerde benzer kümelerin geri kazanılma sıklığını tahmin etmeyi sağlar. Bu yöntem fpc R paketinde olduğu gibi hazır clusterboot(). Ham veri veya uzaklık matrisi girdi olarak kabul edilir ve çok çeşitli kümeleme yöntemlerinin (hiyerarşik, k araçları, bulanık yöntemler) uygulanmasına olanak tanır. Yöntem bağlantılı referanslarda tartışılmaktadır:

Hennig, C. (2007) Küme bilgiliğinde küme istikrarı değerlendirmesi . Hesaplamalı İstatistik ve Veri Analizi , 52, 258-271.

Hennig, C. (2008) Çözünme noktası ve izolasyon sağlamlığı: genel küme analiz yöntemleri için sağlamlık kriterleri . Çok Değişkenli Analiz Dergisi , 99, 1154-1176.

Aşağıda k-aracı algoritması ile küçük bir gösteri bulunmaktadır.

sim.xy <- function(n, mean, sd) cbind(rnorm(n, mean[1], sd[1]),
rnorm(n, mean[2],sd[2]))
xy <- rbind(sim.xy(100, c(0,0), c(.2,.2)),
            sim.xy(100, c(2.5,0), c(.4,.2)),
            sim.xy(100, c(1.25,.5), c(.3,.2)))
library(fpc)
km.boot <- clusterboot(xy, B=20, bootmethod="boot",
                       clustermethod=kmeansCBI,
                       krange=3, seed=15555)

Sonuçlar, bu yapay (ve iyi yapılandırılmış) veri setinde, üç kümeden hiçbirinin ( krange) hiçbiri numuneler arasında çözülmediğinden ve kümelenmiş ortalama Jaccard benzerliğinin, tüm kümeler için> 0.95 olduğu için oldukça olumludur .

Aşağıda 20 önyükleme örneğindeki sonuçlar verilmiştir. Görülebileceği gibi, istatistiksel birimler aynı küme halinde gruplanmış olma eğilimindedir; bunlar arasında kalan gözlemler için birkaç istisna vardır.

görüntü tanımını buraya girin

Elbette bu fikri herhangi bir geçerlilik indeksine kadar genişletebilirsiniz: önyükleme ile yeni bir gözlem dizisi seçin (yerine), istatistiklerinizi (örneğin, siluet genişliği, kofenetik korelasyon, Hubert'in gama, kareler toplamı) hesaplayın. küme numaraları (örneğin, 2 ila 10), 100 veya 500 kez tekrarlayın ve küme sayısının bir fonksiyonu olarak istatistik durumunuzun kutu kısmına bakın.

İşte aynı benzetilmiş veri setiyle ne elde edeceğim, ancak Ward'ın hiyerarşik kümelemesini kullanarak ve kofenetik korelasyonu (sonuçta ortaya çıkan bölümlerde mesafe bilgisinin ne kadar iyi üretildiğini değerlendiren) ve siluet genişliğini (küme içi homojenliği ve aralıkları değerlendiren bir kombinasyon ölçüsü) dikkate alarak küme ayrımı).

Kofenetik korelasyon 0.6267 ile 0.7511 arasında değişmekte olup, ortanca değeri 0.7031'dir (500 önyükleme örneği). 3 kümeyi göz önüne aldığımızda siluet genişliği maksimum görünüyor (ortanca 0.8408, aralık 0.7371-0.8769).

görüntü tanımını buraya girin


Bu çok bilgilendirici cevap için teşekkür ederiz! Clusterboot tam olarak aradığım şey. Bağlantıları dahil ettiğiniz için teşekkür ederiz.
xuexue


1
GIF'de bu çizelgeleri oluşturmak için kullandığınız komutlar neydi?
Travis Heeter,

2
@Travis Görüntüler ayrı PNG dosyaları olarak kaydedilmiş ve daha sonra ImageMagick kullanılarak bir animasyonlu GIF dosyasına dönüştürülmüştür . Ayrıca bu yazıya bakınız .
chl

10

Yüksek boyutlu verilerin yeterli kümeleme gösterip göstermediğini hızlı bir şekilde görselleştirmenin bir yolu, t-Dağıtılmış Stokastik Komşu Yerleşimi ( t-SNE ) kullanmaktır. Verileri bazı düşük boyutlu alanlara (örneğin 2D, 3D) yansıtır ve varsa küme yapısını korumada oldukça iyi bir iş çıkarır.

Örneğin MNIST veri seti :

görüntü tanımını buraya girin

Olivetti veri setiyle karşı karşıya:

görüntü tanımını buraya girin


1
Yüzleri (veya herhangi bir resmi) R'ye uygulamanın bir yolu var mı?
Travis Heeter

1
@TravisHeeter Bilmiyorum
Franck Dernoncourt

4
TSNE ile öngörülen verileri kümelemeyin. Bkz. Örneğin bu cevap: istatistik.stackexchange.com/a/264647/7828
Anony-Mousse

9

Kuşkusuz, kümeleri bir plotable boyutta görsel olarak ayırt edebilme yeteneği, özellikle bu boyut küçültmesinin kümelemenin kendisinden bağımsız olarak yapılması durumunda (yani: boşuna bir girişimde bulunup bulunmadığını bulmak için) kümeleme işe yarayacak).

Aslında, kümeleme yöntemleri, insan gözünün / zihninin kümeleri göremediği kümeleri bulmada en yüksek değere sahiptir.

Basit cevap şudur: kümelemeyi yapın, çalışıp çalışmadığını bulun (ilgilendiğiniz kriterlerden herhangi biriyle, ayrıca Jeff'in cevabına bakınız).


1
Evet ve kümelenmeler mutlaka güzel yuvarlak nokta grupları değildir, ki bu temelde kmeanların varsaydığı şeydir.
Wayne,

@chl Bu hareketli resmi R ile mi ürettiniz?
Stéphane Laurent

7

Sonuçlar ne zaman anlamlıdır ? Özellikle k-sonuçlar?

Gerçek şu ki, k-aracı belli bir matematiksel istatistiği optimize ediyor. Bununla ilişkili hiçbir "anlamlı" yok.

Özellikle yüksek boyutlu verilerde ilk soru şu olmalıdır: Öklid mesafesi hala anlamlı mı? Değilse, k-aracı kullanmayın. Öklid mesafesi fiziksel dünyada anlamlıdır, ancak başka verileriniz olduğunda hızlı bir şekilde anlamını kaybeder. Özellikle, yapay olarak bir vektör uzayına verileri dönüştürdüğünüzde, bunun Öklid olması için herhangi bir sebep var mı?

Klasik "eski sadık" veri setini alıp normalleştirme olmadan üzerinde k-aracı kullanırsanız , ancak saf Öklid mesafesiyle, artık anlamlı değildir. Aslında, bir tür "küme yerel" Mahalanobis mesafesini kullanan EM, çok daha iyi çalışacaktır. Özellikle, çok farklı ölçeklere sahip eksenlere adapte olur.

Btw, k-araçlarının en önemli gücü , nasıl göründüğü önemli değil, sadece verileri her zaman bölümlendirmesidir. Tek tip gürültüyü k kümelerine bölmek için k-yolunu kullanabilirsiniz . Açıkçası, k-kümelerinin anlamlı olmadığını iddia edebiliriz. Veya kişi bunu şöyle kabul edebilir: kullanıcı kümelerin “anlamlı” olma zorunluluğu olmadan kare kare öklid mesafelerini en aza indirmek için verileri bölümlemek istedi.


@ Anony-Mousse Ve 'k küme halinde düzgün üniform parazit oluşması' için durum kullanın
CodeFarmer

Hiçbiri yok. Mesele şu ki, k-araçların umrunda değil, üniform veriyi "kümeler" halinde bölümlendiriyor, yani saçma sapan kümeler üretiyor.
Anony-Mousse

6

Son zamanlarda kümeleme algoritmalarını kullanmaya başladım, umarım daha bilgili biri daha eksiksiz bir cevap verebilir, ancak işte bazı düşünceler:

'Anlamlı', farkında olduğunuzdan eminim, çok özneldir. Bu nedenle, kümelemenin yeterince iyi olup olmadığı tamamen ilk başta neden kümelemeniz gerektiğine bağlıdır. Grup üyeliğini tahmin etmeye çalışıyorsanız, kümelenmelerin şanstan daha iyi (ve daha kötüsü yok) yapması muhtemeldir, bu nedenle sonuçların bir dereceye kadar anlamlı olması gerekir.

Bu kümelemenin ne kadar güvenilir olduğunu bilmek istiyorsanız , karşılaştırmak için bir metriğe ihtiyacınız var. Bilinen üyeliğe sahip bir dizi varlığınız varsa, tahminlerin ne kadar iyi olduğunu görmek için ayırt edici analizler kullanabilirsiniz. Bilinen üyeliğe sahip bir grup varlığınız yoksa, alanınızdaki tipik kümelenmelerin ne kadar farklı olduğunu bilmek zorundasınız. Katı kategorilere sahip varlıkların fiziksel özelliklerinin, insanlar üzerindeki psikometrik verilerden çok daha az grup içi varyansa sahip olmaları muhtemeldir, ancak bu kümelenmeyi 'daha da' kötüleştirmez.

İkinci sorunuz, 'Hangi değeri k seçmeliyim?' Yine, burada zor bir cevap yok. Önceden belirlenmiş bir kategori kümesinin yokluğunda, muhtemelen küme sayısını en aza indirirken ortalama küme varyansını da en aza indirmeyi istersiniz. Basit bir yaklaşım, 'ortalama küme varyansına karşı' küme sayısını 'çizmek ve daha fazla küme eklemenin küme varyansınız üzerinde önemli bir etkisi olmadığı “dirsek” i bulmak olabilir.

K-araçlarından elde edilen sonuçların görselleştirilememesi durumunda anlamsız olduğunu söyleyemem, ama kümelerin görsel olarak göründüğü durumlarda kesinlikle çekici. Bu, yine, şu soruya geri dönüyor: neden kümelemeye ihtiyacınız var ve ne kadar güvenilir olmanız gerekiyor? Sonuçta, bu verileri nasıl kullanacağınıza bağlı olarak cevaplamanız gereken bir soru.


3

Kümelemenin anlamlı olup olmadığını anlamak için, küme sayısını saymak için bir algoritma çalıştırabilir ve 1'den büyük bir şey çıktısı olup olmadığına bakabilirsiniz.

Chl'ın dediği gibi, bir küme sayma algoritması boşluk istatistik algoritmasıdır. Kabaca, bu gerçek verilerinize verilen toplam küme varyansını hesaplar ve hiç bir kümeye sahip olmaması gereken verilerin toplam küme varyansı ile karşılaştırır (örneğin, gerçek verilerinizle aynı sınırlar içinde düzgün bir şekilde örnekleme ile oluşturulan bir veri kümesi). Küme sayısı sonra olacak şekilde seçilir bu iki küme değişkenler arasındaki büyük "boşluğu" verir.kkk

Başka bir algoritma, tahmin gücü algoritmasıdır (ki bu chl'nin cevabının geri kalanına benzer). Kabaca bu, bir grup k-aracı kümelemesi gerçekleştirir ve aynı kümede kalan noktaların oranını hesaplar. , daha sonra , bir miktar eşikten daha yüksek bir oran veren en küçük olarak seçilir (örneğin, 0.8'lik bir eşik).kkk

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.