Clustering von 1D-Daten

16

Ich habe einen Datensatz, ich möchte Cluster auf diesen Daten basierend auf nur einer Variablen erstellen (es fehlen keine Werte). Ich möchte 3 Cluster basierend auf dieser einen Variablen erstellen.

Welcher Clustering-Algorithmus soll verwendet werden, k-means, EM, DBSCAN usw.?

Meine Hauptfrage ist, unter welchen Umständen sollte ich k-means über EM oder EM über k-means verwenden?

Ali
quelle
1
Der EM-Algorithmus ist ein Allzweckwerkzeug für die Abschätzung der maximalen Wahrscheinlichkeit mit fehlenden Daten. Können Sie genauer sagen, wie es sich um einen "Clustering-Algorithmus" handelt?
Makro
Ich benutze Weka als Werkzeug und unter Clustering-Algorithmus wird EM als Algorithmus aufgeführt. Es tut mir leid für die lahme Frage, ich bin neu im Data-Mining.
Ali
Ich weiß, dass der EM-Algorithmus verwendet wird, um die maximale Wahrscheinlichkeit für latente Variablenmodelle (die als "fehlende Daten" angesehen werden können) zu schätzen, und latente Variablen werden häufig verwendet, um Clustering zu modellieren. Vielleicht ist das gemeint.
Makro
@macro: Sie können hier einen Blick werfen: stat.washington.edu/mclust für den Anfang.
User603
3
Was ist der Zweck des Clusters? Wie bei den meisten statistischen Fragen gibt es mehrere Antworten, und die Kenntnis des Zwecks ist ein wesentlicher Leitfaden für die Auswahl geeigneter oder guter Antworten.
Whuber

Antworten:

11

Der K-Means-Algorithmus und der EM-Algorithmus werden für 1D-Clustering ziemlich ähnlich sein.

In K-means beginnen Sie mit einer Vermutung, wo sich die Mittelwerte befinden, und ordnen jeden Punkt dem Cluster mit dem nächstgelegenen Mittelwert zu. Anschließend berechnen Sie die Mittelwerte (und Varianzen) basierend auf den aktuellen Zuweisungen von Punkten neu und aktualisieren dann die Zuweisung von Punkten die Mittel ...

In EM würden Sie auch mit einer Vermutung beginnen, wo sich die Mittelwerte befinden, dann den erwarteten Wert der Zuweisungen berechnen (im Wesentlichen die Wahrscheinlichkeit, dass sich jeder Punkt in jedem Cluster befindet) und dann die geschätzten Mittelwerte (und Abweichungen) unter Verwendung der erwarteten Werte aktualisieren als Gewichte, dann neue Erwartungswerte berechnen, dann neue Mittelwerte berechnen, ...

Der Hauptunterschied besteht darin, dass die Zuweisung von Punkten zu Clustern in K-Means ein Alles oder Nichts ist, wobei EM die Proportionen / Wahrscheinlichkeit einer Gruppenzugehörigkeit angibt (ein Punkt kann mit einer Wahrscheinlichkeit von 80% in Gruppe A angesehen werden, mit einer Wahrscheinlichkeit von 18% in Gruppe B zu sein, und 2% Wahrscheinlichkeit, in Gruppe C zu sein). Wenn es eine große Trennung zwischen den Gruppen gibt, werden die beiden Methoden ziemlich ähnliche Ergebnisse liefern. Wenn es jedoch eine ausreichende Überlappung gibt, liefert die EM wahrscheinlich aussagekräftigere Ergebnisse (noch mehr, wenn die Varianz / Standardabweichung von Interesse ist). Wenn Sie jedoch nur eine Gruppenmitgliedschaft zuweisen möchten, ohne sich um die Parameter zu kümmern, ist K-means wahrscheinlich einfacher.

Warum nicht beides und sehen, wie unterschiedlich die Antworten sind? Wenn sie ähnlich sind, entscheiden Sie sich für den Vergleich der Gruppierung mit den Daten und dem Fremdwissen.

