Requisitos de datos de formación y detección

Para utilizar el servicio, debe preparar los datos de entrenamiento y prueba adecuados para crear el modelo y probarlo.

Los datos de entrenamiento y prueba solo pueden contener registros de hora y otros atributos numéricos que normalmente representan lecturas de sensores o señales.

Requisitos de calidad y formato de datos

Los datos de entrenamiento y prueba son necesarios para representar valores de múltiples atributos (como señales o sensores) registrados en ciertos registros de hora en orden cronológico que tienen:

  • Columnas que contienen el registro de hora como primera columna y otros atributos numéricos, señales y sensores después.
  • Cada fila representa una observación de esos atributos, señales y sensores en el registro de hora específico.

Estos requisitos garantizan que la formación tenga éxito y que el modelo entrenado sea de alta calidad:

Registro de hora
  • La columna de registro de hora es opcional. El registro de hora se proporciona para cada fila de valor o no es específico en absoluto.
    • Si se proporciona una columna de registro de hora, debe asignarle el nombre timestamp (todo en minúsculas sin espacios) en la primera columna.
    • Los registros de hora de los datos aumentan en orden y no pueden tener duplicados.
    • Los registros de hora pueden tener diferentes frecuencias. Por ejemplo, 50 observaciones en una hora y 200 observaciones en la siguiente hora.
  • Si no se especifica ningún registro de hora, se supone que los datos se ordenan cronológicamente por tiempo.
Atributo
  • Puede que falte el valor, que se debe representar como nulo.

  • Las columnas completas de atributos, señales y sensores no pueden tener todos los valores como valores que faltan.

  • Los nombres de atributo deben ser únicos. El número total de atributos no puede ser mayor que 300.

  • Los nombres de señal y sensor no pueden ser MSET.

  • Si los sensores y las señales no están correlacionados, el servicio crea todos los modelos univariados.

  • El tamaño de ventana es un concepto válido solo para modelos de una variable.

Formación
  • El número de observaciones y registros de hora en los datos de entrenamiento debe ser al menos 8 × number of attributes u 80, lo que sea mayor.

  • Los nombres de señal y sensor no pueden ser MSET.

  • Si los sensores y las señales no están correlacionados, el servicio crea todos los modelos de una variable.

  • El tamaño de ventana es un concepto válido solo para modelos de una variable.

Por ejemplo, con 100 sensores, las filas mínimas requeridas son filas Max(8 x 100, 80) = 800. Con cuatro sensores, las filas mínimas necesarias son Max(8 × 4, 80) = 80 filas.

Nota

Por defecto, el entrenamiento de modelo se realiza mediante algoritmos univariados.

Detección

Puede elegir utilizar la detección síncrona o la detección asíncrona según el caso de uso.

  • Para los modelos univariados, el valor de tamaño de ventana de las filas: 1 no se detecta si hay anomalías.

  • Si proporciona menos de windowSize filas, la detección de anomalías no se produce para las señales univariantes.

  • Los puntos de datos son el número de señales multiplicadas por el número de filas.

Detección síncrona
  • Se utiliza cuando los conjuntos de datos de detección tienen menos de 30 000 puntos de datos y son sensibles al tiempo.
  • Para una llamada de detección por lotes, el tamaño máximo de una carga útil de detección es de hasta 300 para señales o máximo de 30 000 puntos de datos para cualquier combinación de señales y filas.
Detección asíncrona mediante trabajos
  • Se utiliza cuando los conjuntos de datos de detección tienen más de 30 000 puntos de datos y no son sensibles al tiempo.
  • Para los trabajos de detección asíncronos, el tamaño máximo de una carga útil de detección puede variar según el tipo de solicitud.
    • Para la entrada de solicitud en línea, el tamaño máximo de la solicitud está limitado a 11 MB y 500 000 puntos de datos.
    • Para la entrada de Object Storage, el tamaño máximo del archivo está limitado a 500 MB y 10 millones de puntos de datos.

