Wo kann man ein Dendrogramm schneiden?


61

Hierarchisches Clustering kann durch ein Dendrogramm dargestellt werden. Wenn Sie ein Dendrogramm auf einer bestimmten Ebene ausschneiden, erhalten Sie eine Reihe von Clustern. Wenn Sie auf einer anderen Ebene schneiden, erhalten Sie eine andere Gruppe von Clustern. Wie würden Sie auswählen, wo das Dendrogramm geschnitten werden soll? Gibt es etwas, das wir als optimalen Punkt betrachten könnten? Wenn ich ein Dendrogramm mit der Zeit betrachte, während es sich ändert, sollte ich dann an derselben Stelle schneiden?


Ich habe mich auch über dieses Problem gewundert, aber (leider) noch keine überzeugenden Antworten gefunden. Ich denke, es gibt keine Lösung. Es gibt R / BioC-Pakete wie hopack(und andere), die die Anzahl der Cluster schätzen können, aber das beantwortet Ihre Frage nicht.
Suncoolsu

Das pvclustPaket für Renthält Funktionen, die Bootstrap-p-Werte für Dendrogramm-Cluster bereitstellen
Ben

Antworten:


46

Es gibt keine endgültige Antwort, da die Clusteranalyse im Wesentlichen ein explorativer Ansatz ist. Die Interpretation der resultierenden hierarchischen Struktur ist kontextabhängig und oft sind mehrere Lösungen aus theoretischer Sicht gleich gut.

In einer verwandten Frage wurden mehrere Hinweise gegeben: Welche Stoppkriterien für agglomeratives hierarchisches Clustering werden in der Praxis verwendet? Ich verwende im Allgemeinen visuelle Kriterien, z. B. Silhouetten-Diagramme, und eine Art numerischer Kriterien, wie Dunns Gültigkeitsindex, Huberts Gamma, G2 / G3-Koeffizient oder den korrigierten Rand-Index. Grundsätzlich wollen wir wissen, wie gut die ursprüngliche Distanzmatrix im Clusterraum angenähert ist , daher ist auch ein Maß für die kophenetische Korrelation hilfreich. Ich benutze auch k-means mit mehreren Startwerten und die Gap-Statistik ( Mirror ), um die Anzahl der Cluster zu bestimmen, die den Wert innerhalb von SS minimieren. Die Übereinstimmung mit der hierarchischen Ward - Clusterung vermittelt einen Eindruck von der Stabilität der Cluster - Lösung (die Sie verwenden können)matchClasses()im e1071- Paket dafür).

Im CRAN Task View- Cluster finden Sie nützliche Ressourcen , unter anderem pvclust , fpc , clv . Ebenfalls einen Versuch wert ist das clValid- Paket ( beschrieben im Journal of Statistical Software ).

Wenn sich Ihre Cluster im Laufe der Zeit ändern, ist dies etwas schwieriger. warum lieber die erste cluster-lösung als eine andere wählen? Erwarten Sie, dass einige Personen aufgrund eines sich mit der Zeit entwickelnden zugrunde liegenden Prozesses von einem Cluster zu einem anderen wechseln?

Es gibt einige Kennzahlen, die versuchen, Cluster mit maximaler absoluter oder relativer Überlappung abzugleichen, wie Sie in Ihrer vorherigen Frage vorgeschlagen haben. Schauen Sie sich Clustering-Vergleiche an - Ein Überblick von Wagner und Wagner.


12

Es gibt keine wirkliche Antwort. Es liegt irgendwo zwischen 1 und N.

Sie können jedoch aus einer Gewinnperspektive darüber nachdenken.

Im Marketing wird beispielsweise eine Segmentierung verwendet, die einer Clusterbildung ähnelt.

Eine Nachricht (z. B. eine Werbung oder ein Brief), die auf jede Person zugeschnitten ist, hat die höchste Rücklaufquote. Eine generische Nachricht, die auf den Durchschnitt zugeschnitten ist, hat die niedrigste Antwortrate. Wenn Sie sagen, dass drei Nachrichten, die auf drei Segmente zugeschnitten sind, irgendwo dazwischen liegen. Dies ist die Einnahmenseite.

