Algoritmo per la normalizzazione in tempo reale dei dati delle serie temporali?


12

Sto lavorando a un algoritmo che rileva un vettore del punto dati più recente da una serie di flussi di sensori e confronta la distanza euclidea con i vettori precedenti. Il problema è che i diversi flussi di dati provengono da sensori completamente diversi, quindi prendere una semplice distanza euclidea enfatizzerà notevolmente alcuni valori. Chiaramente, ho bisogno di un modo per normalizzare i dati. Tuttavia, poiché l'algoritmo è progettato per essere eseguito in tempo reale, non posso utilizzare alcuna informazione su qualsiasi flusso di dati nel suo insieme nella normalizzazione. Finora ho appena tenuto traccia del valore più grande visto per ciascun sensore nella fase di avvio (i primi 500 vettori di dati) e quindi dividendo tutti i dati futuri da quel sensore per quel valore. Funziona sorprendentemente bene, ma sembra molto elegante.

Non ho avuto molta fortuna a trovare un algoritmo preesistente per questo, ma forse non sto cercando nei posti giusti. Qualcuno ne conosce uno? O hai qualche idea? Ho visto un suggerimento per usare una media corrente (probabilmente calcolata dall'algoritmo di Wellford), ma che se lo avessi fatto, più letture dello stesso valore non sarebbero state identiche, il che sembra un problema piuttosto grande, a meno che mi manca qualcosa. Ogni pensiero è apprezzato! Grazie!

Risposte:


1

Dalla tua domanda, capisco che stai cercando di:

  1. Trova un modo per normalizzare il contributo dei dati da ciascun sensore.
  2. Verifica se il nuovo punto dati è molto diverso dai punti precedenti.

Qui è dove vorrei iniziare

1.Per la tua prima domanda: rimuovere la media e lo sbiancamento è ciò che stai cercando. Una trasformazione sbiancante assicura che le tue funzioni siano tutte nella stessa gamma dinamica.

Farò alcune ipotesi semplificative che possono essere perfettamente rilevanti ma che sono perfettamente adatte come punto di partenza su cui basarsi.

Supponendo che i tuoi dati siano uni-modali, che abbiano una sola media pronunciata. Vorrei iniziare sottraendo la media dei dati ed eseguendo una trasformazione sbiancante (probabilmente PCA, forse ZCA a seconda dei tuoi dati)

Se vuoi farlo in tempo reale, utilizzerei un conteggio dei campioni in esecuzione che esegue lo sbiancamento su una finestra mobile. Assicurati di avere abbastanza campioni per lo sbiancamento per essere accurati (lo sbiancamento richiede che la matrice di covarianza sia invertibile e che sia necessario un numero maggiore di campioni temporali rispetto ai sensori).

Ora, se i tuoi dati non sono unimodali, probabilmente raggrupperei i dati per vedere dove risiedono le modalità. Alla base, per ogni nuovo punto in arrivo, lo assicuro al cluster appropriato e mi sposto da lì.

2.Per misurare efficacemente una distanza dai punti precedenti, utilizzerei la distanza Mahalanobis . In tutta realtà, la distanza di Mahalanobis è praticamente la distanza euclidea nello spazio sbiancato.

In sintesi, per favore leggi dello sbiancamento e della distanza di Mahalanobis, penso che questi ti indicheranno nella direzione che cerchi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.