Frage

Nehmen Sie eine Gruppe von Datenpunkten an, wie beispielsweise eine hier gezeichnete hier (dieses Diagramm ist nicht spezifisch für mein Problem, sondern nur als geeignetes Beispiel verwendet):

Wenn Sie das Streudiagramm visuell inspizieren, ist es ziemlich offensichtlich, dass die Datenpunkte zwei "Gruppen" bilden, mit einigen zufälligen Punkten, die offensichtlich auch nicht gehören.

Ich suche einen Algorithmus, der mir erlauben würde:

  • Beginnen Sie mit einem Datensatz von zwei oder mehr Dimensionen.
  • Erkennen Sie solche Gruppen aus dem Datensatz ohne Vorkenntnisse darüber, wie viele (oder falls vorhanden) möglicherweise da ist
  • Sobald die Gruppen erkannt wurden, fragen Sie das Modell der Gruppen, wenn ein neuer Beispielpunkt zu einer der Gruppen zu passen scheint
War es hilfreich?

Lösung

Es gibt viele Möglichkeiten, aber wenn Sie an der Wahrscheinlichkeit interessiert sind, dass ein neuer Datenpunkt zu einer bestimmten Mischung gehört, würde ich einen probabilistischen Ansatz verwenden, wie z.

Maximale Wahrscheinlichkeitsschätzung von Mischmodelle werden in MATLAB implementiert.

Ihre Anforderung, dass die Anzahl der Komponenten unbekannt ist, macht Ihr Modell komplexer. Der dominante probabilistische Ansatz besteht darin, einen Dirichlet -Prozess vor der Mischverteilung vorzulegen und nach einer Bayes'schen Methode abzuschätzen. Zum Beispiel siehe Dieses Papier über unendliche Gaußsche Mischungsmodelle. Das DP -Mischungsmodell gibt Ihnen eine Schlussfolgerung über die Anzahl der Komponenten und die Komponenten, zu denen jedes Element gehört, genau das, was Sie wollen. Alternativ können Sie die Modellauswahl für die Anzahl der Komponenten ausführen, dies ist jedoch im Allgemeinen weniger elegant.

Es gibt viele Implementierung von DP -Mischungsmodellen, aber sie sind möglicherweise nicht so bequem. Zum Beispiel hier ist ein MATLAB -Implementierung.

Ihr Diagramm deutet darauf hin, dass Sie ein R -Benutzer sind. In diesem Fall liegt die Antwort auf Ihre Frage in diesem Fall, wenn Sie nach vorverpackten Lösungen suchen Aufgabenansicht für die Clusteranalyse.

Andere Tipps

Ich denke, Sie suchen nach etwas im Sinne von a K-Means Clustering-Algorithmus.

Sie sollten in der Lage sein, angemessene Implementierungen in den meisten allgemeinen Sprachen zu finden.

Sie benötigen einen von Clustering -Algorithmen. Alle von ihnen können in 2 Gruppen entwickelt werden:

  1. Sie geben die Anzahl der Gruppen (Cluster) - 2 Cluster in Ihrem Beispiel an
  2. Algorithmus versucht, die korrekte Anzahl von Clustern selbst zu erraten

Wenn Sie einen Algorithmus des 1. Typs wünschen, brauchen Sie K-Means wirklich.

Wenn Sie einen Algorithmus des 2. Typs wünschen, benötigen Sie wahrscheinlich einen hierarchischen Clustering -Algorithmen. Ich habe noch nie einen von ihnen implementiert. Aber ich sehe eine einfache Möglichkeit, K-Means so zu verbessern, dass es unnötig ist, die Anzahl von Clustern anzugeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top