Di mana harus memotong dendrogram?

61

Pengelompokan hierarki dapat diwakili oleh dendrogram. Memotong dendrogram pada tingkat tertentu memberikan satu set cluster. Pemotongan di tingkat lain memberikan kelompok cluster lain. Bagaimana Anda memilih tempat memotong dendrogram? Adakah sesuatu yang bisa kita pertimbangkan sebagai titik optimal? Jika saya melihat dendrogram dari waktu ke waktu karena berubah, haruskah saya memotong pada titik yang sama?

Eduardas
sumber
Saya juga bertanya-tanya tentang masalah ini, tetapi (sayangnya) belum menemukan jawaban yang meyakinkan. Saya pikir tidak ada solusi. Ada paket R / BioC seperti hopack(dan lainnya) yang dapat memperkirakan jumlah cluster, tetapi itu tidak menjawab pertanyaan Anda.
suncoolsu
The pvclustpaket untuk Rmemiliki fungsi yang memberikan dinyalakan p-nilai untuk cluster dendrogram, memungkinkan Anda untuk mengidentifikasi kelompok: is.titech.ac.jp/~shimo/prog/pvclust
Ben
Situs yang bermanfaat dengan beberapa contoh tentang bagaimana melakukannya dalam praktik: menujudatascience.com/...
Mikko

Jawaban:

46

Tidak ada jawaban pasti karena analisis cluster pada dasarnya adalah pendekatan eksplorasi; interpretasi dari struktur hierarkis yang dihasilkan bergantung pada konteks dan seringkali beberapa solusi sama baiknya dari sudut pandang teoretis.

Beberapa petunjuk diberikan dalam pertanyaan terkait, Apa kriteria berhenti untuk pengelompokan hierarki aglomeratif yang digunakan dalam praktik? Saya umumnya menggunakan kriteria visual, misalnya plot siluet, dan beberapa jenis kriteria numerik, seperti indeks validitas Dunn, gamma Hubert, koefisien G2 / G3, atau indeks Rand yang dikoreksi. Pada dasarnya, kami ingin tahu seberapa baik matriks jarak asli didekati di dalam ruang cluster, jadi ukuran korelasi cophenetic juga berguna. Saya juga menggunakan k-means, dengan beberapa nilai awal, dan statistik gap ( mirror ) untuk menentukan jumlah cluster yang meminimalkan dalam-SS. Kesesuaian dengan pengelompokan hierarkis Ward memberikan gagasan tentang stabilitas solusi kluster (Anda dapat menggunakanmatchClasses()dalam paket e1071 untuk itu).

Anda akan menemukan sumber daya yang berguna dalam CRAN Task View Cluster , termasuk pvclust , fpc , CLV , antara lain. Juga patut dicoba adalah paket clValid ( dijelaskan dalam Journal of Statistical Software ).

Sekarang, jika cluster Anda berubah seiring waktu, ini sedikit lebih rumit; mengapa memilih solusi cluster pertama daripada yang lain? Apakah Anda berharap bahwa beberapa individu bergerak dari satu kelompok ke kelompok lain sebagai hasil dari proses mendasar yang berkembang seiring waktu?

Ada beberapa ukuran yang mencoba untuk mencocokkan cluster yang memiliki tumpang tindih absolut atau relatif maksimum, seperti yang disarankan kepada Anda dalam pertanyaan Anda sebelumnya. Lihatlah Membandingkan Clusterings - Tinjauan dari Wagner dan Wagner.

chl
sumber
12

Sebenarnya tidak ada jawaban. Berada di antara 1 dan N.

Namun, Anda dapat memikirkannya dari perspektif laba.

Misalnya, dalam pemasaran seseorang menggunakan segmentasi, yang mirip dengan pengelompokan.

