Algorithmus zur Echtzeitnormalisierung von Zeitreihendaten?

12

Ich arbeite an einem Algorithmus, der einen Vektor des neuesten Datenpunkts aus einer Reihe von Sensorströmen aufnimmt und den euklidischen Abstand mit vorherigen Vektoren vergleicht. Das Problem ist, dass die verschiedenen Datenströme von völlig verschiedenen Sensoren stammen, sodass bei einer einfachen euklidischen Entfernung einige Werte dramatisch überbetont werden. Klar, ich brauche einen Weg, um die Daten zu normalisieren. Da der Algorithmus jedoch so konzipiert ist, dass er in Echtzeit ausgeführt wird, kann ich keine Informationen zu einem Datenstrom als Ganzes in der Normalisierung verwenden. Bisher habe ich nur den größten Wert verfolgt, der für jeden Sensor in der Startphase gesehen wurde (die ersten 500 Datenvektoren) und dann alle zukünftigen Daten von diesem Sensor durch diesen Wert dividiert. Das funktioniert überraschend gut, fühlt sich aber sehr unelegant an.

Ich hatte nicht viel Glück, einen bereits existierenden Algorithmus dafür zu finden, aber vielleicht suche ich einfach nicht an den richtigen Stellen. Kennt jemand einen? Oder irgendwelche Ideen? Ich sah einen Vorschlag, einen Mittelwert zu verwenden (wahrscheinlich nach Wellfords Algorithmus berechnet), aber wenn ich das täte, würden mehrere Ablesungen desselben Wertes nicht als gleich erscheinen, was ein ziemlich großes Problem zu sein scheint, es sei denn, ich vermisse etwas Alle mögliche Gedanken werden geschätzt! Vielen Dank!

seaotternerd
quelle

Antworten:

1

Aus Ihrer Frage geht hervor, dass Sie Folgendes suchen:

  1. Finden Sie einen Weg, der den Datenbeitrag von jedem Sensor normalisiert.
  2. Prüfen Sie, ob sich der neue Datenpunkt stark von den vorherigen Punkten unterscheidet.

Hier würde ich anfangen

1.Für Ihre erste Frage: das Entfernen des Mittels und das Aufhellen ist das, wonach Sie suchen. Eine Bleaching-Transformation stellt sicher, dass sich alle Funktionen im gleichen Dynamikbereich befinden.

Ich werde einige vereinfachende Annahmen treffen, die zwar durchaus relevant sind, sich aber als Ausgangspunkt für den Aufbau eignen.

Angenommen, Ihre Daten sind unimodal und haben nur einen ausgesprochenen Mittelwert. Ich würde damit beginnen, den Mittelwert der Daten zu subtrahieren und eine Aufhellungstransformation durchzuführen (wahrscheinlich PCA, möglicherweise ZCA, abhängig von Ihren Daten).

Wenn Sie dies in Echtzeit tun möchten, würde ich eine laufende Probenzählung verwenden, die das Aufhellen in einem sich bewegenden Fenster ausführt. Stellen Sie sicher, dass Sie über genügend Proben verfügen, damit Ihr Bleaching genau ist (für das Bleaching muss die Kovarianzmatrix invertierbar sein und Sie benötigen mehr zeitliche Proben als Sensoren).

Wenn Ihre Daten nicht unimodal sind, würde ich die Daten wahrscheinlich gruppieren, um zu sehen, wo sich die Modi befinden. Im Grunde genommen würde ich es für jeden neuen Punkt, der ankommt, dem richtigen Cluster zuordnen und von dort aus fortfahren.

2. Um eine Entfernung von früheren Punkten effektiv zu messen, würde ich die Mahalanobis-Entfernung verwenden . Tatsächlich ist die Mahalanobis-Distanz so ziemlich die euklidische Distanz im weißen Raum.

Zusammenfassend lesen Sie bitte über das Weißwerden und die Mahalanobis-Distanz. Ich denke, diese zeigen Ihnen die Richtung, in die Sie suchen.

Rhadar
quelle