Detección de anomalías de serie temporal

Importante

El soporte técnico de Machine Learning Studio (clásico) finalizará el 31 de agosto de 2024. Se recomienda realizar la transición a Azure Machine Learning antes de esa fecha.

A partir del 1 de diciembre de 2021 no se podrán crear recursos de Machine Learning Studio (clásico). Hasta el 31 de agosto de 2024, puede seguir usando los recursos de Machine Learning Studio (clásico) existentes.

La documentación de ML Studio (clásico) se está retirando y es posible que no se actualice en el futuro.

Detecta anomalías en los datos de serie temporal de entrada.

Categoría: Serie temporal

Nota

Se aplica a: solo Machine Learning Studio (clásico)

Hay módulos para arrastrar y colocar similares en el diseñador de Azure Machine Learning.

Información general sobre el módulo

En este artículo se describe cómo usar el módulo Detección de anomalías de serie temporal en Machine Learning Studio (clásico) para detectar anomalías en los datos de serie temporal. El módulo aprende las características de funcionamiento normales de una serie temporal que se proporciona como entrada y usa esa información para detectar desviaciones del patrón normal. El módulo puede detectar los cambios en la tendencia general y los cambios en la magnitud o el intervalo de valores.

La detección de cambios en los datos de serie temporal tiene aplicaciones amplias. Por ejemplo, puede usarlo para la supervisión casi en tiempo real de sensores, redes o uso de recursos. Mediante el seguimiento de errores del servicio, el uso del servicio y otros KPI, puede responder rápidamente a anomalías críticas. Otras aplicaciones incluyen atención médica y finanzas.

Métodos de detección de anomalías

La detección de anomalías es el problema de encontrar patrones en datos que no se ajustan a un modelo de comportamiento "normal". Los enfoques típicos para detectar estos cambios usan umbrales calculados humanos simples, o desviación media y estándar para determinar cuándo los datos se desvía significativamente de la media.

Sin embargo, estos enfoques simples no se adaptan fácilmente a los datos de series temporales:

  • Se generan grandes cantidades de anomalías falsas.

  • Los métodos no son aplicables a cambiar los valores de datos.

  • No se puede escalar fácilmente a grandes series temporales

En este módulo se proporcionan dos métodos adicionales para evaluar la varianza de una tendencia de serie temporal:

  • Medición de la magnitud de los cambios ascendentes y descendentes

    Por ejemplo, el número de solicitudes en un servicio web podría ser más recomendable durante algún tiempo y, a continuación, aumentar drásticamente.

  • Medición de la dirección y la duración de las tendencias: cambios positivos frente a negativos

    Por ejemplo, una tendencia ascendente persistente en la longitud de una cola de servicio podría indicar un problema subyacente. Aunque la tendencia general aumenta constantemente y, por lo tanto, podría considerarse estable, un cambio en la pendiente podría marcarse como anomalía. Por el contrario, si supervisa el uso de memoria de un servidor, una disminución constante del tamaño de memoria libre podría indicar un problema.

Ejemplos de patrones anómalos en series temporales

Cambios de nivel ascendente y descendente

Por ejemplo, supongamos que ha estado supervisando el número de solicitudes al día en un servicio web durante un período de tiempo y el número de solicitudes parece permanecer dentro de un intervalo determinado. Sin embargo, después de una actualización del servicio web, cambia el número de solicitudes a ese servicio web. La nueva tendencia puede ser mayor o menor que la tendencia original; Se pueden detectar picos ascendentes y descendentes.

upward and downward level changes

Cambios de tendencias positivas o negativas

Por ejemplo, supongamos que está supervisando la longitud de una cola en un sitio de soporte técnico de servicio. Una tendencia ascendente persistente podría indicar un problema de servicio subyacente.

En otros casos, una tendencia negativa persistente podría ser la anomalía. Por ejemplo, si supervisa el uso de memoria en un servidor, cuando se reduce el tamaño de memoria libre, podría indicar una posible pérdida de memoria.

positive or negative trend change

Recursos

Para obtener más información sobre la investigación subyacente a este enfoque, consulte estos artículos:

  • Shen-Shyang Ho; Wechsler, H., "A Martingale Framework for De detect Changes in Data Secuencias by Testing Exchangeability", Pattern Analysis and Machine Intelligence, IEEE Transactions , vol.32, no.12, pp.2113,2127, Dec. 2010

    Fuentes y citas (Microsoft Academic)

  • Valentina Fedorova, Alex J. Gammerman, Ilia Nouretdinov, Vladimir Vovk, "Martingales plug-in para probar la intercambiabilidad en línea", ICML 2012

    Fuentes y citas (Microsoft Academic)

  • Vladimir Vovk, Ilia Nouretdinov, Alex J. Gammerman, "Testing Exchangeability Online", ICML 2003.

    Fuentes y citas (Microsoft Academic)

