Je ne peux pas être précis sur la nature des données car elles sont propriétaires, mais supposons que nous ayons des données comme celle-ci: chaque mois, certaines personnes s'inscrivent à un service. Ensuite, au cours de chaque mois suivant, ces personnes peuvent mettre à niveau le service, interrompre le service ou se voir refuser le service (par exemple pour non-paiement). Pour la première cohorte de nos données, nous avons environ 2 ans de données (24 mois).
Le nombre de personnes se joignant chaque mois est important (de l'ordre de 100 000) et le nombre de personnes faisant l'une des trois choses est par milliers. Cependant, nous n'utilisons pas les données au niveau individuel (qui seraient des millions de lignes) mais des données agrégées par mois et par cohorte (quelle proportion de chaque cohorte fait chaque chose chaque mois).
Nous avons modélisé des données existantes à l'aide de splines de régression adaptative multivariée (MARS) et trouvé des résultats intéressants. Cependant, je m'inquiète de les utiliser pour extrapoler ou prédire l'avenir. Mes préoccupations sont dues au fait que les prédictions dans le futur sont nécessairement en dehors de l'espace d'échantillonnage (en termes de temps) et les splines peuvent devenir instables pour l'extrapolation.
Est-ce une méthode légitime? Quelles sont les préoccupations et peuvent-elles être résolues?
la source
Réponses:
D'après mon interprétation de la question, la question sous-jacente que vous posez est de savoir si vous pouvez ou non modéliser le temps comme une spline.
Revenons maintenant aux séries chronologiques. Les séries chronologiques sont un cas assez spécial dans l'apprentissage automatique. Ils ont tendance à avoir un peu de structure, que ce soit une variance partielle ou l'un des nombreux types de sous-structures, et cette structure peut être exploitée. Mais des algorithmes spéciaux sont nécessaires pour exploiter cette structure, malheureusement les splines ne le font pas.
Il y a quelques choses que je vous recommande d'essayer. Le premier serait les réseaux récents. Si votre série chronologique n'est pas aussi longue (et n'a pas de dépendances à long terme), vous devriez pouvoir vous en sortir en utilisant un simple réseau récurrent vanille. Si vous vouliez être en mesure de comprendre ce qui se passe, vous pouvez utiliser une unité linéaire rectifiée avec des biais comme fonction d'activation et cela équivaudra à faire de la modélisation MARS sur le sous-ensemble de la série temporelle et la "mémoire" que le réseau neuronal récurrent tient. Il serait difficile d'interpréter comment la mémoire est gérée par le net, mais vous devriez avoir une idée de la façon dont le sous-espace est géré par rapport à la fonction linéaire par morceaux générée. De plus, si vous avez des fonctions statiques qui n'appartiennent pas à la série temporelle, il est relativement facile de les utiliser dans le réseau.
Si la série chronologique dont vous disposez est très longue et peut avoir des dépendances à long terme, je recommande d'utiliser l'un des réseaux récurrents fermés, quelque chose comme GRU ou LSTM.
Du côté plus classique de la classification des séries chronologiques, vous pouvez utiliser des modèles de Markov cachés. Je ne vais pas aller plus loin dans ces derniers, car je ne les connais pas aussi bien.
En conclusion, je ne recommanderais pas d'utiliser des splines pour deux raisons. Premièrement, il n'est pas capable de gérer des problèmes d'extrapolation compliqués, ce qui semble être le problème que vous décrivez. Et deuxièmement, les splines n'exploitent pas les sous-structures des séries chronologiques qui peuvent être très puissantes dans la classification des séries chronologiques.
J'espère que cela t'aides.
la source