Preparación de Datos

La preparación de datos es esencial para que MSET garantice que los datos utilizados para el entrenamiento de modelos son limpios, coherentes y adecuados para el análisis. A continuación, se muestra una breve visión general de algunas técnicas comunes con los ejemplos correspondientes mediante Python para su uso con Anomaly Detection.

Rango intercuartílico (IQR)

El IQR es una medida de dispersión estadística para su uso en la identificación y eliminación de valores atípicos en datos de series temporales. El IQR se calcula como la diferencia entre el percentil 75 (Q3) y el percentil 25 (Q1) de los datos. Se pueden identificar valores atípicos comparando los valores de datos con los límites superior e inferior, que se calculan como Q3 + 1,5 * IQR y Q1 - 1,5 * IQR, respectivamente. Por ejemplo:

  • Entrada: time_series_data: matriz NumPy o serie pandas que contiene los datos de serie temporal.
  • Salida: cleaned_data: matriz NumPy o serie pandas que contiene los datos de serie temporal limpiados con valores atípicos eliminados.

Ejemplo de Python:

import numpy as np

# Generate some example time series data
time_series_data = np.random.normal(0, 1, 100)

# Calculate the IQR
Q1 = np.percentile(time_series_data, 25)
Q3 = np.percentile(time_series_data, 75)
IQR = Q3 - Q1

# Define the upper and lower bounds for outlier detection
upper_bound = Q3 + 1.5 * IQR
lower_bound = Q1 - 1.5 * IQR

# Identify and remove outliers
outliers = (time_series_data < lower_bound) | (time_series_data > upper_bound)
cleaned_data = time_series_data[~outliers]
Detección de valores atípicos

Se pueden utilizar varios métodos para la detección de valores atípicos en datos de series temporales, como Z-score, promedio móvil y enfoques basados en aprendizaje automático. El algoritmo de aislamiento Forest es un enfoque basado en aprendizaje automático adecuado para la detección de anomalías no supervisadas. Por ejemplo:

  • Entrada: time_series_data: matriz NumPy o serie pandas que contiene los datos de serie temporal.
  • Salida: cleaned_data: matriz NumPy o serie pandas que contiene los datos de serie temporal limpiados con valores atípicos eliminados.

Ejemplo de Python:

import numpy as np
from sklearn.ensemble import IsolationForest

# Generate some example time series data
time_series_data = np.random.normal(0, 1, 100)

# Train the Isolation Forest model
model = IsolationForest(contamination=0.05)  # Specify the contamination level (i.e., expected proportion of outliers)
model.fit(time_series_data.reshape(-1, 1))

# Predict outlier labels
outlier_labels = model.predict(time_series_data.reshape(-1, 1))

# Extract the clean data
cleaned_data = time_series_data[outlier_labels == 1]
Manejo de señales altamente correlacionadas

