Ich habe einige Datenpunkte, die jeweils 5 Vektoren agglomerierter diskreter Ergebnisse enthalten, wobei die Ergebnisse jedes Vektors durch eine andere Verteilung generiert werden (die spezifische Art, von der ich nicht sicher bin, ist Weibull, wobei der Formparameter etwa exponentiell zur Potenz variiert) Gesetz (1 bis 0, ungefähr).)
Ich versuche, einen Clustering-Algorithmus wie K-Means zu verwenden, um jeden Datenpunkt anhand der Attribute seiner 5-Komponenten-Verteilungen in Gruppen einzuteilen. Ich habe mich gefragt, ob es etablierte Entfernungsmetriken gibt, die für diese Zwecke elegant sind. Bisher hatte ich drei Ideen, aber ich bin kein erfahrener Statistiker (eher ein beginnender Data-Mining-Informatiker), daher habe ich keine Ahnung, wie weit ich von der Strecke abweiche.
Da ich nicht genau weiß, mit welcher Art von Verteilungen ich es zu tun habe, bestand mein brachialer Ansatz für das Problem darin, jede der Verteilungen (ich habe 5 pro Punkt) in ihre jeweiligen diskreten Datenwerte zu zerlegen (I pad) jeweils gleich lang und mit Nullen am Ende) und verwenden Sie jeden dieser Werte als separates Attribut für den Datenpunkt selbst. Ich habe versucht, sowohl die Manhattan-Entfernung als auch die euklidische Entfernung als Metriken basierend auf diesen Attributen für PDF und CDF zu verwenden.
Da ich nicht weiß, welche Arten von Verteilungen ich habe, habe ich mir gedacht, dass ich, wenn ich den Abstand zwischen den Gesamtverteilungen messen würde, einen nicht-parametrischen Test paarweise zwischen Verteilungen verwenden könnte, wie z. B. den KS-Test , um die Wahrscheinlichkeit zu ermitteln, dass die angegebenen Distributionen von verschiedenen PDFs generiert wurden. Ich dachte, dass meine erste Option (oben), die Manhattan-Entfernung zu verwenden, eine Art Obergrenze für das wäre, was ich mit diesem Ansatz erhalten könnte (da die KS-Statistik der maximale Absolutwert der Differenz der CDFs ist, wobei Manhattan-Entfernung die ist Summe der absoluten Werte der Differenzen in den PDFs). Ich überlegte dann, die verschiedenen KS-Statistik- oder P-Werte innerhalb jedes Datenpunkts zu kombinieren, wobei wahrscheinlich der euklidische Abstand verwendet wurde, aber möglicherweise nur das Maximum aller dieser Werte genommen wurde.
Um zu versuchen, das Wenige zu verwenden, das ich über die Form der Verteilungen interpretieren kann, dachte ich, ich könnte versuchen, die Parameter der Verteilungen als in eine Weibull-Kurve einpassend zu schätzen. Ich könnte dann die Verteilungen auf der Grundlage von Unterschieden in den beiden Parametern der Weibull-Verteilung, Lambda und k (Skala und Form), gruppieren, die wahrscheinlich gemäß der Varianz dieser Parameter oder einer Art normalisiert sind. Dies ist der einzige Fall, in dem ich dachte, ich könnte eine Idee haben, wie man die Parameter normalisiert.
Meine Frage ist also, welche Maßnahme / Methoden würden Sie für das Clustering von Verteilungen empfehlen? Bin ich überhaupt auf dem richtigen Weg? Ist K-Means überhaupt ein guter Algorithmus?
Edit: Klärung von Daten.
Jeder Datenpunkt (jedes Objekt Obj
, das ich gruppieren möchte) enthält tatsächlich buchstäblich 5 vectors
Daten. Ich weiß, dass es genau 5 Phasen gibt, in denen sich diese Objekte befinden können. Wir werden (zur Vereinfachung) sagen, dass jeder Vektor von ist length N
.
Jeder dieser Vektoren (es nennt vector i
) eine Wahrscheinlichkeitsverteilung mit ganzer Zahl x-values
von 1 bis N, wobei jeder entsprechenden y-Wert , der die Wahrscheinlichkeit der Messung darstellt , value x
in phase i
der das Objekts Obj
. N ist dann der maximale x-Wert, den ich in einer beliebigen Phase des Objekts zu messen erwarte (dies ist in meiner Analyse eigentlich keine feste Zahl).
Ich bestimme diese Wahrscheinlichkeiten auf folgende Weise:
Ich nehme einen einzigen
Obj
und steckte es inphase i
fürk trials
eine Messung bei jedem Versuch nehmen. Jede Messung ist eine ganze Zahl. Ich mache dies für jede von 5 Phasen eines einzelnen Objekts und wiederum für jedes Objekt. Meine Rohmessdaten für ein einzelnes Objekt könnten folgendermaßen aussehen:Vektor 1. [90, 42, 30, 9, 3, 4, 0, 1, 0, 0, 1]
Vektor 2. [150, 16, 5, 0, 1, 0, 0, 0, 0, 0, 0]
...
Vektor 5. [16, ... ..., 0]
Dann normalisiere ich jeden der Vektoren für sich in Bezug auf die Gesamtzahl der Messungen in diesem gegebenen Vektor. Dies gibt mir eine Wahrscheinlichkeitsverteilung in diesem Vektor, wobei jeder entsprechende y-Wert die Wahrscheinlichkeit des Messens
value x
in darstelltphase i
.