Comment mapper une trajectoire à un vecteur?

9

J'ai une série de points de données sous cette forme (horodatage, lat, long) pour un ensemble d'utilisateurs. Chaque utilisateur a une trajectoire lorsqu'il se déplace d'un point A à un point B. Il peut y avoir un nombre quelconque de points de A à B. Ils sont ordonnés des points de données basés sur l'horodatage. Je veux les transformer en vecteur pour effectuer diverses tâches d'analyse. Une pensée que j'ai est de regarder les tours et d'en faire une dimension. J'aimerais connaître plus d'approches. Ce que je veux, c'est un vecteur unique représentant toute la trajectoire, pensez-y comme un point pour une trajectoire. Maintenant, j'ai une collection de points 3D.

Je voudrais faire une recherche de similitude de trajectoire. S'il y a deux trajectoires qui se rapprochent dans le temps, elles sont similaires. Pensez-y comme ça, vous allez de la maison au travail à 9h. Quelqu'un d'autre à 9h10 est également son domicile pour le travail et reste à une certaine distance de vous. Puisque vous avez le même lieu de travail, vous aurez probablement la même trajectoire. Quelque chose comme un classificateur construit au sommet d'une trajectoire. Je peux faire une détection d'activité dans une trajectoire, je peux aussi faire une analyse de destination source.

gizgok
la source
4
Pouvez-vous donner un exemple de transformation en vecteur? Du point de vue mathématique, vos données sont déjà une collection de vecteurs dans un espace tridimensionnel, vous voulez clairement autre chose. L'exemple serait donc le bienvenu.
mpiktas
1
Il est également important de savoir quel type d'analyse doit être exécuté. Dans un premier temps, j'essaierais de toute façon une extension de Karhunen-Loeve sur les chemins (vectorisés naïvement), qui construirait "automatiquement" la structure nécessaire pour capturer les caractéristiques des chemins.
Quartz
Je crains que la modification ne réponde pas au commentaire de @Quartz, qui demande des informations essentielles: quel genre de "diverses tâches d'analyse" envisagez-vous?
whuber
1
@Quartz La même courbe géométrique parcourue à différents modèles de vitesse est pertinente pour moi
gizgok
3
doublon possible des mesures
bdecaf

Réponses:

1

Je commencerais par une déformation temporelle dynamique . Tant que vous avez la distance entre deux points (lat, long), cette approche devrait fonctionner. Il s'adapte à différentes vitesses de mouvement. Par exemple, vous et moi vivons dans le même village et allons travailler dans la même usine, mais je m'arrête dans un café en chemin. Il me faut plus de temps pour arriver mais nous sommes plus ou moins sur le même chemin, donc la mesure de similitude s'ajuste à différentes échelles de temps.

C'est différent de ce que vous avez en tête. Il semble que vous vouliez trouver une valeur (vecteur) pour représenter la trajectoire, puis calculer la distance entre les vecteurs. Je vous propose d'utiliser la mesure de distance entre les trajectoires directement, sans étape intermédiaire.

Aksakal
la source
0

Si vous ne considérez que les virages instantanés, c'est-à-dire les changements de direction, je ne pense pas que cela définira la position de manière unique à une prochaine occurrence - à moins que chaque utilisateur ne se déplace à une vitesse connue constante (aucune indication de cela dans votre question) . Puisque vous vous déplacez sur une surface (sphérique, je suppose?), Vous aurez probablement besoin d'au moins une deuxième coordonnée pour déterminer vos positions de manière unique. Pourquoi ne pas simplement construire le tableau par utilisateur avec horodatage comme paramètre, puis concaténer ceci à un vecteur vous devez avoir un vecteur (ou pour les utilisateurs balisés ? Vous pouvez également prendre la longueur de l'arc2×N[x(t);y(t)]1×(2N)[x(t)y(t)]1×(2N×M)Ms(t) pour le chemin parcouru comme paramètre à la place. Sont les horodatages à intervalles réguliers; sinon, vous aurez besoin d'un vecteur distinct pour la recherche. PS: je ne vois pas de lien avec les statistiques; est-ce pertinent pour la validation croisée?

Lucozade
la source
0

Pour chaque utilisateur, vous avez deux séries temporelles, lat (t) et longue (t). Je pense que c'est la représentation la plus simple - je n'essaierais pas de compliquer les choses en me convertissant à une certaine définition des virages, ce qui serait non seulement plus difficile, mais nécessiterait également d'être très prudent sur le point de départ initial et de le traiter différemment dans tout une analyse. (C'est probablement aussi plus bruyant.)

Garder les données sous forme de séries chronologiques lat et longue simplifie également l'utilisation la plus probable - où vous regarderez différentes fenêtres temporelles à différents moments - il n'est pas nécessaire de recalculer constamment un point de départ au début d'une nouvelle fenêtre temporelle en cours d'analyse.

Si les séries temporelles lat et long de chaque utilisateur ont toutes été échantillonnées aux mêmes heures exactes, comme indiqué dans une autre réponse, vous pouvez simplement concaténer les deux vecteurs de séries temporelles en un seul vecteur long. Un exemple similaire qui avait 5 séries chronologiques ressemblait à ceci:
. Ensuite, vous avez un long vecteur pour chaque utilisateur que vous pouvez analyser comme tout autre vecteur pour la reconnaissance des formes, les mesures de distance, le regroupement, etc.

Pour les mesures de distance entre les utilisateurs, vous allez généralement utiliser un formulaire pondéré en fonction de l'application. Par exemple, lorsque vous vous concentrez sur la convergence vers une destination commune, vous augmentez le plus les poids vers la fin de la fenêtre temporelle (que vous regardiez les calculs euclidiens, la distance maximale, etc.).

Mais, la question d'origine semble dire qu'il peut y avoir différents nombres de points entre A et B pour différents utilisateurs. Et dans tous les cas, même pour le même intervalle d'échantillonnage, il est probable que les heures ne soient pas exactement les mêmes (peut-être différant d'une constante car l'échantillonnage a commencé à des moments différents). De plus, il est tout à fait possible qu'il y ait des données manquantes. Dans tous ces cas, sur le plan conceptuel, vous devez penser à chaque série chronologique sous forme continue, peut-être en y ajustant une courbe et en rééchantillonnant chaque utilisateur exactement aux mêmes moments. (C'est analogue au rééchantillonnage qui se produit dans l'analyse de photos lorsque vous réduisez une image). Vos vecteurs de séries chronologiques pour lat et long ont la même longueur et correspondent exactement aux mêmes temps,

gms
la source