Ich habe eine Reihe von Datenpunkten in dieser Form (Zeitstempel, Lat, Long) für eine Gruppe von Benutzern. Jeder Benutzer hat eine Flugbahn, wenn er von Punkt A nach Punkt B fährt. Es kann eine beliebige Anzahl von Punkten von A nach B geben. Es handelt sich um geordnete Datenpunkte basierend auf dem Zeitstempel. Ich möchte sie als Vektor transformieren, um verschiedene Analyseaufgaben zu erledigen. Ein Gedanke, den ich habe, ist, Kurven zu betrachten und sie als Dimension zu gestalten. Ich würde gerne mehr Ansätze erfahren. Was ich will, ist ein Vektor, der die gesamte Flugbahn darstellt. Stellen Sie sich das wie einen Punkt für eine Flugbahn vor. Im Moment habe ich eine Sammlung von 3D-Punkten.
Ich möchte eine Flugbahnähnlichkeitssuche durchführen. Wenn es zwei Flugbahnen gibt, die sich zeitlich nahe beieinander bewegen, sind sie ähnlich. Stellen Sie sich das so vor, Sie gehen um 9 Uhr morgens vom Haus zur Arbeit. Jemand anderes um 9:10 Uhr ist auch sein Zuhause für die Arbeit und bleibt in einiger Entfernung von Ihnen. Da Sie den gleichen Arbeitsplatz haben, werden Sie höchstwahrscheinlich die gleiche Flugbahn haben. So etwas wie ein Klassifikator, der auf einer Flugbahn aufgebaut ist. Ich kann Aktivitätserkennung in einer Trajektorie durchführen, ich kann auch eine Quellzielanalyse durchführen.
Antworten:
Ich würde mit dynamischer Zeitverzerrung beginnen . Solange Sie den Abstand zwischen zwei beliebigen Punkten (lat, long) haben, sollte dieser Ansatz funktionieren. Es passt sich an unterschiedliche Bewegungsgeschwindigkeiten an. Zum Beispiel leben Sie und ich im selben Dorf und gehen zur Arbeit in dieselbe Fabrik, aber ich schaue unterwegs in einem Café vorbei. Es dauert länger, bis ich ankomme, aber wir sind mehr oder weniger auf dem gleichen Weg, sodass sich das Ähnlichkeitsmaß für verschiedene Zeitskalen anpasst.
Dies unterscheidet sich von dem, was Sie vorhaben. Es scheint, dass Sie einen Wert (Vektor) zur Darstellung der Trajektorie erstellen und dann den Abstand zwischen den Vektoren berechnen möchten. Ich schlage vor, dass Sie das Abstandsmaß zwischen den Trajektorien direkt und ohne Zwischenschritt verwenden.
quelle
quelle
Für jeden Benutzer haben Sie zwei Zeitreihen, lat (t) und long (t). Ich denke, das ist die einfachste Darstellung - ich würde nicht versuchen, die Dinge zu komplizieren, indem ich zu einer Definition von Kurven konvertiere, was nicht nur schwieriger wäre, sondern auch erfordern würde, sehr vorsichtig mit dem anfänglichen Ausgangspunkt umzugehen und ihn in jedem Fall anders zu behandeln Analyse. (Es ist wahrscheinlich auch lauter.)
Wenn Sie die Daten als Lat- und Long-Zeitreihen aufbewahren, ist dies auch für die wahrscheinlichste Verwendung einfach. Wenn Sie verschiedene Zeitfenster zu unterschiedlichen Zeiten betrachten, müssen Sie den Startpunkt zu Beginn eines neuen Zeitfensters nicht ständig neu berechnen analysiert werden.
Wenn die Zeitreihen lat & long aller Benutzer genau zur gleichen Zeit abgetastet wurden, wie in einer anderen Antwort angegeben, können Sie die beiden Zeitreihenvektoren einfach zu einem langen Vektor verketten. Ein ähnliches Beispiel mit 5 Zeitreihen sah folgendermaßen aus :
. Dann haben Sie für jeden Benutzer einen langen Vektor, den Sie wie jeden anderen Vektor für Mustererkennung, Entfernungsmessungen, Clustering usw. analysieren können.
Für Entfernungsmessungen zwischen Benutzern verwenden Sie in der Regel je nach Anwendung ein gewichtetes Formular. Wenn Sie sich beispielsweise auf die Konvergenz in Richtung eines gemeinsamen Ziels konzentrieren, erhöhen Sie die Gewichte gegen Ende des Zeitfensters am stärksten (unabhängig davon, ob Sie euklidische Berechnungen, maximale Entfernung usw. betrachten).
Die ursprüngliche Frage scheint jedoch zu sagen, dass es für verschiedene Benutzer unterschiedliche Punktzahlen zwischen A und B geben kann. Und auf jeden Fall ist es wahrscheinlich, dass die Zeiten selbst für dasselbe Abtastintervall nicht genau gleich sind (möglicherweise durch eine Konstante unterschiedlich, da die Abtastung zu unterschiedlichen Zeiten begann). Darüber hinaus ist es durchaus möglich, dass Daten fehlen. In jedem dieser Fälle müssten Sie konzeptionell jede Zeitreihe in fortlaufender Form betrachten, möglicherweise eine Kurve daran anpassen und jeden Benutzer genau zur gleichen Zeit neu abtasten. (Dies ist analog zu dem Resampling, das bei der Fotoanalyse auftritt, wenn Sie ein Bild verkleinern.) Dann sind Ihre Zeitreihenvektoren für lat & long gleich lang und entsprechen genau den gleichen Zeiten.
quelle