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 se proporciona una columna de registro de hora, debe asignarle el nombre
- Si no se especifica ningún registro de hora, se supone que los datos se ordenan cronológicamente por tiempo.
- 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.
- 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 sonMax(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]
- Entrada:
- 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]
- Entrada:
- 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:
-
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.
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.
-
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óduloscipy.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}")
-
-
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.
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.