Bir dendrogram nerede kesilir?


61

Hiyerarşik kümeleme bir dendrogram ile temsil edilebilir. Bir dendrogramın belirli bir seviyede kesilmesi bir dizi kümeye neden olur. Başka bir seviyede kesme, başka bir küme kümesi verir. Dendrogramın nerede kesileceğini nasıl seçersiniz? En uygun noktayı düşünebileceğimiz bir şey var mı? Değişen zaman boyunca bir dendrograma bakarsam, aynı noktada mı kesmeliyim?


Bu sorunu da merak ettim, fakat (ne yazık ki) henüz ikna edici bir cevap bulamadım. Bence çözüm yok. Küme hopacksayısını tahmin edebilen (ve diğerleri) gibi R / BioC paketleri vardır , ancak bu sorunuza cevap vermez.
suncoolsu

pvclustİçin paket R: Eğer gruplarını tanımlamak için izin dendrograma kümeleri için p-değerleri bootstrapped verin işlevlere sahiptir is.titech.ac.jp/~shimo/prog/pvclust
Ben

Yanıtlar:


46

Küme analizi temelde keşfedici bir yaklaşım olduğu için kesin bir cevap yoktur; Sonuçta ortaya çıkan hiyerarşik yapının yorumlanması içeriğe bağlıdır ve çoğu zaman birkaç çözüm teorik açıdan aynı derecede iyidir.

İlgili bir soruda birkaç ipucu verildi , Uygulamada aglomeratif hiyerarşik kümelenme için hangi durma kriterleri kullanılır? Genel olarak görsel kriterleri, örneğin siluet grafiklerini ve Dunn'ın geçerlilik indeksi, Hubert'in gama, G2 / G3 katsayısı veya düzeltilmiş Rand endeksi gibi bazı sayısal kriterleri kullanırım. Temel olarak, küme uzayda orjinal mesafe matrisinin ne kadar iyi yaklaştığını bilmek istiyoruz, bu nedenle kofenetik korelasyonun bir ölçüsü de faydalıdır. Ayrıca, çeşitli başlangıç ​​değerlerine sahip k-araçları ve SS-içi en aza indiren kümelerin sayısını belirlemek için boşluk istatistiklerini ( ayna ) kullanıyorum. Ward hiyerarşik kümelemesine uyum, küme çözümünün kararlılığı hakkında bir fikir verir (kullanabilirsinizmatchClasses()Bunun için e1071 paketinde).

Sen CRAN Görev Görünümü yararlı kaynaklar bulacaksınız Kümesi dahil pvclust , FPC , CLV diğerleri arasında. Denemeye Ayrıca değer clValid (paket açıklandığı içinde İstatistiksel Journal of Software ).

Şimdi, eğer kümeleriniz zaman içinde değişiyorsa, bu biraz daha yanlıştır; neden bir başkası yerine ilk küme çözümünü seçtiniz? Zaman içinde gelişen bir sürecin bir sonucu olarak bazı bireylerin bir kümeden diğerine geçmesini bekliyor musunuz?

Önceki sorunuzda önerildiği gibi, maksimum mutlak veya göreceli bir örtüşme olan kümeleri eşleştirmeye çalışan bazı ölçütler var. Kümelemelerin Karşılaştırılmasına Bakın - Wagner ve Wagner'den Bir Bakış .


12

Gerçekten bir cevap yok. 1 ile N arasında bir yerde.

Ancak, bunu kar açısından da düşünebilirsiniz.

Örneğin, pazarlamada biri kümelenmeye çok benzeyen bölümleme kullanır.

Her birey için uyarlanmış bir mesaj (bir reklam veya mektup) en yüksek yanıt oranına sahip olacaktır. Ortalamaya göre düzenlenmiş genel bir mesaj en düşük yanıt oranına sahip olacaktır. Üç bölüme göre düzenlenmiş üç mesajın söylenmesi, aralarında bir yerde olacak. Bu gelir tarafı.

Her bir kişiye özel bir mesaj en yüksek maliyete sahip olacaktır. Ortalamaya göre düzenlenmiş genel bir mesaj en düşük maliyete sahip olacaktır. Üç bölüme uyarlanmış üç mesaj, aralarında bir yerde olacaktır.

