¿Qué es un filtro de Kalman?

Como esto fue etiquetado bajo Finanzas en lugar de Matemáticas, daré una descripción conceptual / de muy alto nivel.

Un filtro de Kalman es una técnica para combinar (1) un modelo genérico de un sistema y (2) puntos de datos de una instancia específica de ese sistema para (3) estimar el estado interno de ese sistema en particular. Por ejemplo, suponga que básicamente sabía cómo la gravedad actuaba en las pelotas de béisbol en general, y tenía algunas instantáneas borrosas de una pelota bateada en vuelo (de un solo golpe); el filtro de Kalman podría usarse para decirle a dónde iba realmente la pelota de béisbol: mejor que extrapolar cualquier instantánea borrosa sola (y “mejor” que cualquier otro algoritmo en los mismos datos completos en un sentido específico; los filtros de Kalman minimizan el error de estimación cuadrático medio por diseño).

No es nada mágico: puede encontrar una descripción en la mayoría de las estadísticas y en cualquier libro de procesamiento de señales, y hay varias bibliotecas de código abierto. Son interesantes porque son bastante fáciles de implementar y porque son una forma de estimación recursiva . En realidad, no es necesario almacenar cada instantánea borrosa del béisbol en la memoria y luego actuar en consecuencia; simplemente puede mantener un “estado de ejecución” en la memoria y luego integrar cada nueva instantánea en el estado recientemente actualizado, de modo que admita operaciones en tiempo real / en curso (en lugar de solo lotes) .

Para cada nuevo punto de datos, hay dos pasos; Kalman Filter predecirá el estado del sistema hasta ahora, y luego tomará la siguiente muestra de datos reales (difusa / ruidosa) y la usará para actualizar el estado en sí mismo para una mejor estimación. El filtro Kalman de vainilla supone que el sistema tiene una dinámica lineal, pero hay extensiones que relajan esa suposición.

Hay un breve tratamiento en Nature of Mathematical Modeling de Gershenfeld, y la página de Wikipedia también es bastante buena (http://en.wikipedia.org/wiki/Kal…).

tl; dr: El filtro de Kalman es un método para resolver la versión continua de los modelos ocultos de Markov.

Es decir, los modelos ocultos de Markov tienen un conjunto discreto de estados ocultos (por ejemplo, está nevando, lloviendo o soleado donde vive tu amigo Bob al otro lado del mundo, y no sabes cuál porque nunca habla del clima) y un conjunto típicamente discreto de observaciones (Bob salió a correr o permaneció adentro todo el día, dependiendo del clima, y ​​usted sabe lo que hizo porque actualiza su cuenta de Twitter).

Pero supongamos que, en cambio, tiene un conjunto continuo de estados ocultos (la temperatura exterior) y un conjunto continuo de observaciones (cuántas millas corrió Bob, desde su cuenta NikePlus). Lo visitarás pronto, por lo que debes estimar la temperatura para saber qué ropa llevar. Pero todo lo que sabes es cuántas millas corrió Bob, entonces, ¿cómo haces esto? El filtro de Kalman básicamente dice:

  • Calcule hoy la temperatura donde vive Bob. Tal vez es verano y Bob vive en Egipto, por lo que según su conocimiento general del clima en todo el mundo, estima que es alrededor de 90 F.
  • Dada su estimación, prediga cuántas millas correrá Bob. Quizás Bob coma más helado cuanto más caliente esté, así que sabes que correrá hasta que queme todas esas calorías.
  • Ahora, al final del día, verifique la cuenta NikePlus de Bob para averiguar cuántas millas corrió realmente. Vea qué tan lejos estaba su estimación. Si corrió más millas de lo que pensaba que haría, eso probablemente significa que hacía más calor de lo que inicialmente pensó, por lo que debería revisar su estimación de la temperatura actual; de manera similar, si corrió menos millas de lo que pensabas que debería, deberías revisar tu estimación de la temperatura actual. [El filtro de Kalman te dice cómo hacer exactamente esta revisión.]
  • Dada su estimación revisada de la temperatura de hoy, puede usarla para estimar cuál será la temperatura de mañana. Entonces, ahora está exactamente de vuelta en el primer paso, así que enjuague y repita hasta su visita.

Respuesta del laico: Digamos que estás caminando hacia una pared a una velocidad constante y quieres estimar qué tan lejos estás de la pared. La forma más fácil es usar un sensor que le brinde la distancia entre usted y la pared en cualquier momento. Pero digamos que comienzas a dudar del sensor. Siente que de alguna manera el sensor no está dando la distancia exacta entre usted y la pared. Entonces dejas de confiar en tu sensor. Entonces, Qué haces ? Busca otras formas fáciles de medir la misma distancia junto con el sensor que ya tiene.

Suponga que hace unos días midió cuánta distancia se mueve cuando da un paso adelante. Entonces, utilizando este conocimiento, puede estimar la distancia que ha avanzado simplemente contando la cantidad de pasos que realizó. Entonces, ahora tiene dos estimaciones diferentes de la misma distancia. Uno del sensor. Otro de su propia estimación del número de pasos.

Ahora, el problema es confiar en cualquiera de estos o encontrar la distancia combinando ambas estimaciones. Si cree que su sensor proporciona la estimación perfecta de la distancia, puede tomar el valor solo del sensor e ignorar su estimación. Del mismo modo, si sabe que ha dado pasos uniformes hacia la pared y siente que son iguales al valor medido previamente, puede ignorar el sensor y confiar solo en su propia estimación. Pero el método más práctico es usar ambas estimaciones para medir la distancia. Según cuánto confía en su sensor y su propia estimación, puede combinar estos dos valores para estimar mejor su distancia entre usted y la pared. Y este método elegante se llama ” Filtro de Kalman” .

Entonces funciona en cuatro pasos:

1) Usted predice su próximo estado (el que desea medir, la distancia entre la pared y usted en el ejemplo anterior) en función de la estimación de su estado anterior y la acción que toma para pasar al siguiente estado. (Técnicamente llamado Modelo de transición / Modelo de movimiento / Modelo de proceso o Paso de predicción )

