Logotipo de Zephyrnet

Cree un detector de anomalías en la calidad del aire con Amazon Lookout for Metrics

Fecha:

Hoy en día, la contaminación del aire es un problema ambiental familiar que crea afecciones respiratorias y cardíacas graves, que representan serias amenazas para la salud. La lluvia ácida, el agotamiento de la capa de ozono y el calentamiento global también son consecuencias adversas de la contaminación del aire. Existe la necesidad de monitoreo y automatización inteligentes para prevenir problemas de salud graves y, en casos extremos, situaciones que amenazan la vida. La calidad del aire se mide utilizando la concentración de contaminantes en el aire. La identificación temprana de los síntomas y el control del nivel de contaminación antes de que sea peligroso es crucial. El proceso de identificar la calidad del aire y la anomalía en el peso de los contaminantes, y diagnosticar rápidamente la causa raíz, es difícil, costoso y propenso a errores.

El proceso de aplicar soluciones basadas en IA y aprendizaje automático (ML) para encontrar anomalías en los datos implica mucha complejidad en la ingesta, selección y preparación de datos en el formato correcto y luego optimizar y mantener la efectividad de estos modelos ML durante largos períodos de tiempo. tiempo. Esta ha sido una de las barreras para implementar y escalar rápidamente la adopción de capacidades de ML.

Esta publicación le muestra cómo utilizar una solución integrada con Amazon Lookout para métricas y Manguera de bomberos de datos de Amazon Kinesis para romper estas barreras mediante la ingesta rápida y sencilla de datos de transmisión y, posteriormente, la detección de anomalías en los indicadores clave de rendimiento de su interés.

Lookout for Metrics detecta y diagnostica automáticamente anomalías (valores atípicos de la norma) en los datos comerciales y operativos. Es un servicio de ML totalmente administrado que utiliza modelos de ML especializados para detectar anomalías en función de las características de sus datos. Por ejemplo, las tendencias y la estacionalidad son dos características de las métricas de series temporales en las que la detección de anomalías basada en umbrales no funciona. Las tendencias son variaciones continuas (aumentos o disminuciones) en el valor de una métrica. Por otro lado, la estacionalidad son patrones periódicos que ocurren en un sistema, generalmente aumentando por encima de una línea de base y luego disminuyendo nuevamente. No necesita experiencia en ML para usar Lookout for Metrics.

Demostramos un escenario común de monitoreo de la calidad del aire, en el que detectamos anomalías en la concentración de contaminantes en el aire. Al final de esta publicación, aprenderá a usar estos servicios administrados de AWS para ayudar a prevenir problemas de salud y el calentamiento global. Puede aplicar esta solución a otros casos de uso para una mejor gestión ambiental, como la detección de anomalías en la calidad del agua, la calidad de la tierra y los patrones de consumo de energía, por nombrar algunos.

Resumen de la solución

La arquitectura consta de tres bloques funcionales:

  • Sensores inalámbricos colocados en ubicaciones estratégicas para detectar el nivel de concentración de monóxido de carbono (CO), dióxido de azufre (SO2) y dióxido de nitrógeno (NO2) en el aire
  • Ingestión y almacenamiento de datos de transmisión
  • Detección y notificación de anomalías

La solución proporciona una ruta de datos completamente automatizada desde los sensores hasta una notificación que se envía al usuario. También puede interactuar con la solución mediante la interfaz de usuario de Lookout for Metrics para analizar las anomalías identificadas.

El siguiente diagrama ilustra la arquitectura de nuestra solución.

Requisitos previos

