He visto una cantidad razonable de la literatura acerca de cómo elegir los núcleos y anchos de banda cuando el cálculo de una estimación de densidad de kernel, pero actualmente estoy interesado en cómo mejorar el tiempo que se necesita para evaluar el resultado de KDE en un número arbitrario de puntos.
En mi caso, estoy utilizando un multidimensionales (2D o 3D) núcleo Gaussiano con diagonal de la covarianza (es decir, cada dimensión es independiente). Los anchos de banda en cada una de las dimensiones pueden variar y son seleccionadas usando vecinos más próximos. Sin embargo, mi pregunta probablemente se extiende a diferentes kernels y el ancho de banda de los métodos de selección.
Digamos que tengo $M$ puntos de datos y desea evaluar la resultante de KDE en $N$ puntos de cuadrícula. Una implementación simple consiste en la evaluación de la normal multivariante pdf $MN$ veces. Para mis propósitos, $M$ e $N$ están en el orden de los miles, y la evaluación se ha convertido en el cuello de botella en mi código.
Yo no soy consciente de si existen generalmente aceptados, las mejoras de este método básico. He encontrado este documento, que pretende reducir la complejidad de $O(MN)$ a $O(M+N)$. Sin embargo, el método no ha sido implementado en cualquier 'estándar' R o librerías de Python, que yo sepa - lo que sugiere que aún no ha sido ampliamente adoptado?
Gracias por los punteros que puede dar.