Configuración de la detección de anomalías
Para configurar la detección de anomalías de un sensor específico, primero debemos dirigirnos a la página donde se visualizan los datos de sensores en gráficas para un Nesmote concreto.
Una vez dentro, a la derecha de la gráfica, deberemos hacer clic en "Configurar" y a continuación en "Analítica de datos", tal como se puede observar en la siguiente imagen:
Tan solo se puede activar la analítica de datos para un sensor si se dispone de licencias "Enhanced". Si el sensor no usa actualmente una licencia "Enhanced", este pasará a consumir una de estas. En el caso de que no haya suficientes licencias "Enhanced", la analítica de datos no podrá ser activada.
Antes de activar la detección de anomalías, se nos preguntará por el dominio del sensor. El dominio representa los posibles valores que puede tomar el sensor. Si el sensor solo puede tener valores positivos, especificar que el dominio es solo de valores positivos ayudará al algoritmo a mejorar el intervalo de confianza devuelto por este.
Una vez ha sido activada la detección de anomalías, esta se puede configurar. Para configurar la detección de anomalías, tan solo deberemos hacer clic otra vez en "Configurar" y a continuación en "Analítica de datos".
Esto nos abrirá una ventana de texto en la cual podemos configurar como de tolerante/estricto es el intervalo de confianza que devolverá el algoritmo y también podemos desactivar la analítica de datos si así lo deseamos. El intervalo de confianza es el área azul que se observa alrededor de los datos del sensor. Si lo ponemos más estricto, este área será menor y se detectarán más anomalías. Si por el contrario lo ponemos más tolerante, se necesitará que haya un valor que se salga mucho del comportamiento típico del sensor para que este salte como anomalía. Dependiendo del proceso, puede resultar más interesante que el algoritmo sea más tolerante o que sea más estricto.
Explicación del funcionamiento del algoritmo:
El algoritmo matemático utilizado para la detección de anomalías en nuestro sistema es el algoritmo PEWMA (Probabilistic Exponentially Weighted Moving Average).
Este algoritmo es capaz de identificar picos abruptos en una señal que de manera habitual no tiene y en cambio tolera y se adapta a transiciones de valor no tan abruptas (no las considera como potencial anomalía).
El resultado de aplicar este algoritmo se puede ver en la siguiente imagen:
Como podemos observar, los picos abruptos son considerados como potencial anomalía por el sistema y los marca con un punto rojo.
Para entender cómo funciona este algoritmo, la mejor manera es utilizando un ejemplo y ver sobre este ejemplo, poco a poco como desde la media, nace el algoritmo PEWMA.
Consideremos que tenemos los siguientes datos históricos de temperatura:
[17, 18, 19, 19, 20, 20, 21, 21, 22, 23]
Consideraremos que un nuevo punto es una anomalía si la temperatura se desvía más de un grado. El último dato que hemos obtenido es 24 (no anómalo).
Para detectar anomalías pues, intentaremos predecir cuál debería haber sido el dato recibido y ver la diferencia entre la predicción y el dato real.
Media (Average):
La primera manera que uno podría pensar para detectar si un nuevo dato es anomalía seria calculando la media simple de los datos. Si la calculamos el resultado es 20. Por lo tanto, recibiendo el valor 24 consideramos este como anómalo ya que se desvía cuatro grados de la predicción.
Como podemos ver, la media no nos sirve para detectar anomalías en un sistema.
Media móvil (Moving Average):
Para evitar pues que los primeros datos por debajo de 20 nos hagan que la media quede tan baja, implementamos el concepto de medias móviles. Una media móvil es una media local en una ventana de datos. Es decir, dada una serie de 5 puntos, una media móvil con ventana de 2 seria computar la media entre los puntos 1 y 2, 2 y 3, 3 y 4, y finalmente 4 y 5.
En nuestro ejemplo el resultado sería el siguiente:
[17.5, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.5].
Podemos observar que el último valor es 22.5, 1.5 °C menos que el valor que deseábamos, pero mejor que la diferencia de 4 °C. Las medias móviles pues son mejores para captar las tendencias de una serie de datos.
EWMA (Exponentially Weighted Moving Average):
Como hemos podido observar el concepto de la media móvil es muy útil, mejora nuestros resultados, pero aún no nos ofrece el comportamiento esperado. Uno podría hacer el argumento que, en una serie temporal con valores que van creciendo, como la que se plantea en el ejemplo, dar el mismo peso en la media a los valores antiguos que a los nuevos perjudica al algoritmo. Y estaría en lo cierto, la siguiente iteración trata precisamente de darle mayor peso a los valores más recientes (Exponentially Weighted Moving Averages). Con este algoritmo, al calcular la media móvil, damos un peso diferente a cada muestra. En el caso de EWMA, cada valor tendrá un peso exponencialmente menor que el anterior. Para seguir con nuestro ejemplo, mantenemos la ventana de dos muestras y damos un peso de 0.75 a la muestra x y 0.25 a la muestra x-1.
El resultado del cómputo es el siguiente:
[17.75, 18.75, 19.0, 19.75, 20.0, 20.75, 21.0, 21.75, 22.75]
Lo que resulta en 1.25 grados de diferencia. Sigue detectando anomalía, pero se encuentra un poco más cerca del comportamiento esperado.
PEWMA (Probabilistic Exponentially Weighted Moving Average)
Finalmente llegamos al algoritmo PEWMA.
Este algoritmo no solo tiene en cuenta la progresión de la media para la ventana móvil sino también la progresión de la varianza de los datos para esta.
Podemos considerar la varianza de una serie de datos como el nivel de "variabilidad" de valores individuales de la serie respecto al valor medio de la serie de datos.
Un ejemplo que muestra la varianza para dos ventanas de datos diferentes:
Este algoritmo también necesita de una serie de parámetros en su fórmula y estos necesitan ser optimizados según la señal concreta. Efectuamos una búsqueda de los parámetros óptimos antes de proceder a la utilización de este.
La salida del algoritmo es el desplazamiento máximo tolerado que puede tener el valor para que este no sea considerado como anomalía. A nivel gráfico, se delimita un margen superior y un margen inferior de valores y si el valor cae fuera del intervalo de valores, este es considerado como anomalía.
Uno de los parámetros del algoritmo afecta directamente al nivel de varianza permitido. Este parámetro se puede modificar por parte del cliente en el desplegable de "tolerancia" y tiene influencia directa en como de permisivos son los márgenes de valores.