Detección de anomalías en espacio

La detección de anomalías es un aspecto muy importante en la monitorización de satélites. Detectar una anomalía a tiempo nos va a permitir, en muchos casos, tomar las medidas necesarias para que la anomalía no se produzca o para minimizar sus efectos.

Te presentamos los retos, una solución sin machine learning, nuestra solución con machine learning usando aprendizaje semi-supervisado, la «salsa secreta», algún ejemplo, soluciones de otros operadores y qué librerías de python te pueden ayudar a detectar anomalías.

A lo mejor no trabajas con satélites o con espacio. Pero seguro que este artículo te da que pensar, y te ofrece soluciones que a lo mejor no habías tenido en cuenta. Te puede venir muy bien si trabajas en monitorización, mantenimiento predictivo o necesitas detectar comportamientos atípicos en datos.

Retos de la detección de anomalías en Operaciones Espaciales

¿Qué es una anomalía?

El primer reto al que nos enfrentamos es la propia definición de anomalía. ¿Qué es una anomalía? Hay varias definiciones, pero la que considero más útil es la que usamos, informalmente, en operaciones de espacio.

No queríamos que esto hubiera pasado

También está, por supuesto, la definición complementaria «queríamos que esto hubiera pasado y no pasó», pero en el 99% de los casos, cuando hablamos de anomalías nos referimos a «no queríamos que esto hubiera pasado».

Es muy difícil instruir a un sistema automático sobre qué es lo que queríamos que no hubiera pasado. Así que, en la práctica, resolvemos un problema más fácil: detectar comportamientos inusuales («novelty detection» en la terminología de machine learning).

Al detectar comportamientos inusuales, no tenemos en cuenta lo que se esperaba … pero es un problema mucho más fácil de afrontar. De hecho, basada en nuestra experiencia podemos afirmar que comportamientos inusuales son en muchas ocasiones la pista de que una anomalía está a punto de ocurrir.

Localización de la anomalía

Saber cuándo hay una anomalía es muy útil. Pero también necesitamos saber dónde está ocurriendo la anomalía.

Los satélites actuales tienen entre 20,000 y 40,000 sensores (sin tener en cuenta los datos científicos). Estos sensores miden cosas tan diversas como el voltaje de la batería, el porcentaje usado de la CPU de ordenador de a bordo, la velocidad a la que se mueven las ruedas de inercia, la presión en los tanques de combustible, etc.

Cuando hay una anomalía, es muy importante que podamos indicar a los ingenieros de operaciones dónde (en qué sensores) está la anomalía para que puedan investigarlo más a fondo.

Anomalías falsas

Hay muchas técnicas de detección de anomalías y detección de outliers. Muchas de ellas tienen el problema de detectar demasiadas anomalías falsas. Demasiados falsos positivos.

Para ponerte un ejemplo, imagina un sistema de monitorización de comportamiento atípico que sea correcto un 99% de las veces. Este sistema sería terrible! Tan malo, que nadie en operaciones espaciales tendría la paciencia de usarlo. ¿Por qué? Porque un 1% de las veces daría una alarma falsa. Con unos 30,000 sensores, esto correspondería a 300 alarmas falsas que alguien tendría que comprobar.

Los falsos positivos en la detección de anomalías tienen un coste. Los ingenieros de operaciones tienen que comprobarlas y esto les lleva tiempo. Sin embargo, el mayor coste es el psicológico. Cuando hay muchos falsos positivos, los ingenieros de operaciones dejarían de confiar en estos resultados.

Así que es mejor tener pocas detecciones pero que las pocas que se detecten sean comportamientos inusuales que merezca la pena investigar.

Obviedad de la anomalía

Al detectar una anomalía, el sistema alerta a los ingenieros de operaciones. Ellos deben considerar obvio por qué el sistema los ha avisado.

Lo que vamos buscando es obviedad. Que cualquier persona al ver un gráfico de la serie temporal histórica diga, hay algo raro aquí. Cualquier persona podría hacerlo, el problema es que hay unos 30,000 sensores que comprobar.

