Algoritmo para la normalización en tiempo real de datos de series de tiempo?

12

Estoy trabajando en un algoritmo que toma un vector del punto de datos más reciente de una serie de flujos de sensores y compara la distancia euclidiana con los vectores anteriores. El problema es que los diferentes flujos de datos provienen de sensores completamente diferentes, por lo que tomar una distancia euclidiana simple enfatizará dramáticamente algunos valores. Claramente, necesito alguna forma de normalizar los datos. Sin embargo, dado que el algoritmo está diseñado para ejecutarse en tiempo real, no puedo usar ninguna información sobre ningún flujo de datos en su totalidad en la normalización. Hasta ahora, he estado haciendo un seguimiento del valor más grande visto para cada sensor en la fase de inicio (los primeros 500 vectores de datos) y luego dividiendo todos los datos futuros de ese sensor por ese valor. Esto funciona sorprendentemente bien, pero se siente muy poco elegante.

No he tenido mucha suerte en encontrar un algoritmo preexistente para esto, pero quizás no estoy buscando en los lugares correctos. ¿Alguien sabe de uno? ¿O tienes alguna idea? Vi una sugerencia para usar una media de ejecución (probablemente calculada por el algoritmo de Wellford), pero que si lo hiciera, entonces varias lecturas del mismo valor no aparecerían como lo mismo, lo que parece un problema bastante grande, a menos que yo Me falta algo. Cualquier idea es apreciada! ¡Gracias!

Seaotternerd
fuente

Respuestas:

1

De su pregunta, entiendo que está buscando:

  1. Encuentre una forma que normalice la contribución de datos de cada sensor.
  2. Vea si el nuevo punto de datos es muy diferente de los puntos anteriores.

Aquí es donde comenzaría

1. Para su primera pregunta: lo que está buscando es eliminar la media y el blanqueamiento. Una transformación de blanqueamiento garantiza que sus características estén todas en el mismo rango dinámico.

Haré algunas suposiciones simplificadoras que pueden ser perfectamente relevantes pero que son perfectamente adecuadas como punto de partida sobre el que construir.

Suponiendo que sus datos son unimodales, que tienen una sola media pronunciada. Comenzaría restando la media de los datos y realizando una transformación de blanqueamiento (probablemente PCA, tal vez ZCA dependiendo de sus datos)

Si desea hacer esto en tiempo real, usaría un recuento de muestras en ejecución que realiza el blanqueamiento en una ventana en movimiento. Asegúrese de tener suficientes muestras para que su blanqueamiento sea preciso (el blanqueamiento necesita que la matriz de covarianza sea invertible y para eso necesita más muestras temporales que sus sensores).

Ahora, si sus datos no son unimodales, probablemente agruparía los datos para ver dónde residen los modos. En lo básico, por cada nuevo punto que llegue, lo asignaría al grupo apropiado y me movería desde allí.

2.Para medir una distancia efectivamente desde puntos pasados, usaría la distancia de Mahalanobis . En realidad, la distancia de Mahalanobis es más o menos la distancia euclidiana en el espacio blanqueado.

En resumen, lea sobre el blanqueamiento y la distancia de Mahalanobis, creo que estos lo orientarán en la dirección que busca.

rhadar
fuente