Configuración de la detección de anomalías de serie temporal

  1. Agregue el módulo Detección de anomalías de serie temporal al experimento y conecte el conjunto de datos que contiene la serie temporal.

    El conjunto de datos utilizado como entrada debe contener al menos una columna que contenga valores datetime en formato de cadena y otra columna que contenga los valores de tendencia, en un formato numérico. Se omiten otras columnas.

    Dado que cada fila corresponde a un punto de datos de la serie temporal que representa el valor en ese momento, los valores de hora deben ser únicos.

  2. Columna de datos: seleccione una sola columna del conjunto de datos que contenga valores numéricos de datos. Estos valores son los puntos de datos de la tendencia que desea modelar, como los totales de población a lo largo del tiempo, los costos por mes o las temperaturas durante algún período.

  3. Columna de tiempo: seleccione una sola columna del conjunto de datos que contenga el valor de serie temporal asociado.

    La columna debe contener valores datetime válidos, lo que significa que todas las fechas deben estar dentro del intervalo de fechas compatibles con .NET Framework.

    La columna Hora debe usar el tipo de datos DateTime. Si las fechas están en formato de cadena, puede convertirlas mediante el módulo Apply SQL Transformation (Aplicar SQL transformación) o convertirlos mediante el módulo Execute R Script (Ejecutar script R). Si las fechas se representan como enteros, también debe usar una función de conversión datetime adecuada para representar los valores mediante un formato datetime válido.

    Por ejemplo, la siguiente instrucción SQL cambia un valor de fecha de serie Excel a un formato datetime:

     SELECT CAST([SerialDate]  AS SmallDateTime) as [NewValidDate] from t1;  
    

    Después de que los valores de fecha estén en el formato correcto, use el módulo Editar metadatos para establecer el tipo de columna en DateTime.

  4. Tipo de martingale: seleccione la función martingale que se va a usar.

    • PowerAvg. Esta opción es una implementación marginada de la martingala de poder.

      El valor predeterminado es PowerAvg sin parámetros adicionales. Esta opción proporciona un detector de anomalías más estable y debe ser adecuado para la mayoría de las necesidades.

    • Potencia. Una implementación no marginada de la martingala de poder.

      La opción Power proporciona a los usuarios la opción de proporcionar un valor entre 0 y 1 para el parámetro Epsilon para controlar la sensibilidad del detector. Por lo general, un valor de epsilon más alto significa una mayor sensibilidad a las anomalías, pero menos certeza.

    Para obtener una definición de martingales y los métodos usados en este módulo, consulte: Detección de anomalías mediante el aprendizaje automático para detectar anomalías en los datos de series temporales.

  5. Tipo de función extraño: esta opción se usa para distintos tipos de anomalías. Se admiten tres opciones, que no requieren más parámetros:

    • RangePercentile.

      Este es el valor predeterminado y se usa principalmente para detectar cambios de nivel.

    • SlowPosTrend. Elija esta opción para detectar cambios de tendencia positivos.

    • SlowNegTrend. Elija esta opción para detectar cambios de tendencia negativos.

  6. Longitud de los valores de Martingale y Extraño: especifique el tamaño de la ventana de historial, que se usa para calcular los valores de martingale sobre el historial de búsqueda.

    El valor predeterminado es 500, pero puede especificar cualquier entero entre 0 y 5000. Para series temporales grandes, el valor predeterminado debe funcionar bien. Para series temporales más pequeñas, puede intentar calcular el valor de la longitud esperada del comportamiento anómalo.

    Por lo general, se recomienda establecer estos dos parámetros en el mismo valor.

  7. Longitud de valores de extraño: especifique la longitud de la ventana de historial utilizada para calcular la extraña en cada punto de datos.

    El valor predeterminado es 500, pero puede especificar cualquier entero entre 0 y 5000.

    Este parámetro tiene las mismas restricciones que Length of Martingale. Es decir, debe establecer el valor en el número estimado de puntos de datos necesarios para aprender el comportamiento "normal".

    El valor predeterminado de 500 funciona bien para la mayoría de los casos, pero si la escala sobre la que se mide la "normalidad" varía, puede ser beneficioso hacer que Length of Strangeness Values sea un valor mayor que Length of Martingale.

    Por ejemplo, si supervisa errores y supone que los puntos de datos se capturan a intervalos de 15 minutos, el tiempo necesario para aprender la tendencia normal puede variar considerablemente de mes a mes.

    En general, el uso de un tamaño de ventana mayor conduce a un rendimiento más lento, ya que el módulo tiene que aprender sobre un conjunto de datos mayor.

    Por lo general, se recomienda establecer estos dos parámetros en el mismo valor.

  8. Umbral de alerta: especifique un valor por encima del cual la puntuación de anomalía genera una alerta.

    El valor predeterminado es 3,25, lo que significa que se genera una alerta para cada fila que contiene una puntuación de 3,25 o más. S

    Puede especificar cualquier número de punto flotante entre 0 y 100. Sin embargo, existe un equilibrio entre la sensibilidad y la confianza en la elección del umbral:

    • Un umbral inferior haría que el detector fuera más sensible a las anomalías y generara más alertas.

    • Un umbral inferior podría dar lugar a que los cambios normales se clasificarán erróneamente como anomalías.

  9. Ejecute el experimento.

    Tenga en cuenta que no es necesario entrenar este modelo por separado; el algoritmo aprende el patrón de los datos que se proporcionan como entrada en este módulo.