Queremos tener esa intuición humana en un software que pueda hacer esta comprobación automáticamente.

Anomalías que ocurren por primera vez

Las peores anomalías son las que ocurren por primera vez. Nadie esperaba que esto ocurriese.

Por supuesto, sabemos que habrá anomalías en los satélites que operamos. Esto es normal porque muchos satélites son construidos pensando que tendrán una vida útil de cierto tiempo y se siguen usando mucho después. Sabemos que algo fallará, lo que no sabemos es en qué parte, cuándo y cómo.

Saber que hay un comportamiento inusual en alguno(s) de los sensores nos da la pista de que a lo mejor vamos a tener una anomalía de aquí a poco. Esto nos da tiempo a investigar antes de que se convierta en un problema.

En las operaciones espaciales, muchas veces sólo hay anomalías que ocurren una vez. Esto es así porque los ingenieros de operaciones, una vez que entienden por qué ha ocurrido la anomalía, operan el satélite de otra forma. Es decir, evitan las condiciones que harían que la anomalía ocurriese otra vez. Algunas veces la anomalía es inevitable y tenemos que vivir con ella. Aun así, podemos diseñar estrategias para minimizar su impacto.

Desde el punto de vista de aprendizaje automático, esto quiere decir que no podemos utilizar aprendizaje supervisado. Al menos no en el sentido de predecir directamente si cualquier comportamiento es anómalo.

Control de límites

El control de límites es la solución clásica en sistemas de control.

A cada sensor se le asignan límites inferiores y superiores. Se usan normalmente dos tipos de límites: límites blandos (soft limits) y límites duros (hard limits). Cuando un sensor alcanza alguno de estos límites decimos que está «fuera de límites» (Out-of-Limits: OOL). En este caso, el sistema de control alerta a los operadores.

Detección de anomalías con control de límites

Aunque parezca simple es bastante efectivo. En su sencillez estriba su eficacia.

El control de límites tiene las siguientes ventajas:

  • Puede detectar que un sensor ha salido de límites tan pronto como salga. Es muy rápido detectando.
  • Los límites pueden ser condicionales. Por ejemplo, si una unidad está en el modo «A», aplica unos límites. Si está en el modo «B», aplica estos otros.

El control de límites también tiene sus desventajas:

  • No todos los sensores tienen asociados control de límites. Así que hay muchos que se quedan sin ser monitorizados.
  • El comportamiento de la telemetría puede ser anómalo y estar dentro de sus límites. Con el control de límites esta anomalía pasaría desapercibida. Veremos después un ejemplo.
  • A medida que pasa el tiempo, los componentes del satélite se van degradando y hay que ajustar los límites manualmente.

Nuestra solución para la detección de anomalías en operaciones espaciales

Os presentamos la solución que estamos usando ahora en el Centro de Operaciones en la Agencia Espacial Europea. Es una «working solution» en el sentido de que funciona lo suficientemente bien para seguir usándola. Por supuesto, estamos abiertos a revisarla, mejorarla o usar otras soluciones que den resultados mejores a nuestros esfuerzos de monitorización automática de telemetría.

Nuestra solución usa un aprendizaje semi-supervisado. Es decir, damos ejemplos de comportamientos nominales, pero no damos ejemplos de comportamientos inusuales. Con estos datos se detectará qué comportamientos son raros y merecen la atención de los operadores. Utilizamos este enfoque para poder detectar comportamientos atípicos nuevos.

A continuación explico cómo lo hacemos. Puedes leer el artículo científico completo aquí: Martínez-Heras, José-Antonio, and Alessandro Donati. «Enhanced telemetry monitoring with novelty detection.» AI Magazine 35, no. 4 (2014): 37-46.

Preparación de datos

Los datos consisten en series temporales de miles de sensores. Para preparar los datos calculamos estadísticas simples en periodos de tiempo (un día normalmente). Los valores estadísticos que calculamos son: media, desviación típica, máximo y mínimo. De esta forma, cada periodo se puede representar como un punto de 4 dimensiones.