Greg Snow
quelle
Vielen Dank, greg, Ihr Beitrag hat geholfen. Ich habe beides angewendet und es scheint, dass EM bessere Cluster als k-mean generiert hat. (Ich denke, es liegt hauptsächlich daran, dass die Daten, die ich habe, kontinuierlich sind und es keine Lücken gibt). Ich bin ein wenig verwirrt, da ich nur 1D-Daten habe, dann sollte ich wahrscheinlich Binning machen, um die Daten zu kategorisieren. Was denkst du? Was genau meinen Sie mit Parametern? Bezieht es sich auf Attribute einer Instanz? Danke Ali
Ali
Hm EM alleine scheint nicht ausreichend zu sein. Sie benötigen eine Annahme über die Verteilung der zugrunde liegenden Verteilungen des Gemisches.
Tomka
2

EM ist in Bezug auf die Ergebnisse besser als k-means.

K-means hat jedoch eine schnellere Laufzeit.

Sie führen zu ähnlichen Ergebnissen, wenn die Standardabweichungs- / Kovarianzmatrizen ungefähr gleich sind. Wenn Sie vermuten, dass dies zutrifft, verwenden Sie k-means.

DBSCAN wird verwendet, wenn die Daten nicht gaußsch sind. Wenn Sie eindimensionale Daten verwenden, gilt dies in der Regel nicht, da eine Gauß-Näherung in der Regel in einer Dimension gültig ist.

user52516
quelle
0

Eine andere einfache Möglichkeit besteht darin, das 1D-Array grundsätzlich zu sortieren: dh über jeden Punkt iterieren und die Werte abrufen, die sowohl in positiver als auch in negativer Richtung einen Mindestabstand dazu haben. Beispielsweise:

data = [1,2,3,4,5,6,7,8,9,10,12]
k = 5
for a in data:
   print {'group': sorted(k, key=lambda n: abs(n-a))[0:k], 'point': a}

wird geben:

{'group': [1, 2, 3, 4, 5], 'point': 1}
{'group': [2, 1, 3, 4, 5], 'point': 2}
{'group': [3, 2, 4, 1, 5], 'point': 3}
{'group': [4, 3, 5, 2, 6], 'point': 4}
{'group': [5, 4, 6, 3, 7], 'point': 5}
{'group': [6, 5, 7, 4, 8], 'point': 6}
{'group': [7, 6, 8, 5, 9], 'point': 7}
{'group': [8, 7, 9, 6, 10], 'point': 8}
{'group': [9, 8, 10, 7, 6], 'point': 9}
{'group': [10, 9, 8, 12, 7], 'point': 10}
{'group': [12, 10, 9, 8, 7], 'point': 12}

Welche Punkte, dass die Objekte in der Nähe eines bestimmten Punktes sind grundsätzlich unter seiner Gruppe. Das einzige, worüber man bei dieser Technik nachdenken muss, ist die Variable k, die die feste Größe des Clusters ist :-).

Khan
quelle
-2

Wenn es nur eine Variable gibt, ist kein Clustering erforderlich. Sie können Ihre Beobachtungen einfach anhand der Verteilung der Variablen gruppieren.

Oder fehle ich hier ein paar Punkte?

FMZ
quelle
5
Können Sie ein konkretes Beispiel für das Gruppieren von Beobachtungen anhand der Variablenverteilung geben?
Ali
@ composer314: mit einem histogramm?
nico
1
Es tut mir leid, aber ich folge immer noch nicht. Wie kann ich ein Histogramm verwenden, um verwandte Beobachtungen zu gruppieren? (Ich schätze, die Frage, die ich stellen könnte, ist, wie man Klumpen in einem Histogramm findet. Würde dies dem Aufnehmen von Spektralpeaks ähneln?)
Ali,
5
@composer Die Verwendung des Histogramms oder sogar eines Kernels, der die Daten glättet, ist normalerweise kein "einfacher" Weg, Cluster zu bilden. Wenn Sie diesen Weg gehen möchten, müssen Sie ein Modell mit endlicher Mischung anpassen . Wenn Sie nur wissen möchten, was eine zufällige Ansicht eines Histogramms vermuten lässt, verwenden Sie K-means (auch bekannt als Jenks-Methode , beliebt bei Kartographen).
whuber