Pesan (iklan atau surat, katakanlah) yang dirancang untuk setiap individu akan memiliki tingkat respons tertinggi. Pesan umum yang disesuaikan dengan rata-rata akan memiliki tingkat respons terendah. Setelah mengatakan tiga pesan yang disesuaikan dengan tiga segmen akan berada di antara keduanya. Ini adalah sisi pendapatan.

Pesan yang dirancang untuk setiap individu akan memiliki biaya tertinggi. Pesan umum yang disesuaikan dengan rata-rata akan memiliki biaya terendah. Tiga pesan yang disesuaikan dengan tiga segmen akan berada di antara keduanya.

Katakan membayar penulis untuk menulis pesan kustom biaya 1000, dua biaya 2000 dan sebagainya.

Katakan dengan menggunakan satu pesan, pendapatan Anda akan menjadi 5000. Jika Anda membagi pelanggan menjadi 2 segmen, dan menulis pesan yang disesuaikan untuk setiap segmen, tingkat respons Anda akan lebih tinggi. Katakanlah pendapatan sekarang 7500. Dengan tiga segmen, tingkat respons yang sedikit lebih tinggi, dan pendapatan Anda adalah 9.000. Satu segmen lagi, dan Anda berada pada 9500.

Untuk memaksimalkan laba, pertahankan segmentasi sampai pendapatan marginal dari segmentasi sama dengan biaya marginal segmentasi. Dalam contoh ini, Anda akan menggunakan tiga segmen untuk memaksimalkan laba.

Segments  Revenue  Cost  Profit
1         5000     1000  4000
2         7500     2000  5500
3         9000     3000  6000
4         9500     4000  5500
Neil McGuigan
sumber
Ini adalah perspektif yang menarik!
AndyF
5

Mungkin salah satu metode paling sederhana adalah representasi grafis di mana sumbu x adalah jumlah kelompok dan sumbu y setiap metrik evaluasi sebagai jarak atau kesamaan. Dalam plot itu Anda biasanya dapat mengamati dua daerah yang dibedakan, menjadi nilai sumbu x di 'lutut' garis, jumlah cluster 'optimal'.

Ada juga beberapa statistik yang dapat membantu tugas ini: Gamma Hubert, pseudo-t², pseudo-F atau kriteria pengelompokan kubik (CCC) antara lain.

Manuel Ramón
sumber
Saya setuju dengan chl. Analisis cluster adalah pendekatan eksplorasi dan interpretasi hasil, untuk kasus khusus ini jumlah optimal cluster, tergantung pada konteks Anda. Sebagai contoh, dalam pekerjaan saya adalah umum untuk menggunakan analisis kluster untuk mengklasifikasikan individu berdasarkan beberapa karakteristik dan kadang-kadang jumlah cluster telah ditetapkan. Dalam hal ini, tujuan kami adalah untuk menemukan serangkaian variabel klasifikasi yang paling membedakan individu dari kelompok yang berbeda.
Manuel Ramón
3

Dalam pengelompokan hierarkis, jumlah partisi keluaran tidak hanya potongan horizontal, tetapi juga potongan non horizontal yang menentukan pengelompokan akhir. Jadi ini dapat dilihat sebagai kriteria ketiga selain 1. metrik jarak dan 2. Kriteria keterkaitan . http://en.wikipedia.org/wiki/Hierarchical_clustering

Kriteria yang Anda sebutkan adalah jenis ke-3 yang merupakan semacam batasan optimisasi pada sekumpulan partisi dalam hierarki. Ini disajikan secara formal dalam makalah ini dan contoh segmentasi diberikan!

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

Ravi Kiran
sumber
1

Seperti jawaban yang lain katakan, itu pasti subjektif dan tergantung pada jenis granularitas apa yang Anda coba pelajari. Untuk pendekatan umum, saya memotong yang ini untuk memberi saya 2 cluster dan 1 outlier. Saya kemudian akan fokus pada dua kelompok untuk melihat apakah ada sesuatu yang signifikan di antara mereka.

# 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)

masukkan deskripsi gambar di sini

O.rka
sumber