Períodos en una serie temporal
Particionamos una serie temporal en períodos y calculamos estadísticas para cada período

¿Por qué calculamos estas 4 dimensiones y no otras? ¿Por qué no calculamos otras características (features)?

Resulta que tenemos en mente usar técnicas semi-supervisadas basadas en distancias. Para este tipo de técnicas debemos intentar reducir al máximo el número de dimensiones para que la maldición de la dimensión nos afecte lo menos posible. Además resulta que tenemos un sistema que ofrece estas estadísticas ya precalculadas.

Intuición de detección de anomalías

Así que representamos cada periodo de tiempo de una serie temporal como un punto en 4 dimensiones. Para proporcionar una intuición de lo que vamos buscando, os traigo un ejemplo con 2 dimensiones.

En la siguiente figura, los puntos azules corresponden a comportamiento nominal. Lo sabemos porque los operadores del satélite en cuestión nos lo han comunicado. Podemos ver que el sensor de este ejemplo tiene dos modos de funcionamiento diferentes (izquierda y derecha) de la gráfica. Esto es bastante normal en espacio, donde los instrumentos pueden funcionar de formas diferentes según lo que estén haciendo (por ejemplo: apagado, encendido, estabilizándose, transmitiendo, etc.)

Calculamos dónde estaría el punto del periodo que nos interesa investigar. Normalmente las últimas 24 horas. Representamos este punto en rojo en la figura. Podemos ver que hay dos casos:

  • El punto rojo de la izquierda corresponde claramente a un comportamiento raro, inusual. Este comportamiento debe ser investigado por si pudiera desembocar en una anomalía.
  • El punto rojo de la derecha corresponde a un comportamiento nominal. De hecho, si le indicásemos a un operador que hemos detectado un comportamiento extraño, el operador no sabría a lo que nos referimos.
Intuición de la Detección de Anomalías
Intuición de la técnica que necesitamos: alerta en el ejemplo de la izquierda y todo normal a la derecha

Para dramatizar más este ejemplo, me he asegurado de que el punto rojo esté exactamente a la misma distancia del punto azul más cercano en los dos casos (izquierda y derecha).

Esto quiere decir que no podemos poner un umbral de distancia e informar a los operadores que si la distancia entre el punto nuevo y el más cercano conocido sobrepasa este umbral debe ser investigado. Esto provocaría un número muy alto de alarmas falsas o que no se detectaran comportamientos inusuales. Dicho de otra forma, cualquier umbral de distancia que escogiésemos sería el equivocado.

La intuición de por qué es un comportamiento raro en el caso de la izquierda y un comportamiento normal en el caso de la derecha (en la figura) estriba en la densidad.

En el caso de la izquierda, los puntos están muy cerca entre ellos. Así que si algún punto está un poco más lejos, ya podemos decir que es raro. En el caso de la derecha, los puntos están más dispersos. Así que necesitamos una distancia mayor para decir que el comportamiento es inusual.

Algunas veces, cuando he explicado esta intuición me han preguntado si se podría solucionar con clustering. En principio, esto es diferente. No nos interesa saber que grupos hay, ni cuántos grupos hay, ni sabríamos qué hacer con la información de los grupos. No, no es clustering.

Local Outlier Probabilities

La técnica «Local Outliers Probabilities» implementa la intuición que teníamos en mente. Calcula cuál es la probabilidad de que un punto sea un «outlier». La traducción de outlier podría ser «dato atípico«.

Para calcular la probabilidad de que un dato sea atípico, primero mira a los k datos más cercanos y calcula su densidad. Para zonas muy densas, una distancia pequeña bastará para tener una mayor probabilidad de comportamiento inusual. Para zonas dispersas, se necesitará una mayor distancia para una alta probabilidad de comportamiento raro.

