Ich schätze 15 Parameter meines Modells unter Verwendung eines Bayes'schen Ansatzes und einer Markov-Ketten-Monte-Carlo-Methode (MCMC). Meine Daten nach dem Ausführen einer MCMC-Kette von 100000 Proben sind daher eine 100000 × 15-Tabelle mit Parameterwerten.
Ich möchte 15-dimensionale Regionen mit der höchsten Dichte meiner posterioren Verteilung finden.
Mein Problem: Das Clustering der Samples, um sie HDRs zuzuweisen (Beispiel unten mit dichtebasiertem Clustering), erfordert eine Distanzmatrix aller Samples. Für 100000 Samples würde diese Matrix 37 GiB RAM benötigen, was ich nicht habe, ohne von der Rechenzeit zu sprechen. Wie kann ich meine HDRs mit angemessenen Rechenressourcen finden? Jemand muss dieses Problem schon einmal gehabt haben?!
Bearbeitet, um hinzuzufügen: Gemäß dieser SO-Frage und der DBSCAN-Wikipedia-Seite kann DBSCAN unter Verwendung eines räumlichen Index und unter Vermeidung einer Distanzmatrix auf Zeitkomplexität und Raumkomplexität reduziert werden . Immer noch auf der Suche nach einer Implementierung oder einer Beschreibung davon ...
Multivariate Regionen mit der höchsten Dichte mithilfe von dichtebasiertem Clustering (DBSCAN)
Der Bereich mit der höchsten Dichte von AX% ist der Bereich einer Verteilung, der X% der Wahrscheinlichkeitsmasse umfasst. Da mit einer MCMC-Methode gezogene Proben mit einer Häufigkeit (asymptotisch) proportional zur gesuchten posterioren Verteilung erscheinen, umfasst mein X% HDR auch X% meiner Proben.
Ich hatte vor, den dichtebasierten Clustering-Algorithmus DBSCAN zu verwenden, um meine Proben zu clustern, da die Dichte der Proben direkt mit der Peakhöhe meines Seitenzahns zusammenhängt.
In Analogie zur Methode von Hyndman (1996) ( Papier , SO-Frage ) plante ich, den maximalen Abstand einer einzelnen Stichprobe von einem Cluster zu erhöhen, um iterativ als Teil davon betrachtet zu werden, bis X% meiner Stichproben Teil einiger sind Cluster:
Nach diesem Schritt würde ich den Bereich jedes Clusters in jeder Dimension berechnen, um meine Regionen mit der höchsten Dichte darzustellen.
In diesem Beispiel können Sie sehen, dass der 80% HDR zwei unterschiedliche Regionen umfasst, während der 50% HDR nur einen Cluster enthält. Ich könnte dies wie unten gezeigt visualisieren, da die obige Darstellung nicht auf mehr als 2 Dimensionen anwendbar ist:
Antworten:
Ich habe einen Matlab Wrapper für ANN gefunden . ANN ist eine Bibliothek für die ungefähre Suche nach nächsten Nachbarn ( Homepage ). Neben den üblichen Parametern einer räumlichen Indexbereichsabfrage wird ein zusätzlicher Fehlerparameter verwendet,
eps
der die "Annäherung" der Suche angibt: Ein zurückgegebener nächster Nachbar ist höchstens1+eps
weiter vom Abfragepunkt entfernt als der wahre (nicht ungefähre) nächste Nachbar. Suchen Sie im Programmierhandbuch nach dem Begriff "fehlergebunden" , um Informationen zu zu findeneps
.Auf diese Weise kann ich eine schnelle Suche nach dem nächsten Nachbarn in meine DBSCAN-Implementierung aufnehmen, wodurch der in meiner Frage beschriebene Prozess auf eine realisierbare Dauer beschleunigt wird. Ich werde einen Link bereitstellen, sobald die Implementierung abgeschlossen ist.
quelle