Necesita los siguientes requisitos previos antes de poder continuar con la solución. Para esta publicación, usamos la región us-east-1.

  1. Descargue el script de Python (publicar.py) y el archivo de datos del Repositorio GitHub.
  2. Abra la live_data.csv archivo en su editor preferido y reemplace las fechas para que sean la fecha de hoy y la de mañana. Por ejemplo, si la fecha de hoy es el 8 de julio de 2022, reemplace 2022-03-25 2022-07-08. Mantenga el mismo formato. Esto es necesario para simular los datos del sensor para la fecha actual mediante el script del simulador de IoT.
  3. Crear una Servicio de almacenamiento simple de Amazon (Amazon S3) cubo y una carpeta llamada air-quality. Crea una subcarpeta dentro air-quality llamado historical. Para instrucciones, vea Creando una carpeta.
  4. Cargar la live_data.csv archivo en el depósito raíz S3 y historical_data.json en la carpeta histórica.
  5. Crear una Nube de AWS9 entorno de desarrollo, que usamos para ejecutar el programa simulador de Python para crear datos de sensores para esta solución.

Ingiera y transforme datos con AWS IoT Core y Kinesis Data Firehose

Usamos un flujo de entrega de Kinesis Data Firehose para ingerir los datos de transmisión de Núcleo de AWS IoT y enviarlo a Amazon S3. Complete los siguientes pasos:

  1. En la consola de Kinesis Data Firehose, elija Crear flujo de entrega.
  2. Fuente, escoger PUT directa.
  3. Destino, escoger Amazon S3.
  4. Nombre del flujo de entrega, ingrese un nombre para su flujo de entrega.
  5. Cucharón S3, ingrese el depósito que creó como requisito previo.
  6. Ingrese valores para Prefijo de segmento S3 y Prefijo de salida de error de depósito S3.Uno de los puntos clave a tener en cuenta es la configuración del prefijo personalizado que se configura para el destino de Amazon S3. Este patrón de prefijo garantiza que los datos se creen en el depósito de S3 según la jerarquía de prefijos esperada por Lookout for Metrics. (Más sobre esto más adelante en esta publicación). Para obtener más información sobre los prefijos personalizados, consulte Prefijos personalizados para objetos de Amazon S3.
  7. Intervalo de almacenamiento intermedio, introduzca 60.
  8. Elige Crear o actualizar el rol de IAM.
  9. Elige Crear flujo de entrega.

    Ahora configuramos AWS IoT Core y ejecutamos el programa simulador de calidad del aire.
  10. En la consola de AWS IoT Core, crear una política de AWS IoT llamado administrador.
  11. En el panel de navegación bajo Enrutamiento de mensajes, escoger Reglas.
  12. Elige Crear regla.
  13. Crear una regla con el Acción Kinesis Data Firehose(firehose).
    Esto envía datos de un mensaje MQTT a un flujo de entrega de Kinesis Data Firehose.
  14. Elige Crear.
  15. Cree una cosa de AWS IoT con nombre Test-Thing y adjunte la política que creó.
  16. Descargue el certificado, la clave pública, la clave privada, el certificado del dispositivo y la CA raíz para AWS IoT Core.
  17. Guarde cada uno de los archivos descargados en el certificates subdirectorio que creó anteriormente.
  18. Cargue publicar.py en el iot-test-publish carpeta.
  19. En la consola de AWS IoT Core, en el panel de navegación, elija Ajustes.
  20. under Punto final personalizado, copie el punto final.
    Esta URL de punto de enlace personalizado de AWS IoT Core es personal para su cuenta y región de AWS.
  21. Reemplaza customEndpointUrl con su URL de punto de enlace personalizado de AWS IoT Core, certificados con el nombre del certificado y Your_S3_Bucket_Name con el nombre de su depósito S3.
    A continuación, instale pip y el SDK de AWS IoT para Python.
  22. Inicie sesión en AWS Cloud9 y cree un directorio de trabajo en su entorno de desarrollo. Por ejemplo: aq-iot-publish.
  23. Cree un subdirectorio para certificados en su nuevo directorio de trabajo. Por ejemplo: certificates.
  24. Instale el SDK de AWS IoT para Python v2 ejecutando lo siguiente desde la línea de comandos.
    pip install awsiotsdk

  25. Para probar la canalización de datos, ejecute el siguiente comando:
    python3 publish.py