En la figura vemos una intuición gráfica en 2 dimensiones. Los números que vemos se corresponden a la probabilidad de que un dato sea un outlier. Las probabilidades están en el rango [0, 1].

Técnica Local Outliers Probabilities para detección de anomalías
Técnica Local Outlier Probabilities para detección de anomalías

La técnica de Local Outlier Factors tiene muchas ventajas para nuestro problema de detección de anomalías:

  1. No asume ninguna distribución: algunas técnicas de detección de outliers sólo funcionan si asumimos que los datos siguen una distribución normal. Este no es nuestro caso. Muchos de los sensores que queremos monitorizar no siguen una distribución Gaussiana.
  2. Multimodal: permite que los datos nominales ocurran en varias partes. Este es un comportamiento que también necesitamos porque muchos de los sensores toman valores en distintas regiones cuando los instrumentos están trabajando en modos diferentes.
  3. Adimensionalidad: la probabilidad, al ser adimensional, nos permite comparar sensores que de otra forma no serían comparable entre ellos. Esto es posible porque lo que comparamos el grado de inusualidad. Así podemos comparar cómo de raro es el comportamiento de una temperatura con cómo de raro es el comportamiento de un voltaje, el uso de CPU, la presión en un tanque de combustible, etc.
  4. Pocas anomalías falsas: al calcular las probabilidades basándose en la densidad, no tenemos que especificar ningún umbral de distancia. Esto hace que el número de anomalías falsas se reduzca dramáticamente.

Local Outlier Probabilities es una técnica de detección de outliers. La hemos adaptado para detectar comportamiento nuevo. La adaptación es simple: solo calculamos la probabilidad de comportamiento atípico en los datos nuevos.

«Salsa secreta» para reducir el número de anomalías falsas

Si usaras la técnica de Local Outlier Probabilities tal y como hemos descrito hasta ahora te iría bastante bien, pero todavía tendrías anomalías falsas. Así que ahora te revelamos la «salsa secreta» para reducir al mínimo el número de anomalías.

Estadísticas más estables

Cuanto más estables sean las estadísticas, más fácil es que tengas pocas anomalías falsas con relativamente pocos datos.

En algunos casos, elegimos para algunos satélites periodicidades de 90 – 100 minutos (que viene a ser una órbita para los satélites de observación de la Tierra). Pero teníamos varias anomalías falsas. Nos dimos cuenta que nos iba mucho mejor con periodos de 1 día.

Las estadísticas diarias son más estables. Además las estadísticas diarias capturan mejor la rutina en operaciones.

Esperar a que los datos estén completos

Como hemos indicado anteriormente, los datos los preparamos calculando valores estadísticos diarios. Si los datos no están completos, esto puede llevarnos a estadísticas incorrectas que pueden interpretarse como un dato atípico.

Los datos de telemetría no están disponibles inmediatamente. Hay que esperar a que el satélite se comunique con alguna estación de tierra. Aun así, puede que los datos que se descargen no estén completos. Así que habrá que esperar hasta la próxima oportunidad de comunicación hasta que los datos estén «consolidados»

Varios k para calcular la probabilidad de anomalía

Local Outlier Probabilities calcula las probabilidades estimando la densidad de los k puntos más cercanos. El valor de k es un poco arbitrario y podemos obtener valores diferentes probabilidades dependiendo del k que elijamos.

Queremos conseguir reducir al máximo posible el número de anomalías falsas. También queremos que los resultados sea obvios para los operadores. Así que hemos decidido que si un comportamiento es inusual, lo será independientemente del hiper-parámetro k que elijamos.

En la práctica, esto se traduce que calcular las probabilidades de que un dato sea atípico para varios valores de k (por ejemplo, k={5, 10, 20, 30}). La probabilidad final será la probabilidad mínima.

Poca frecuencia en la detección de anomalías

Cada vez que intentemos detectar anomalías corremos el riesgo de detectar anomalías falsas. A riesgo de decir una obviedad, cuantas menos veces detectemos anomalías, menos oportunidades tendremos de encontrar anomalías falsas.

