Los datos de series temporales son una categoría distinta que incorpora el tiempo como un elemento fundamental en su estructura. En una serie temporal, los puntos de datos se recopilan de forma secuencial, a menudo a intervalos regulares, y suelen presentar determinados patrones, como tendencias, variaciones estacionales o comportamientos cíclicos. Algunos ejemplos comunes de datos de series temporales incluyen los ingresos por ventas, los datos de rendimiento del sistema (como el uso de la CPU y la memoria), las transacciones con tarjetas de crédito, las lecturas de sensores y los análisis de la actividad del usuario.
La detección de anomalías en series temporales es el proceso de identificar patrones inesperados o inusuales en los datos que se desarrollan a lo largo del tiempo. Una anomalía, también conocida como parte aisladaocurre cuando un punto de datos se desvía significativamente de un patrón esperado.
En el caso de algunas series temporales, como aquellas con rangos esperados bien definidos, como las temperaturas de funcionamiento de las máquinas o el uso de la CPU, un enfoque basado en umbrales podría ser suficiente. Sin embargo, en áreas como la detección de fraudes y las ventas, donde las reglas simples no son suficientes debido a su incapacidad para detectar anomalías en relaciones complejas, se requieren técnicas más sofisticadas para identificar sucesos inesperados.
En esta publicación, demostramos cómo construir una solución robusta de detección de anomalías en tiempo real para la transmisión de datos de series de tiempo utilizando Servicio administrado de Amazon para Apache Flink y otros servicios administrados de AWS.
Descripción general de la solución
El siguiente diagrama ilustra la arquitectura principal de la solución Anomaly Detection Stack.
Esta solución emplea aprendizaje automático (ML) para la detección de anomalías y no requiere que los usuarios tengan experiencia previa en IA. Ofrece una Formación en la nube de AWS Plantilla para una implementación sencilla en una cuenta de AWS. Con la plantilla CloudFormation, puede implementar una pila de aplicaciones con los recursos de AWS necesarios para detectar anomalías. Al configurar una pila, se crea una aplicación con una tarea o detector de detección de anomalías. Puede configurar varias pilas de este tipo para ejecutarlas simultáneamente, y cada una de ellas analizará los datos e informará sobre las anomalías.
Una vez implementada, la aplicación construye un modelo de ML utilizando el algoritmo Random Cut Forest (RCF). Inicialmente, obtiene datos de series temporales de entrada de Transmisión administrada por Amazon para Apache Kafka (Amazon MSK) utiliza esta transmisión en vivo para el entrenamiento del modelo. Después del entrenamiento, el modelo continúa procesando los puntos de datos entrantes de la transmisión. Evalúa estos puntos en relación con las tendencias históricas de la serie temporal correspondiente. El modelo también genera una puntuación de anomalía sin procesar inicial durante el procesamiento y mantiene un umbral interno para eliminar los puntos de datos ruidosos. Posteriormente, el modelo genera una puntuación de anomalía normalizada para cada punto de datos que el modelo trata como una anomalía. Estas puntuaciones, que van de 0 a 100, indican la desviación de los patrones típicos; las puntuaciones más cercanas a 100 significan niveles de anomalía más altos. Tiene la flexibilidad de establecer un umbral personalizado en estas puntuaciones de anomalía, lo que le permite definir lo que considera anómalo.
Esta solución utiliza una plantilla de CloudFormation, que toma entradas como el punto final del agente MSK y los temas. Gestión de identidad y acceso de AWS (IAM) y otros parámetros relacionados con la configuración de la nube privada virtual (VPC). La plantilla crea los recursos esenciales como la aplicación Apache Flink y Amazon SageMaker punto final en tiempo real en la cuenta del cliente.
Para solicitar el acceso a esta solución, envíe un correo electrónico a detección de anomalías-soporte-canvas@amazon.com.
En esta publicación, describimos cómo se puede crear una solución integral con Anomaly Detection Stack. Considere un escenario de ventas hipotético en el que AnyBooks, una librería dentro del campus de una gran universidad, vende diversos suministros a estudiantes universitarios. Debido a los horarios de las clases, su estacionalidad es tal que venden alrededor de 20 unidades del Artículo A y 30 unidades del Artículo B durante las horas pares, y aproximadamente la mitad de esa cantidad durante las horas impares a lo largo del día. Recientemente, ha habido algunos picos inexplicables en la cantidad de artículos vendidos, y el equipo de administración quiere comenzar a rastrear estas anomalías en la cantidad para poder planificar mejor sus niveles de personal e inventario.
El siguiente diagrama muestra la arquitectura detallada para la solución de extremo a extremo.
En las siguientes secciones, analizamos cada capa que se muestra en el diagrama anterior.
Ingestión
En la capa de ingestión, una AWS Lambda La función recupera las transacciones de venta del minuto actual de una base de datos transaccional PostgreSQL, transforma cada registro en un mensaje JSON y lo publica en un tema de entrada de Kafka. Esta función Lambda está configurada para ejecutarse cada minuto utilizando Programador de Amazon EventBridge.
Pila de detección de anomalías
La aplicación Flink inicia el proceso de lectura de datos sin procesar del tema MSK de entrada, entrena el modelo y comienza la detección de anomalías, registrándolas finalmente en el tema MSK de salida. El siguiente código es el JSON de los resultados de salida:
A continuación se presenta una breve explicación de los campos de salida:
- medida – Representa la métrica que estamos rastreando para detectar anomalías. En nuestro caso,
measure
El campo es elquantity
de ventas paraItem-A
. - ValorDeMedidaAgregado – Esto representa el valor agregado de
quantity
en la ventana de tiempo. - id de serie temporal – Este identificador único corresponde a una combinación de valores únicos para las dimensiones y la métrica. En este caso, es el nombre del producto.
Item-A
dentro de laproduct_name
- Puntuación de confianza de anomalía – A medida que el modelo evoluciona a través del aprendizaje y la inferencia, este puntaje de confianza mejorará progresivamente.
- Puntuación de anomalía – Este campo representa la puntuación de detección de anomalías. Con un
anomalyThreshold
establecido en 70, cualquier valor superior a 70 se considera una anomalía potencial. - modelo de escenario – Cuando el modelo está en la fase de aprendizaje, el
anomalyScore
es 0.0 y el valor de este campo se establece enLEARNING
Una vez finalizado el aprendizaje, el valor de este campo cambia aINFERENCE
. - Umbral de decisión de anomalía – El umbral de decisión se proporciona como entrada en la pila de CloudFormation. Si determina que hay demasiados falsos positivos, puede aumentar este umbral para cambiar la sensibilidad.
- AnomalíaDecisión – Si el
anomalyScore
excede elanomalyDecisionThreshold
este campo se establece en 1, lo que indica que se detectó una anomalía.
Transformar
En la capa de transformación, una Manguera de datos de Amazon El flujo de datos está configurado para consumir datos del tema de salida de Kafka e invocar una función Lambda para la transformación. La función Lambda aplana los datos JSON anidados del tema de Kafka. Los resultados transformados se dividen por fecha y se almacenan en un Servicio de almacenamiento simple de Amazon (Amazon S3) Cubo en formato Parquet. Un Pegamento AWS El rastreador se utiliza para rastrear los datos en la ubicación de Amazon S3 y catalogarlos en el Catálogo de datos de AWS Glue, preparándolos para consultas y análisis.
Visualizar
Para visualizar los datos, hemos creado un Amazon QuickSight panel que se conecta a los datos en Amazon S3 a través del Catálogo de datos y los consulta mediante Amazona AteneaEl panel de control se puede actualizar para mostrar las últimas anomalías detectadas, como se muestra en la siguiente captura de pantalla.
En este ejemplo, la línea azul más oscura en el gráfico lineal representa la estacionalidad del quantity
medida para Item-A
con el tiempo, mostrando valores más altos durante las horas pares y valores más bajos durante las horas impares. La línea rosa representa la puntuación de detección de anomalías, trazada en el eje Y derecho. La puntuación de anomalías se acerca a 100 cuando el valor de la cantidad se desvía significativamente de su patrón estacional. La línea azul representa el umbral de anomalías, establecido en 70. Cuando anomalyScore
supera este umbral, anomalyDecision
se establece en 1.
El KPI “Número de series temporales rastreadas” muestra cuántas series temporales está monitoreando actualmente el modelo. En este caso, debido a que estamos rastreando dos productos (Item-A
y Item-B
), el recuento es 2. El KPI “Número de puntos de datos procesados” muestra el número total de puntos de datos que el modelo ha procesado, y el “Puntuación de confianza de anomalías” indica el nivel de confianza en la predicción de anomalías. Inicialmente, esta puntuación es baja, pero se acercará a 100 a medida que el modelo madure con el tiempo.
Notificación
Si bien la visualización es valiosa para investigar anomalías, los analistas de datos a menudo prefieren recibir notificaciones casi en tiempo real sobre anomalías críticas. Esto se logra agregando una función Lambda que lee los resultados del tema de salida de Kafka y los analiza. Si el anomalyScore
valor excede el umbral definido, la función invoca una Servicio de notificaciones simples de Amazon (Amazon SNS) Tema para enviar notificaciones por correo electrónico o SMS a una lista designada, alertando al equipo sobre la anomalía casi en tiempo real.
Conclusión
En esta publicación, se demostró cómo crear una solución sólida de detección de anomalías en tiempo real para la transmisión de datos de series temporales mediante Managed Service para Apache Flink y otros servicios de AWS. Analizamos una arquitectura de extremo a extremo que ingiere datos de una base de datos de origen, los pasa a través de una aplicación Apache Flink que entrena un modelo de ML y detecta anomalías, y luego coloca los datos de anomalías en un lago de datos S3. Las puntuaciones de anomalías y las decisiones se visualizan a través de un panel QuickSight conectado a los datos de Amazon S3 mediante AWS Glue y Athena. Además, una función Lambda analiza los resultados y envía notificaciones casi en tiempo real.
Con los servicios administrados de AWS como Amazon MSK, Data Firehose, Lambda y SageMaker, puede implementar y escalar rápidamente esta solución de detección de anomalías para sus propios casos de uso de series temporales. Esto le permite identificar automáticamente comportamientos o patrones inesperados en sus flujos de datos en tiempo real sin reglas ni umbrales manuales.
¡Pruebe esta solución y explore cómo la detección de anomalías en tiempo real en AWS puede revelar información y optimizar las operaciones en toda su empresa!
Acerca de los autores
Noé Soprala Noah es un arquitecto de soluciones radicado en Dallas. Es un asesor de confianza para sus clientes y los ayuda a crear soluciones innovadoras utilizando tecnologías de AWS. Noah tiene más de 20 años de experiencia en consultoría, desarrollo, arquitectura y entrega de soluciones.
Dan Sinnreich es gerente sénior de productos de Amazon SageMaker y se centra en la expansión de servicios sin código o de bajo código. Se dedica a hacer que el aprendizaje automático y la inteligencia artificial generativa sean más accesibles y a aplicarlos para resolver problemas complejos. Fuera del trabajo, se lo puede encontrar jugando al hockey, buceando y leyendo ciencia ficción.
Syed Furqhan es ingeniero de software sénior para IA y ML en AWS. Participó en muchos lanzamientos de servicios de AWS como Amazon Lookout for Metrics, Amazon Sagemaker y Amazon Bedrock. Actualmente, se centra en iniciativas de IA generativa como parte de Amazon Bedrock Core Systems. Es un defensor del código limpio y un experto en la materia sobre arquitectura sin servidor y basada en eventos. Puedes seguirlo en LinkedIn, syedfurqhan
Nirmal Kumar es gerente sénior de productos del servicio Amazon SageMaker. Comprometido con ampliar el acceso a la IA y el aprendizaje automático, dirige el desarrollo de soluciones de aprendizaje automático sin código y de código reducido. Fuera del trabajo, disfruta de viajar y leer no ficción.