Ich habe eine angemessene Menge an Literatur über die Auswahl von Kerneln und Bandbreiten bei der Berechnung einer Kerneldichteschätzung gesehen, bin aber derzeit daran interessiert, wie die Zeit verbessert werden kann, die zur Bewertung des resultierenden KDE an einer beliebigen Anzahl von Punkten erforderlich ist.
In meinem Fall verwende ich einen mehrdimensionalen (2D oder 3D) Gaußschen Kernel mit diagonaler Kovarianz (dh jede Dimension ist unabhängig). Die Bandbreiten in jeder Dimension können unterschiedlich sein und werden unter Verwendung der nächsten Nachbarn ausgewählt. Meine Frage erstreckt sich jedoch wahrscheinlich auf verschiedene Kernel und Bandbreitenauswahlmethoden.
Angenommen, ich habe Datenpunkte und möchte die resultierende KDE an Gitterpunkten auswerten . Eine einfache Implementierung beinhaltet die Auswertung der multivariaten normalen PDF- Zeiten. Für meine Zwecke liegen und beide in der Größenordnung von Tausenden, und die Bewertung ist zum Engpass in meinem Code geworden.N M N M N.
Mir ist nicht bekannt, ob es allgemein akzeptierte Verbesserungen dieser grundlegenden Methode gibt. Ich habe dieses Papier gefunden, das behauptet, die Komplexität von auf zu reduzieren . Die Methode wurde jedoch in keiner mir bekannten 'Standard'-R- oder Python-Bibliothek implementiert - was darauf hindeutet, dass sie noch nicht weit verbreitet ist?O ( M + N )
Vielen Dank für alle Hinweise, die Sie geben können.
quelle