Clustering-Verteilungen

10

Ich habe mehrere Verteilungen (10 Verteilungen in der Abbildung unten). Verteilungen

Tatsächlich handelt es sich um Histogramme: Auf der x-Achse gibt es 70 Werte, die die Größe einiger Partikel in einer Lösung darstellen, und für jeden Wert von x ist der entsprechende Wert von y der Anteil der Partikel, deren Größe um den Wert von x liegt.

Ich möchte diese Distributionen gruppieren. Derzeit verwende ich zum Beispiel ein hierarchisches Clustering mit dem euklidischen Abstand. Ich bin mit der Wahl der Entfernung nicht zufrieden. Ich habe eine informationstheoretische Distanz wie Kullback-Leibler ausprobiert, aber die Daten enthalten viele Nullen, was zu Schwierigkeiten führt. Haben Sie einen Vorschlag für eine angemessene Entfernung und / oder eine andere Clustering-Methode?

Stéphane Laurent
quelle

Antworten:

15

Ich verstehe Sie so, dass alle Verteilungen möglicherweise dieselben 70 diskreten Werte annehmen können. Dann können Sie die kumulativen Kurven der Verteilungen leicht vergleichen (der Vergleich der kumulativen Kurven ist die allgemeine Methode zum Vergleichen von Verteilungen). Dies ist ein Sammelvergleich für Unterschiede in Form, Lage und Ausbreitung.

Bereiten Sie also Daten in der Form vor (A, B, ... usw. sind die Verteilungen).

Value CumProp_A CumProp_B ...
1       .01       .05
2       .12       .14
...     ...       ...
70      1.00      1.00

und berechne eine Distanzmatrix zwischen den Verteilungen. Bei hierarchischem Clustering einreichen (ich würde eine vollständige Verknüpfungsmethode empfehlen). Welche Entfernung? Wenn Sie der Meinung sind, dass zwei kumulative Kurven sehr unterschiedlich sind, wenn sie nur bei einem Wert ( b ) weit voneinander entfernt sind , verwenden Sie den Chebyshev-Abstand. Wenn Sie der Meinung sind, dass zwei kumulative Kurven nur dann sehr unterschiedlich sind, wenn eine über einen weiten Wertebereich ( c ) stabil übereinander liegt , verwenden Sie den autokorrelativen Abstand. Wenn lokale Unterschiede zwischen den Kurven wichtig sind ( a ), verwenden Sie den Manhattan-Abstand.

Geben Sie hier die Bildbeschreibung ein

PS Der autokorrelative Abstand ist nur ein nicht normalisierter Autokorrelationskoeffizient der Unterschiede zwischen den kumulativen Kurven X und Y:

i=2N(XY)i(XY)i1

ttnphns
quelle
Ausgezeichnet - vielen Dank! Ich werde dies morgen tun
Stéphane Laurent
Der autokorrelative Abstand ist möglicherweise negativ. Ist es wirklich die gute Definition?
Stéphane Laurent
Ich habe vergessen, eine andere Frage zu stellen: Warum würden Sie die vollständige Verknüpfung empfehlen?
Stéphane Laurent
Sie können gegebenenfalls negative Produktterme auf Null setzen. Ich bestehe nicht auf einer vollständigen Verknüpfung, sondern warne vor "geometrischen" Methoden wie Ward oder Centroid, da die Entfernungen nicht euklidisch sind. Ich dachte auch, dass eine "dilatative" Methode wie die vollständige Verknüpfung nach Ihren Wünschen sein wird
ttnphns
4

Wenn es sich bei Ihren Daten um Histogramme handelt, sollten Sie geeignete Abstandsfunktionen wie die "Histogramm-Schnittentfernung" untersuchen.

Es gibt ein Tool namens ELKI, das eine Vielzahl von Clustering-Algorithmen enthält (viel moderner als k-means und hierarchisches Clustering) und sogar eine Version des Histogramm-Schnittabstands enthält, die Sie in den meisten Algorithmen verwenden können. Vielleicht möchten Sie einige der darin verfügbaren Algorithmen ausprobieren. Aus der Handlung, die Sie oben gegeben haben, ist mir nicht klar, was Sie tun möchten. Gruppieren Sie die einzelnen Histogramme, richtig? Gemessen an den 10, die Sie oben gezeigt haben, gibt es möglicherweise keine Cluster.

Hat aufgehört - Anony-Mousse
quelle
Vielen Dank. Aber ich suche nach einem Tool, das in R oder SAS verfügbar ist. Dann sind zehn Distributionen oben nur ein Beispiel. Ich habe viele Serien von Distributionen zum Clustering.
Stéphane Laurent
2

Möglicherweise möchten Sie eine Feature-Extraktionstechnik verwenden, um Deskriptoren für ein k-Mittel oder eine andere Art von Clustering abzuleiten.

Ein grundlegender Ansatz wäre, eine bestimmte Verteilung an Ihre Histogramme anzupassen und deren Parameter als Deskriptoren zu verwenden. Zum Beispiel scheinen Sie bimodale Verteilungen zu haben, die Sie mit 2 Mitteln und 2 Standardabweichungen beschreiben können.

Eine andere Möglichkeit besteht darin, die ersten zwei oder drei Hauptkomponenten der Anzahl der Histogramme zu gruppieren.

Alternativ können Wavelets-Ansätze verwendet werden.

Auf dieser Seite wird erläutert, wie dies beim Umgang mit extrazellulären Spikes geschieht. Die Daten sind unterschiedlich, aber die Idee sollte auf Ihren Fall anwendbar sein. Unten finden Sie auch viele Referenzen.

http://www.scholarpedia.org/article/Spike_sorting

In R können Sie die Hauptkomponenten Ihrer Peaks entweder mit der Funktion princompoder berechnen prcomp. Hier finden Sie ein Tutorial zu PCA in R.

Für Wavelets können Sie sich das waveletsPaket ansehen .

k-Mittel-Clustering kann mit der kmeansFunktion erreicht werden .

nico
quelle
Vielen Dank, ich werde mir Ihren Vorschlag nach Möglichkeit ansehen.
Stéphane Laurent