Eine Nachricht, die auf jeden Einzelnen zugeschnitten ist, hat die höchsten Kosten. Eine generische Nachricht, die auf den Durchschnitt zugeschnitten ist, hat die niedrigsten Kosten. Drei Nachrichten, die auf drei Segmente zugeschnitten sind, befinden sich irgendwo dazwischen.

Angenommen, ein Schriftsteller für das Schreiben einer benutzerdefinierten Nachricht zu bezahlen, kostet 1000, zwei kostet 2000 und so weiter.

Angenommen, Sie verwenden eine Nachricht und erzielen einen Umsatz von 5.000. Wenn Sie Ihre Kunden in zwei Segmente unterteilt und für jedes Segment maßgeschneiderte Nachrichten verfasst haben, ist Ihre Antwortrate höher. Angenommen, die Einnahmen betragen jetzt 7500. Mit drei Segmenten, einer etwas höheren Rücklaufquote und 9000 Einnahmen. Ein weiteres Segment, und Sie sind bei 9500.

Um den Gewinn zu maximieren, segmentieren Sie so lange, bis der Grenzerlös aus der Segmentierung den Grenzkosten der Segmentierung entspricht. In diesem Beispiel würden Sie drei Segmente verwenden, um den Gewinn zu maximieren.

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

Das ist eine interessante Perspektive!
AndyF

5

Eine der einfachsten Methoden wäre möglicherweise eine grafische Darstellung, bei der die x-Achse die Anzahl der Gruppen und die y-Achse eine Bewertungsmetrik als Abstand oder Ähnlichkeit darstellt. In diesem Diagramm können Sie normalerweise zwei differenzierte Regionen beobachten, wobei der x-Achsenwert am "Knie" der Linie die "optimale" Anzahl von Clustern ist.

Es gibt auch einige Statistiken, die zu dieser Aufgabe hilfreich sein könnten: unter anderem Hubert 'Gamma, Pseudo-T², Pseudo-F oder kubische Clustering-Kriterien (CCC).


Ich bin einverstanden mit chl. Clusteranalysen sind explorative Ansätze und die Interpretation der Ergebnisse, für diesen speziellen Fall die optimale Anzahl von Clustern, hängt von Ihrem Kontext ab. Beispielsweise werden in meiner Arbeit häufig Clusteranalysen verwendet, um Personen anhand mehrerer Merkmale zu klassifizieren, und manchmal ist die Anzahl der Cluster voreingestellt. In diesem Fall ist es unser Ziel, den Satz klassifizierender Variablen zu finden, der die Individuen, die zu verschiedenen Clustern gehören, am besten unterscheidet.
Manuel Ramón


3

Beim hierarchischen Clustering sind die Anzahl der Ausgabepartitionen nicht nur die horizontalen Schnitte, sondern auch die nicht horizontalen Schnitte, die das endgültige Clustering bestimmen. Somit kann dies als ein drittes Kriterium neben der 1. Entfernungsmetrik und dem 2. Verknüpfungskriterium angesehen werden . http://en.wikipedia.org/wiki/Hierarchical_clustering

Das von Ihnen erwähnte Kriterium ist ein drittes Kriterium, das eine Art Optimierungsbedingung für die Menge der Partitionen in der Hierarchie darstellt. Dies wird in diesem Artikel offiziell vorgestellt und es werden Beispiele für die Segmentierung gegeben!

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


1

Wie die anderen Antworten bereits sagten, ist dies definitiv subjektiv und davon abhängig, welche Art von Granularität Sie untersuchen möchten. Für einen allgemeinen Ansatz schneide ich diesen aus, um 2 Cluster und 1 Ausreißer zu erhalten. Ich würde mich dann auf die beiden Cluster konzentrieren, um herauszufinden, ob zwischen ihnen etwas Bedeutendes liegt.

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

Bildbeschreibung hier eingeben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.