La preparación de datos para el análisis de series temporales con señales altamente correlacionadas implica varios pasos clave para manejar la correlación entre variables. Estas son algunas técnicas comunes:

  1. Normalización de datos: es importante normalizar los datos de serie temporal para garantizar que todas las variables tengan la misma escala. Esto ayuda a comparar y analizar las variables con alta correlación eficazmente. Los métodos de normalización, como el escalado máximo mínimo o la normalización de puntuación Z, se pueden utilizar para llevar las variables a un rango similar.

  2. Selección de funciones: utilice el coeficiente de correlación de Pearson para identificar variables con alta correlación y eliminar funciones redundantes. Por ejemplo, puede definir un umbral para el coeficiente de correlación y mantener sólo una variable de un par de variables altamente correlacionadas.

    1. Calcular coeficiente de correlación de Pearson: una técnica común para medir la fuerza y la dirección de la correlación lineal entre las variables es el coeficiente de correlación de Pearson. El coeficiente de correlación de Pearson mide la relación lineal entre dos variables, con valores que oscilan entre -1 (correlación negativa perfecta) y 1 (correlación positiva perfecta), y 0 indica que no hay correlación. Puede utilizar pearsonr function del módulo scipy.stats en Python para calcular el coeficiente de correlación de Pearson. A continuación se muestra un ejemplo de uso del coeficiente de correlación de Pearson para la preparación de datos en Python:

      import numpy as np 
      from scipy.stats import pearsonr  
      
      # Generate some example time series data with two highly correlated signals A and B 
      np.random.seed(0) A = np.random.normal(0, 1, 100) 
      B = A + np.random.normal(0, 0.1, 100)  
      
      # Calculate Pearson correlation coefficient between A and B 
      correlation_coefficient, _ = pearsonr(A, B) 
      print(f"Pearson correlation coefficient between A and B: {correlation_coefficient:.2f}")
    Muestra el espectro de correlación pearson positiva a negativa.
  3. Reducción de dimensiones: se pueden utilizar técnicas como el análisis de componentes principales o la descomposición de valores únicos para reducir la dimensionalidad de los datos de series temporales y crear un juego de variables no correlacionadas. Esto también se conoce como componentes principales, al tiempo que se conserva la mayor parte de la información de las variables originales.

Otras recomendaciones

  • Si se agrega un nuevo atributo en el futuro, los datos se deben entrenar de nuevo, incluida la nueva etiqueta de atributo, para tenerlos en cuenta durante la detección.

  • Si se detecta que un atributo es un duplicado de otra señal durante el entrenamiento, se borra automáticamente.

  • Más datos en la llamada de detección son mejores siempre que estén dentro de los límites del máximo de datos permitido.

Requisitos de formato de datos

El servicio Anomaly Detection soporta los formatos de archivo CSV y JSON que contienen datos con registros de hora y atributos numéricos.

El servicio también soporta datos de ATP e InfluxDB, que tienen requisitos similares en cuanto a número y formato de registros de hora y número de atributos numéricos.

Nota

Los registros de hora deben seguir el formato ISO 8601. Recomendamos que utilice el tiempo preciso hasta segundos o milisegundos como en los ejemplos de formato de archivo.

Formato CSV

Cada columna representa los datos del sensor y la fila representa los valores correspondientes a cada sensor en un registro de hora determinado.

Los datos con formato CSV deben tener líneas separadas por comas, con la primera línea como cabecera y las otras líneas como datos. El servicio Anomaly Detection requiere que la primera columna se llame timestamp al especificar registros de hora.

Por ejemplo:

timestamp,sensor1,sensor2,sensor3,sensor4,sensor5
2020-07-13T14:03:46Z,,0.6459,-0.0016,-0.6792,0
2020-07-13T14:04:46Z,0.1756,-0.5364,-0.1524,-0.6792,1
2020-07-13T14:05:46Z,0.4132,-0.029,,0.679,0
Nota

  • Los valores que faltan están permitidos (con un valor nulo), los datos se ordenan por registro de hora y los valores de indicador booleanos se deben convertir a un valor numérico (0 o 1).

  • La última línea no puede ser una línea nueva. La última línea es una observación con otras señales.

Formato JSON

Del mismo modo, los datos con formato JSON también deben contener únicamente registros de hora y atributos numéricos. Use las siguientes claves:

{ "requestType": "INLINE",
  "signalNames": ["sensor1", "sensor2", "sensor3", "sensor4", "sensor5", "sensor6", "sensor7", "sensor8", "sensor9", "sensor10"],
  "data": [
      { "timestamp" : "2012-01-01T08:01:01.000Z", "values" : [1, 2.2, 3, 1, 2.2, 3, 1, 2.2, null, 4] },
      { "timestamp" : "2012-01-02T08:01:02.000Z", "values" : [1, 2.2, 3, 1, 2.2, 3, 1, 2.2, 3, null] }
  ]
}
Nota

El valor que falta se codifica como nulo sin comillas.