Algorytm normalizacji w czasie rzeczywistym danych szeregów czasowych?

12

Pracuję nad algorytmem, który przyjmuje wektor najnowszego punktu danych z wielu strumieni czujników i porównuje odległość euklidesową z poprzednimi wektorami. Problem polega na tym, że różne strumienie danych pochodzą z zupełnie różnych czujników, więc przyjęcie prostej odległości euklidesowej dramatycznie przeceni niektóre wartości. Oczywiście potrzebuję sposobu na znormalizowanie danych. Ponieważ jednak algorytm jest zaprojektowany do działania w czasie rzeczywistym, nie mogę użyć żadnych informacji o żadnym strumieniu danych jako całości w normalizacji. Do tej pory śledziłem największą wartość widoczną dla każdego czujnika w fazie rozruchu (pierwszych 500 wektorów danych), a następnie dzieliłem wszystkie przyszłe dane z tego czujnika przez tę wartość. Działa to zaskakująco dobrze, ale wydaje się bardzo nieeleganckie.

Nie miałem szczęścia znaleźć wcześniej istniejącego algorytmu, ale może po prostu nie szukam odpowiednich miejsc. Czy ktoś wie o jednym? Czy masz jakieś pomysły? Widziałem jedną sugestię, aby użyć średniej biegu (prawdopodobnie obliczonej przez algorytm Wellforda), ale jeśli to zrobię, to wielokrotne odczyty tej samej wartości nie pojawią się jako takie same, co wydaje się dość dużym problemem, chyba że czegoś mi brakuje. Wszelkie myśli są mile widziane! Dzięki!

seaotternerd
źródło

Odpowiedzi:

1

Z twojego pytania rozumiem, że chcesz:

  1. Znajdź sposób, który normalizuje wkład danych z każdego czujnika.
  2. Sprawdź, czy nowy punkt danych bardzo różni się od poprzednich punktów.

Oto gdzie bym zaczął

1. Na pierwsze pytanie: usunięcie tego środka i wybielanie jest tym, czego szukasz. Transformacja wybielania zapewnia, że ​​wszystkie funkcje są w tym samym zakresie dynamicznym.

Podejmę kilka uproszczonych założeń, które mogą być doskonale trafne, ale doskonale nadają się jako punkt wyjścia do zbudowania.

Zakładając, że twoje dane są jednomodalne, że ma jedną wyraźną średnią. Zacznę od odjęcia średniej danych i wykonania transformacji wybielającej (prawdopodobnie PCA, może ZCA w zależności od danych)

Jeśli chcesz to zrobić w czasie rzeczywistym, użyłbym bieżącej liczby próbek, która wykonuje wybielanie w ruchomym oknie. Upewnij się, że masz wystarczającą ilość próbek, aby wybielanie było dokładne (wybielanie wymaga odwracalnej matrycy kowariancji i do tego potrzeba więcej próbek czasowych niż posiadanych czujników).

Teraz, jeśli twoje dane nie są jednomodalne, prawdopodobnie zgrupowałbym dane, aby zobaczyć, gdzie znajdują się tryby. Na bardzo podstawowym poziomie, dla każdego przybywającego nowego punktu, przydzielam go do odpowiedniego gromady i stamtąd ruszam.

2.Aby skutecznie zmierzyć odległość od poprzednich punktów, użyłbym odległości Mahalanobisa . W rzeczywistości odległość Mahalanobisa jest prawie odległością euklidesową w wybielonej przestrzeni.

Podsumowując, przeczytaj o wybielaniu i odległości Mahalanobisa, myślę, że wskażą ci kierunek, w którym szukasz.

Rhadar
źródło