Puede ver la carga útil en la siguiente captura de pantalla.

Finalmente, los datos se envían al depósito de S3 especificado en la estructura de prefijo.

Los datos de los archivos son los siguientes:

  • {"TIMESTAMP":"2022-03-20 00:00","LOCATION_ID":"B-101","CO":2.6,"SO2":62,"NO2":57}
  • {"TIMESTAMP":"2022-03-20 00:05","LOCATION_ID":"B-101","CO":3.9,"SO2":60,"NO2":73}

Las marcas de tiempo muestran que cada archivo contiene datos en intervalos de 5 minutos.

Con un código mínimo, ahora ingerimos los datos del sensor, creamos un flujo de entrada a partir de los datos ingeridos y almacenamos los datos en un depósito S3 según los requisitos de Lookout for Metrics.

En las siguientes secciones, echamos un vistazo más profundo a las construcciones dentro de Lookout for Metrics, y lo fácil que es configurar estos conceptos usando la consola de Lookout for Metrics.

Crear un detector

Un detector es un recurso de Lookout for Metrics que monitorea un conjunto de datos e identifica anomalías con una frecuencia predefinida. Los detectores usan ML para encontrar patrones en los datos y distinguir entre variaciones esperadas en los datos y anomalías legítimas. Para mejorar su rendimiento, un detector aprende más sobre sus datos con el tiempo.

En nuestro caso de uso, el detector analiza los datos del sensor cada 5 minutos.

Para crear el detector, vaya a la consola Lookout for Metrics y seleccione Crear detector. Proporcione el nombre y la descripción (opcional) del detector, junto con el intervalo de 5 minutos.

Sus datos están cifrados de forma predeterminada con una clave que AWS posee y administra por usted. También puede configurar si desea utilizar una clave de cifrado diferente a la que se utiliza por defecto.

Ahora apuntemos este detector a los datos en los que desea que ejecute la detección de anomalías.

Crear un conjunto de datos

Un conjunto de datos le dice al detector dónde encontrar sus datos y qué métricas analizar en busca de anomalías. Para crear un conjunto de datos, complete los siguientes pasos:

  1. En la consola de Amazon Lookout for Metrics, navegue hasta su detector.
  2. Elige Agregar un conjunto de datos.
  3. Nombre, ingrese un nombre (por ejemplo, air-quality-dataset).
  4. Fuente de datos, elija su fuente de datos (para esta publicación, Amazon S3).
  5. Modo detector, seleccione su modo (para esta publicación, ASESORIA CONTINUA).

Con Amazon S3, puede crear un detector en dos modos:

    • Backtest - Este modo se utiliza para encontrar anomalías en datos históricos. Necesita que todos los registros se consoliden en un solo archivo.
    • ASESORIA CONTINUA – Este modo se utiliza para detectar anomalías en los datos en vivo. Usamos este modo con nuestro caso de uso porque queremos detectar anomalías a medida que recibimos datos de contaminantes del aire del sensor de monitoreo del aire.
  1. Ingrese la ruta de S3 para la carpeta y el patrón de ruta de S3 en vivo.
  2. Intervalo de origen de datos, escoger Intervalos de 5 minutos.Si tiene datos históricos a partir de los cuales el detector puede aprender patrones, puede proporcionarlos durante esta configuración. Se espera que los datos estén en el mismo formato que utiliza para realizar un backtest. Proporcionar datos históricos acelera el proceso de entrenamiento del modelo ML. Si esto no está disponible, el detector continuo espera a que haya suficientes datos disponibles antes de hacer inferencias.
  3. Para esta publicación, ya tenemos datos históricos, así que seleccione Usa datos históricos.
  4. Ingrese la ruta S3 de historical_data.json.
  5. Formato de archivo, seleccione Líneas JSON.

En este punto, Lookout for Metrics accede a la fuente de datos y valida si puede analizar los datos. Si el análisis es exitoso, le da un mensaje de "Validación exitosa" y lo lleva a la página siguiente, donde configura medidas, dimensiones y marcas de tiempo.