Results

Cuando se completa el entrenamiento, el módulo genera una serie temporal que es la misma longitud que la serie temporal de entrada; sin embargo, se agregan dos columnas para indicar valores potencialmente anómalos.

  • Puntuación de anomalías: la primera columna contiene una puntuación que representa la probabilidad de que el valor de la serie temporal sea anómalo.

  • Alerta: esta columna contiene una marca con un valor de 0 o 1, donde 1 significa que se detectó una anomalía. Puede establecer el umbral para generar la alerta en función de la columna de puntuación, pero establecer el parámetro Umbral de alerta .

Ejemplos

En los ejemplos siguientes se muestra cómo establecer la función martingale para detectar anomalías y cómo interpretar los resultados.

Detección de cambios de nivel

Para ilustrar el impacto de diferentes configuraciones, el conjunto de datos de ejemplo usado en este ejemplo consta de 8870 puntos de datos, con tres cambios de nivel. En función de estos datos, creamos dos modelos con los parámetros siguientes.

  • Tipo de martingala: PowerAvg

  • Tipo de función Strangeness: RangePercentile

  • Longitud de Martingale = 50

  • Longitud de valores de extraño = 50

El modelo se entrenó en los datos entrantes, pero se aplicó un valor diferente para el umbral de alerta. Los resultados de la predicción se trazan en las siguientes imágenes para el modelo 1 y el modelo 2. En estos gráficos, las líneas azules representan los valores de datos y las líneas rojas representan las alertas generadas para una anomalía.

Umbral de alerta de 0,9

level change with alert of 0.9

En este modelo, el valor de umbral es menor y, por lo tanto, se generan alertas (anomalías detectadas) incluso cuando los cambios son momentáneos.

En función del tipo de serie temporal que esté supervisando, algunas de estas alertas podrían considerarse alertas falsas. Sin embargo, un umbral inferior puede ser preferible si no puede pasar por alto ninguna anomalía.

Umbral de alerta de 3,25

level change with alert of 3.25

En este modelo, el umbral de alerta era mucho mayor y, como resultado, el modelo detecta solo los cambios que persisten más tiempo. Un umbral más alto para las alertas podría ser más deseable en un escenario en el que solo quiera detectar cambios más duraderos.

Detección de cambios positivos de pendiente

Para ilustrar esta opción para la detección de anomalías, hemos usado un conjunto de datos de ejemplo que contiene 300 puntos de datos. Todos los puntos formaron una tendencia positiva en general, con dos anomalías.

De nuevo, hemos creado dos modelos con parámetros idénticos excepto el valor del umbral de alerta.

  • Tipo de martingala: PowerAvg

  • Tipo de función Strangeness: SlowPosTrend

  • Longitud de Martingale = 50

  • Longitud de valores de extraño = 50

En estos gráficos, las líneas azules representan valores de datos y las líneas rojas representan alertas generadas para una anomalía.

Umbral de alerta de 4.25

positive trend with alert of 4.25

Umbral de alerta de 6.0

positive trend with alert threshold of 6.0

Se recomienda experimentar con valores de umbral de alerta diferentes para buscar el nivel de confidencialidad adecuado para el escenario de detección de anomalías.

Entradas esperadas

Nombre Tipo Descripción
Datos de entrada que contienen marcas de tiempo y valores Tabla de datos Datos de entrada que contienen marcas y valores de fecha y hora.

Parámetros del módulo

Nombre Tipo Intervalo Opcional Valor predeterminado Descripción
Columna de valor ColumnSelection Requerido Elija la columna que contiene la serie temporal para realizar el seguimiento.
Tamaño de ventana Entero Requerido Especificar un valor que controla el tamaño de la ventana de análisis
Umbral Float Opcionales Especifique un valor que determine el umbral de la puntuación para identificar una anomalía.

Salidas

Nombre Tipo Descripción
Series temporales anotadas con puntuaciones de anomalías Tabla de datos Conjunto de datos con intervalos de anomalías.

Consulte también

Detección de anomalías
Máquina de vectores de soporte de una clase
Detección de anomalías basada en PCA