¿Implementación de matriz dispersa del filtro de Kalman?

8

Tengo un código de modelado basado en el filtro Kalman que he desarrollado para una aplicación de mapeo ionosférico regional casi en tiempo real. El código asimila datos de diferentes sensores en un mapa (descrito por un conjunto de funciones básicas) utilizando un filtro Kalman.

Estoy tratando de escalar esto a una región más grande y más sensores, sin embargo, la parte de álgebra matricial del filtro de Kalman se está volviendo muy lenta, debido a las grandes matrices (miles de filas / columnas) involucradas. Sospecho que la mejor manera de atacar el problema del tiempo de ejecución es utilizar el hecho de que estas matrices suelen ser muy escasas con un 80% o más del total de elementos cero. La razón de esto es que cada sensor tiene un parámetro de polarización que se estima conjuntamente con los coeficientes del mapa. Esto se muestra como un 1 en la columna para ese sensor en la matriz Kalman H, con cero en las columnas para cada otro sensor y coeficiente de mapa. Hay cientos de sensores cada uno contribuyendo 8-10 observaciones en cada época, por lo tanto, muchos ceros.

Podría considerar implementar los componentes del filtro de Kalman usando algoritmos dispersos, específicamente multiplicación e inversión *, pero me pregunto si existe un enfoque aún mejor que relanza el filtro de Kalman en una forma diferente más adecuada para los casos en que las matrices son ¿escaso? Sé que podría usar un filtro de Kalman de conjunto o algo similar, pero si es posible, me gustaría conservar la optimización del filtro lineal puro de Kalman; el volumen total de datos no es prohibitivo, solo las grandes matrices dispersas que resultan del modelo lineal.

En términos de implementación, esto se realiza en IDL, sin embargo, el álgebra de la matriz central se realiza a través de llamadas a bibliotecas externas optimizadas de LA (específicamente ATLAS).

* Sé que una implementación óptima del filtro de Kalman evita la inversión y en su lugar usa una descomposición UD. Estoy considerando intentar implementar algo como esto, por lo que esa puede ser la respuesta, pero estoy buscando si hay una mejor solución dada la escasez de matrices.

Bogdanovist
fuente
1
Creo que esta pregunta sería mejor si incluyeras la cantidad mínima de matemáticas para describir el problema. Muchas personas aquí están familiarizadas con el álgebra lineal, pero no con el proceso de filtrado de Kalman subyacente. Describir la matriz H (lo que sea que sea) y las ecuaciones que lo involucran y que está tratando de resolver, debería conducir a una mejor respuesta.
Bill Barth
Quizás tengas razón. Sin embargo, los esquemas de filtrado de Kalman son un gran tema en sí mismos. Sería demasiado pedirle a alguien que sepa cómo funcionan los filtros Kalman a partir de mi pregunta y de eso idear una respuesta. Este sería un trabajo de investigación a nivel de papel (supongo que de todos modos). Creo que cualquiera que esté en condiciones de responder la pregunta no necesitará detalles adicionales.
Bogdanovist

Respuestas:

7

AA1LUAAAA1

Para el filtrado de Kalman en particular, en lugar de la informática

Sk=(HkPk1,kHkT+Rk)1

Sk1SkLDLTHkRkP

Rk

Brian Borchers
fuente
Si fuera usted, comenzaría a buscar en EnKF este problema.
Brian Borchers
2

Tenemos un algoritmo robusto para el filtro Ensemble Kalman (y Kalman regular). Es adecuado para matrices dispersas y cómputo paralelo porque se basa en matrices ortogonales y está relacionado con los algoritmos de raíz cuadrada o UD.

Estaría encantado de enviar el periódico.

Thomas, SJ, J. Hacker y J. Anderson, (2009): una formulación robusta del conjunto de filtros de Kalman Quart J. Royal Met. Soc, vol 135, 507-521,

(El PDF del editor es gratuito ).

Stephen Thomas
fuente
2
Hola esteban Gracias por unirte a scicomp. Entiendo que la pregunta era bastante general, por lo que es imposible dar una respuesta específica. Sin embargo, también en vista del beneficio de otros visitantes, quizás pueda brindar más información sobre lo que su algoritmo realmente hace y proporcionar un enlace estable, por ejemplo. a través del doi, a la referencia.
Jan
Simplemente publicar el resumen aquí sería una buena manera de "explicar" el enlace a los estándares de Stack Exchange.
dmckee --- ex-gatito moderador
Si bien estoy de acuerdo con Jan, los EE que se ocupan de KF (¡como yo!) Generalmente no leen publicaciones meteorológicas. El hecho de que el documento se recomiende como respuesta a un problema notoriamente sutil es una motivación suficiente para que lo descubra.
Damien
El conjunto del filtro de Kalman (EnKF) puede interpretarse en el contexto de la teoría de regresión lineal. Las ecuaciones de filtro son equivalentes a las ecuaciones normales para una estimación de mínimos cuadrados ponderados que minimiza una función cuadrática. Resolver las ecuaciones normales es numéricamente poco confiable y está sujeto a grandes errores cuando el problema está mal condicionado. Se presenta un algoritmo numéricamente confiable y eficiente, basado en la minimización de una alternativa funcional. El método se basa en rotaciones ortogonales, es muy paralelo y no "cuadra" matrices para calcular la actualización del análisis.
Stephen Thomas
0

Hace mucho tiempo tuve la oportunidad de trabajar en la reducción de la dimensionalidad que se ocupa del procesamiento de datos que se encuentran en grandes conjuntos. La idea básica detrás de esto es que procesa los datos a través de unos pocos pasos para orientarlos de la manera en que la mayoría de la información puede calcularse a partir de ellos.

Funciona bastante bien para matrices también y se usa en gran medida. La mejor parte es que ni siquiera necesita programarlo, ya que hay bibliotecas estándar disponibles para ello. Las principales herramientas matemáticas como Matlab y Mathematica también admiten esta funcionalidad directamente.

Hay dos algoritmos principales que logran esto: análisis de componentes principales y descomposición de valores singulares.

Lo que estos algoritmos realmente logran es encontrar esos datos que realmente afectan su lectura por un margen significativo. Internet está lleno de información sobre estos algoritmos. Esto le mostrará cómo lo está haciendo Apache.

Rorschach
fuente
-1

Disculpas por no agregar a la discusión por un tiempo, pero me complacería publicar el resumen del documento, pero también me gustaría explicar las razones por las cuales los cálculos se organizan de manera diferente a los enfoques estándar de KF de EnKF

Stephen Thomas
fuente
El resumen es:
Stephen Thomas
¿Querías decir que esto es un comentario o editar tu otra respuesta?
Jed Brown el