2) Luego mides tu estado usando algún sensor (Técnicamente llamado como Modelo de Medición )

3) Luego, en función de cómo confía en estos dos valores estimados, actualiza el valor estimado ( Paso de actualización ). Este es el valor estimado final

4) Usando el valor obtenido del Paso 3, vaya al paso 1 y siga repitiendo a medida que pasa el tiempo.

Conclusión: puede parecer una tontería usar este tipo de método para estimar algo tan simple como la distancia entre usted y la pared. Pero su aplicación real va mucho más allá. Para comprender su aplicación real, tomemos un ejemplo de un robot volador. Digamos que un pequeño robot vuela en un ambiente interior. ¿Cuál es la mejor manera de estimar su posición en 3 dimensiones? En un ambiente interior, las personas usan el sistema de captura de movimiento (por ejemplo, VICON) para estimar la posición. Pero este sistema de captura de movimiento no funcionará en entornos al aire libre. Entonces, Qué haces ? Utiliza otros sensores para medir la posición del robot volador. Un sensor común es usar una cámara y con algunas técnicas de visión por computadora (homografía, flujo óptico, geometría proyectiva) puede estimar la posición relativa a algo. Pero no siempre puedes confiar en esto. Entonces necesitas uno más. Aquí, el sensor IMU a bordo viene a rescatar. La IMU a bordo proporciona una estimación de aceleraciones lineales y velocidades angulares. En términos simples, puede integrarlos para obtener la posición del robot volador. Pero de nuevo, no confías en estos también. Entonces, ¿qué haces para obtener la mejor estimación posible de tu robot volador? La respuesta es KALMAN FILTER

More Interesting

¿Qué debo hacer en mis vacaciones de verano, dado que soy estudiante de informática (1er año)?

¿Qué algoritmos se pueden usar para determinar si dos preguntas (como las de Quora) son de alguna manera similares?

Es un método de retroceso para imprimir permutaciones de cadena. No entiendo de qué manera se produce el flujo de control, como después de encontrar el intercambio, el intercambio se llama luego permutar y luego nuevamente. ¿Esto no se me viene a la cabeza?

Cómo aprender la estrategia de algoritmos

¿Por qué SuperMemo no es tan fácil de usar como Anki?

Cómo verificar si un cuadrado dibujado está cerrado (tiene los 4 lados dibujados)

¿Cuál es una versión más amigable para principiantes de CLRS para algoritmos de aprendizaje? ¿Estaría rompiendo la entrevista de codificación?

¿Cuáles son los buenos canales en YouTube para aprender algoritmos y estructuras de datos para la preparación de Google Code Jam o Facebook Hacker Cup?

¿Es posible aprender estructuras de datos y algoritmos en un mes?

¿Existen algoritmos en R que permitan clasificar una variable binaria basada en un conjunto de cadenas (texto)?

¿Cuál es un problema que no se puede resolver en tiempo de EXP pero se puede resolver en tiempo de Tetración?

¿Cuánto cálculo se requiere para comprender algoritmos y redes de computadoras?

¿Cuáles son las ventajas de los algoritmos de aprendizaje de refuerzo como LinUCB sobre otros algoritmos de predicción de CTR en línea como la regresión logística en línea?

¿Cuál sería un buen método o algoritmo para predecir el ganador de una carrera de caballos, dada una gran cantidad de información sobre las carreras de caballos?

¿Cuál es el programa de clasificación rápida que tiene su mediana como pivote?