Özel bir mesaj yazması için bir yazara ödeme yapmanın 1000, iki maliyet 2000 vb.

Bir mesaj kullanarak, gelirinizin 5000 olacağını söyleyin. Müşterilerinizi 2 segmente ayırır ve her segmente uyarlanmış mesajlar yazarsanız, yanıtlama oranınız daha yüksek olacaktır. Diyelim ki gelirler şimdi 7500'dür. Üç segmentle, biraz daha yüksek bir yanıt oranı ve gelirleriniz 9000'dir. Bir segment daha ve 9500'desiniz.

Kârı en üst düzeye çıkarmak için, bölümlendirmeden elde edilen marjinal gelir, bölümlendirmenin marjinal maliyetine eşit olana kadar bölümlemeye devam edin. Bu örnekte, karı maksimize etmek için üç segment kullanırsınız.

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500

Bu ilginç bir bakış açısı!
AndyF

5

Belki de en basit yöntemlerden biri, x ekseninin grup sayısı ve y ekseninin mesafe veya benzerlik olarak herhangi bir değerlendirme ölçütü olduğu grafiksel bir gösterimi olacaktır. Bu komploda genellikle iki farklı bölgeyi gözlemleyebilirsiniz; çizginin 'dizindeki' x ekseni değeri olan 'optimum' küme sayısı.

Bu görevin önüne geçebilecek bazı istatistikler de var: Hubert'in gaması, sahte-t², sahte-F veya kübik kümeleme kriterleri (CCC).


CHL ile aynı fikirdeyim. Küme analizleri keşfedici yaklaşımlardır ve sonuçların yorumlanması, bu özel durum için en uygun küme sayısı, bağlamınıza bağlıdır. Örneğin, çalışmamda, bireyleri çeşitli özelliklere göre sınıflandırmak için kullanılan küme analizleri yaygındır ve bazen küme sayısı önceden ayarlanmıştır. Bu durumda amacımız, farklı kümelere ait bireyleri en iyi ayırt eden sınıflandırma değişkenleri setini bulmaktır.
Manuel Ramón


3

Hiyerarşik kümelemede çıktı bölümlerinin sayısı sadece yatay kesimler değil, aynı zamanda son kümelenmeye karar veren yatay olmayan kesimlerdir. Böylece, bu 1. mesafe metrik ve 2. Bağlantı kriteri dışında üçüncü bir kriter olarak görülebilir . http://en.wikipedia.org/wiki/Hierarchical_clustering

Bahsettiğiniz kriter, hiyerarşideki bölümler kümesinde bir tür optimizasyon kısıtlaması olan 3. türdür. Bu resmen bu yazıda sunulmuştur ve bölümlere ayırma örnekleri verilmiştir!

http://www.esiee.fr/~kiranr/ClimbingECCV2012_Preprint.pdf


1

Diğer cevapların söylediği gibi, kesinlikle özneldir ve ne tür ayrıntı dereceleriyle çalışmak istediğinize bağlıdır. Genel bir yaklaşım için, bunu bana 2 küme ve 1 aykırı vermek için kestim. Daha sonra aralarında anlamlı bir şey olup olmadığını görmek için iki kümeye odaklanacağım.

# Init
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

# Load data
from sklearn.datasets import load_diabetes

# Clustering
from scipy.cluster.hierarchy import dendrogram, fcluster, leaves_list
from scipy.spatial import distance
from fastcluster import linkage # You can use SciPy one too

%matplotlib inline

# Dataset
A_data = load_diabetes().data
DF_diabetes = pd.DataFrame(A_data, columns = ["attr_%d" % j for j in range(A_data.shape[1])])

# Absolute value of correlation matrix, then subtract from 1 for disimilarity
DF_dism = 1 - np.abs(DF_diabetes.corr())

# Compute average linkage
A_dist = distance.squareform(DF_dism.as_matrix())
Z = linkage(A_dist,method="average")

# Dendrogram
D = dendrogram(Z=Z, labels=DF_dism.index, color_threshold=0.7, leaf_font_size=12, leaf_rotation=45)

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

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.