Configurar medidas, dimensiones y marcas de tiempo

Medidas Defina los KPI para los que desea realizar un seguimiento de las anomalías. Puede agregar hasta cinco medidas por detector. Los campos que se utilizan para crear KPI a partir de sus datos de origen deben tener formato numérico. Los KPI se pueden definir actualmente agregando registros dentro del intervalo de tiempo haciendo una SUMA o PROMEDIO.

Dimensiones le da la capacidad de dividir y cortar sus datos mediante la definición de categorías o segmentos. Esto le permite rastrear anomalías para un subconjunto de todo el conjunto de datos para el que se aplica una medida en particular.

En nuestro caso de uso, agregamos tres medidas, que calculan el promedio de los objetos vistos en el intervalo de 5 minutos, y tienen solo una dimensión, para la cual se mide la concentración de contaminantes.

Cada registro del conjunto de datos debe tener una marca de tiempo. La siguiente configuración le permite elegir el campo que representa el valor de la marca de tiempo y también el formato de la marca de tiempo.

La página siguiente le permite revisar todos los detalles que agregó y luego guardar y activar el detector.

Luego, el detector comienza a aprender la transmisión de datos a la fuente de datos. En esta etapa, el estado del detector cambia a Initializing.

Es importante tener en cuenta la cantidad mínima de datos necesarios antes de que Lookout for Metrics pueda comenzar a detectar anomalías. Para obtener más información sobre requisitos y límites, consulte Esté atento a las cuotas de métricas.

Con una configuración mínima, ha creado su detector, lo ha apuntado a un conjunto de datos y ha definido las métricas en las que desea que Lookout Metrics encuentre anomalías.

Visualizar anomalías

Lookout for Metrics proporciona una rica experiencia de interfaz de usuario para los usuarios que desean utilizar el Consola de administración de AWS analizar las anomalías detectadas. También proporciona la capacidad de consultar las anomalías a través de las API.

Veamos un ejemplo de anomalía detectada en nuestro caso de uso de datos de calidad del aire. La siguiente captura de pantalla muestra una anomalía detectada en la concentración de CO en el aire en la fecha y hora designadas con una puntuación de gravedad de 93. También muestra la contribución porcentual de la dimensión hacia la anomalía. En este caso, el 100% de la contribución proviene de la dimensión ID de ubicación B-101.

Crear alertas

Lookout for Metrics le permite enviar alertas utilizando una variedad de canales. Puede configurar el umbral de puntuación de gravedad de la anomalía en el que se deben activar las alertas.

En nuestro caso de uso, configuramos alertas para que se envíen a un Servicio de notificación simple de Amazon (Amazon SNS), que a su vez envía un SMS. Las siguientes capturas de pantalla muestran los detalles de configuración.

También puede utilizar una alerta para activar automatizaciones mediante AWS Lambda funciones para impulsar operaciones basadas en API en AWS IoT Core.

Conclusión

En esta publicación, le mostramos lo fácil que es usar Lookout for Metrics y Kinesis Data Firehose para eliminar el trabajo pesado indiferenciado que implica administrar el ciclo de vida integral de la creación de aplicaciones de detección de anomalías basadas en ML. Esta solución puede ayudarlo a acelerar su capacidad para encontrar anomalías en las métricas comerciales clave y permitirle concentrar sus esfuerzos en hacer crecer y mejorar su negocio.

Le animamos a que obtenga más información visitando el Guía para desarrolladores de Amazon Lookout for Metrics y pruebe la solución integral habilitada por estos servicios con un conjunto de datos relevante para los KPI de su negocio.


Acerca del autor.

Dhiraj Thakur es un arquitecto de soluciones con Amazon Web Services. Trabaja con los clientes y socios de AWS para proporcionar orientación sobre la adopción, la migración y la estrategia de la nube empresarial. Es un apasionado de la tecnología y disfruta construyendo y experimentando en el espacio analítico y AI / ML.

punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?