J'essaie de résoudre ce problème depuis plus d'un an sans grand progrès. Cela fait partie d'un projet de recherche que je fais, mais je vais l'illustrer avec un exemple d'histoire que j'ai inventé, car le domaine réel du problème est un peu déroutant (eye-tracking).
Vous êtes un avion qui suit un navire ennemi qui traverse l'océan, vous avez donc collecté une série de coordonnées (x, y, temps) du navire. Vous savez qu'un sous-marin caché voyage avec le navire pour le protéger, mais bien qu'il y ait une corrélation entre leurs positions, le sous-marin s'éloigne souvent du navire, donc bien qu'il soit souvent près de lui, il peut également être de l'autre côté de la monde de temps en temps. Vous voulez prédire le chemin du sous-marin, mais malheureusement il vous est caché.
Mais un mois en avril, vous remarquez que le sous-marin oublie de se cacher, vous avez donc une série de coordonnées pour le sous-marin et le navire tout au long de 1 000 voyages. En utilisant ces données, vous aimeriez construire un modèle pour prédire le chemin du sous-marin caché étant donné uniquement les mouvements du navire. La ligne de base naïve serait de dire "position du sous-marin suppose =" position actuelle du navire "mais d'après les données d'avril où le sous-marin était visible, vous remarquez que le sous-marin a tendance à être un peu en avant du navire, donc" position du sous-marin " guess = position du navire en 1 minute "est une estimation encore meilleure. En outre, les données d'avril montrent que lorsque le navire fait une pause dans l'eau pendant une période prolongée, le sous-marin est susceptible de patrouiller loin dans les eaux côtières. Il existe d'autres modèles bien sûr.
Comment construiriez-vous ce modèle, compte tenu des données d'avril comme données d'entraînement, pour prédire le chemin du sous-marin? Ma solution actuelle est une régression linéaire ad hoc où les facteurs sont le "temps de trajet", "la coordonnée x du navire", "le navire a été inactif pendant 1 jour", etc. . Mais j'aimerais vraiment un moyen de générer ces facteurs automatiquement à partir des données d'avril. De plus, un modèle qui utilise la séquence ou le temps serait bien, car la régression linéaire ne fonctionne pas et je pense que c'est pertinent.
Merci d'avoir lu tout cela et je serais heureux de clarifier quoi que ce soit.
la source
Réponses:
Voici une approche qui n'utilise aucune information «contextuelle», c'est-à-dire qu'elle ne prend pas en compte le fait qu'un «sous-marin suit un navire». D'un autre côté, il est facile de commencer par:
Désigner par
les coordonnées du sous-marin et du navire au temps , et définir la "série de distance" part
Ma suggestion est que vous prédisiez chacun de ces éléments séparément (vous pouvez les lier ensemble plus tard).
alors
Une autre stratégie que les gens utilisent (qui, je pense, fonctionnera pour vous) est de diviser leur série en
Dans le cas d'un sous-marin et d'un navire, la partie polynomiale serait probablement constante et la partie cyclique une somme de sinus et cosinus (des vagues de l'océan ...). Cela peut ne pas être le cas pour l'eye-tracking.
Il existe des outils qui peuvent comprendre cela pour vous. Voici deux que je connais:
Voici une capture d'écran de l'outil SQL Server (la partie en pointillé est la prédiction):
Un algorithme qu'ils utilisent s'appelle ARIMA. Voulant apprendre comment cela fonctionne, j'ai fait quelques recherches sur Google et j'ai trouvé ce livre: First Course on Time Series (et ne vous inquiétez pas, vous n'avez pas besoin d'avoir SAS pour suivre. Je ne sais pas.). C'est très lisible.
Vous n'avez pas besoin de savoir comment ARIMA fonctionne pour utiliser ces outils, mais je pense que c'est toujours plus facile si vous avez du contexte, car il y a des "paramètres de modèle" à définir, etc.
la source