En nuestro caso detectamos anomalías una vez al día. Esto es suficiente porque el tipo de anomalías que vamos buscando son las anomalías que son difíciles de identificar con el control de límites (out-of-limits). El control de límites detecta las anomalías tan pronto como los datos están disponibles.

Añadir datos y, eventualmente, borrar los antiguos

Si el número de anomalías falsas aumenta, probablemente sea hora de añadir como ejemplos de datos nominales datos nuevos. Por ejemplo, si hay un satélite que va camino de Marte, llega a Marte, habrá muchas cosas que cambien en la forma en la que es operado. Nos irá mejor añadiendo ejemplos nominales orbitando alrededor de Marte y, eventualmente, eliminando los datos nominales correspondientes a la trayectoria.

Algunos ejemplos

Termistor en XMM-Newton

El XMM-Newton (X-ray Multi-mirror Mission – Newton) es un observatorio espacial de rayos X nombrado en honor de Isaac Newton. XMM es es el mayor satélite científico construido en Europa hasta el momento, pesa 3800 kg, mide 10 metros de largo y unos 16 metros de ancho con los paneles solares desplegados. Tiene tres telescopios de rayos X, cada uno con 58 espejos concéntricos, diseñados de manera que se maximiza su área colectora, focalizan los rayos X en las cámaras CCD de los detectores. Esto le hace capaz de detectar fuentes de rayos X extremadamente débiles. Fuente: wikipedia.

XMM Newton spacecraft model
By National Aeronautics and Space Administration (NASA) – Published source’: «Spacecraft Icons» at NASA ScienceDirect source: Image hosted by smd-prod.s3.amazonaws.com., Public Domain, https://commons.wikimedia.org/w/index.php?curid=60276937

Muchos de los instrumentos de los satélites necesitan estar en unas condiciones de temperatura controladas para que funcionen correctamente. Esto se consigue usando termistores. Los termistores permiten calentar una parte del satélite cerrando un circuito cuando la temperatura baja de un cierto umbral inferior. Cuando la temperatura sube de un umbral superior, el termistor abre el circuito y deja de calentar.

A continuación vamos a ver una anomalía que ocurrió en el satélite XMM-Newton, descrita por el equipo de control de vuelo (la traducción al español y la negrita son mías):

«Notamos que el termistor T6073 empezó a tener un comportamiento extraño desde mediados de mayo de 2009, 2 meses antes que de la anomalía se detectara. El rango del termistor redució la temperatura cuando se abría y empezó a disminuir, un signo del deterioro del límite superior, incluso si el límite inferior era respetado, hasta mediados de Julio, cuando el límite superior y el inferior se situaron uno my cerca del otro.

El termistor empezó a oscilar, en una rango estrecho de temperatura, hasta que no se cerró más a la temperatura correcta, y dejó que la temperatura bajara casi hasta los 22 grados. La primera bajada de temperatura no fue detectada porque no generó ninguna alerta en el control de límites. Después de esta bajada, el termistor tuvo algunos ciclos nominales, pero el 13 de julio de 2009, la temperatura bajó de nueva hasta 21.25 grados, causando una alarma en el control de límites y permitiendo que el equipo de control de vuelo detectara el problema.»

Anomalía de XMM-Newton

Como vemos, nuestro sistema de detección de anomalías detectó la anomalía a finales de mayo, 2 meses antes de que el sistema de control de límites la detectara. Este ejemplo demuestra que puede haber comportamientos anómalos aunque ocurran dentro de los límites monitorizados. De hecho, en este caso la anomalía era que el comportamiento medido por el sensor estaba más en límites que en el caso nominal.

En el momento de la detección no hubiésemos sabido si las lecturas del sensor hubieran salido de límites en una semana o en 2 meses, como en este caso. Pero sí es suficiente para alertar al equipo de control de vuelo para que investiguen si esto representa un problema.

