Les splines peuvent-elles être utilisées pour la prédiction?


20

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?


2
Bien sûr, ils peuvent être utilisés pour la prédiction, mais vous devrez faire attention à régler correctement les hyperparamètres du modèle. Le choix de la fonction spline (constante, linéaire, cubique) est également une préoccupation importante. IIRC, les fonctions de spline linéaire dans MARS sont généralement utilisées, et les splines d'ordre supérieur évitées par souci d'extrapolation / sur-ajustement.
Sycorax dit Réintégrer Monica le

1
Y a-t-il quelque chose qui vous inquiète en particulier, qui vous amènerait à douter d'une méthode que vous avez utilisée? Votre précision a semblé étonnamment faible, ou quelque chose comme ça? Avez-vous essayé d'autres méthodes? Comment se comparent-ils?
one_observation

1
@Sophologist Principalement, ils finiront par être très éloignés des nouvelles valeurs car les nœuds et les lignes sont tous basés sur des valeurs du passé. Donc, disons, une spline linéaire qui dit "augmenter de XXX pour chaque année après 2014" serait basée uniquement sur les données de 2015 mais, si elle était appliquée à 2016, continuerait dans la même direction.
Peter Flom - Réintègre Monica

3
@PeterFlom: J'étais en fait très confus au sujet de votre question (les splines sont très courantes pour la prédiction) jusqu'à ce que je lise votre réponse au Sophologue. J'ai modifié votre question pour aider à souligner exactement ce que je pense que votre préoccupation est. S'il-vous-plaît évaluez.
Cliff AB

2
@PeterFlom: en supposant que mon montage est correct, modélisez-vous l'effet du temps avec une spline? Si oui, je serais très inquiet. Cependant, si vous modélisez l'effet du temps avec un effet de décalage et d'autres covariables avec des splines, je ne verrais aucun problème?
Cliff AB

Réponses:


15

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.

F^(X)=je=1nαjeBje(X[je])
αjeBjeX[je]
muneX(0,X[je]+cje)

R

F^(X)=5+muneX(0,X-5)+2muneX(0,X-dix)

dix
F^(X)=dix+2(X-dix)=2X-dix
5

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.