Seguramente al mirar esta figura, y este comportamiento se te ocurran varias ideas simples para haber detectado este anomalía. Si te está pasando, no eres el primero. El reto consiste en encontrar un sistema de detección de anomalías que detecte todos los comportamiento inusuales, sin saber cómo van a ser, en cualquier tipo de sensor. Y con muy pocas anomalías falsas!

Otros ejemplos

El caso de XMM-Newton fue el primero donde probamos la eficacia de este método de detección de anomalías. Desde entonces lo hemos seguido usando en operaciones espaciales y tenemos bastantes más ejemplos de detecciones que ha resultado en investigaciones de comportamientos inusuales.

No los hemos publicado de forma oficial. Si alguna vez lo hacemos actualizaré este artículo.

Otras soluciones de detección de anomalías en espacio

Por supuesto, no somos los únicos en abordar el problema de la detección automática de anomalías en operaciones espaciales. Aquí tienes una lista de trabajos también muy interesantes en este campo:

¿Cuál funciona mejor?

Te estarás preguntando, ¿cuál funciona mejor?

La verdad es que es difícil saberlo. El «problema» reside en que hay muy pocas anomalías en realidad. Esto es estupendo para las operaciones espaciales, pero no está tan bien para aprendizaje automático.

Cuando hay tan pocas anomalías es muy difícil comparar el rendimiento de distintas soluciones. Por este motivo, estamos trabajando en la creación de un conjunto de datos de anomalías en operaciones espaciales, posiblemente combinando datos de varios satélites, para que se convierta en una especie de «benchmark dataset».

Recursos

  • [vídeo] donde explico (en inglés) cómo funciona nuestra detección de anomalías entre otras cosas.
  • El artículo donde explicamos nuestra solución: Martínez-Heras, José-Antonio, and Alessandro Donati. «Enhanced telemetry monitoring with novelty detection.» AI Magazine 35, no. 4 (2014): 37-46.
  • El artículo que explica la técnica Local Outliers Probabilites: Kriegel, Hans-Peter, Peer Kröger, Erich Schubert, and Arthur Zimek. «LoOP: local outlier probabilities.» In Proceedings of the 18th ACM conference on Information and knowledge management, pp. 1649-1652. 2009.

Detección de anomalías en python

Si estás buscando cómo puedes detectar anomalías en python, te propongo que le eches un vistazo a estas tres librerías:

  • scikit-learn tiene funcionalidades específicas para la detección de outliers y anomalías: Novelty and Outlier Detection
  • pyOD es una librería que implementa 30+ métodos de detección de outliers y anomalías. Cada vez van añadiendo más.
  • pyNomaly es una librería de python que implementa la técnica de Local Outlier Probabilities que usamos en nuestro sistema de detección de anomalías. En el momento de necesitarla, esta librería no estaba todavía disponible, así que usamos nuestra propia implementación.

Resumen

En este artículo hemos presentado los retos que tenemos que afrontar al intentar detectar anomalías automáticamente en operaciones espaciales y cómo los hemos afrontado. Así mismo, proporcionamos algunas recomendaciones (la «salsa secreta»).

También hemos visto un ejemplo de detección de anomalía con el satélite XMM-Newton y hemos listado otras soluciones usadas por diferentes operadores de satélites.

Por último hemos visto algunos recursos que incluyen cómo detectar anomalías usando librerías en python.

1 comentario en «Detección de anomalías en espacio»

  1. Muy buen artículo!
    Soy ingeniero de operaciones y el artículo creo que refleja muy bien los problemas que tenemos con las anomalías. Cada vez que trabajamos con gente en el tema de machine learning, una de las cosas que más nos cuesta es explicarles que en la mayoría de los casos cada anomalía es única y que debido a los cambios de modo, un mismo valor puede ser bueno o malo según su entorno.
    En fin es un magro consuelo ver qué a todos nos afecta de la misma manera.
    Un saludo y muchas gracias por perder el tiempo divulgando

    Responder

Deja un comentario