Prévision de plusieurs périodes avec machine learning

9

Récemment, j'ai récapitulé mes connaissances sur les séries temporelles et j'ai réalisé que l'apprentissage automatique ne donne généralement qu'une seule longueur d'avance.

Par prévisions à un pas, j'entends des prévisions qui, par exemple, si nous avons des données horaires, utilisent les données de 10h à 11h et de 11h à 12h, etc.

entrez la description de l'image ici

Les méthodes d'apprentissage automatique peuvent-elles produire des prévisions d'avance h? Avec les prévisions h-step-ahead, je veux dire que, par exemple, en supposant des données horaires, nous utilisons les données à partir de 10h pour faire une prévision à 7 pas pour obtenir des estimations pour 11,12,13,14,15,16,17 ' o horloge.

Exemple de photo: entrez la description de l'image ici

En relation avec ma question principale, je me demande:

  • Pour quelles raisons je ne vois personne utiliser le machine learning pour faire des prévisions h-step-ahead?
  • S'il existe une méthode utilisant le machine learning, est-elle plus ou moins précise que ARIMA?
5e
la source

Réponses:

7

(Une partie de cela est tirée d' un article précédent ) Tout d'abord, vous devez distinguer les deux façons différentes d'effectuer des prévisions de séries chronologiques en plusieurs étapes: prévisions récursives et prévisions directes:

  • Dans la prévision récursive (également appelée prévision itérative), vous entraînez votre modèle pour des prévisions à une étape seulement. Une fois la formation terminée, vous appliquez récursivement votre modèle final pour prévoir 1 pas en avant, 2 pas en avant, etc. jusqu'à atteindre l' horizon de prévision en pas souhaité . Pour ce faire, vous réinjectez les prévisions de chaque étape successive dans le modèle pour générer l'étape suivante. Cette approche est utilisée par les algorithmes de prévision traditionnels comme ARIMA et les algorithmes de lissage exponentiel, et peut également être utilisée pour les prévisions basées sur l'apprentissage automatique (voir cet article pour un exemple, et cet article pour une discussion).n
  • La prévision directe consiste à former un modèle distinct pour chaque étape (vous essayez donc de prévoir "directement" la étape à venir au lieu d'atteindre étapes de manière récursive. Voir Ben Taied et al. Pour une discussion sur la prévision directe et approches combinées plus complexes.nthn

Maintenant, pour répondre à votre question principale:

Les méthodes d'apprentissage automatique peuvent-elles produire des prévisions d'avance h?

Oui, les méthodes ML peuvent le faire, et elles peuvent produire des prévisions d'avance h en utilisant à la fois des prévisions récursives et directes à plusieurs étapes. Non seulement cela, mais pour la prévision directe en plusieurs étapes, ils sont en fait plus adaptés à la tâche que les modèles traditionnels comme ARIMA ou le lissage exponentiel. Notez cependant que pour la prévision directe en plusieurs étapes, vous devez spécifier à l'avance les étapes h à venir pour lesquelles vous souhaitez prévoir et former votre modèle en conséquence, tandis que pour les prévisions récursives, vous pouvez utiliser votre modèle pour n'importe quel nombre d'étapes futures que vous souhaitez .

De plus, Chevillon et Hendry soutiennent que, dans certains cas, la prévision directe en plusieurs étapes est plus précise que la prévision récursive - ce qui implique que le ML serait plus précis que les méthodes traditionnelles.

Pour vos autres questions:

  • Pour quelles raisons je ne vois personne utiliser le machine learning pour faire des prévisions h-step-ahead?

Beaucoup de gens utilisent ML pour la prévision en plusieurs étapes, en particulier en utilisant des réseaux neuronaux: la méthode nnetar de Hyndman disponible dans le package R Forecast, le package nnfor R de Kourentzes, le modèle DeepAR d'Amazon et bien d'autres.

XGBoost a également été utilisé avec succès dans quelques compétitions de séries temporelles Kaggle.

Voir Bontempi et al. pour une discussion générale.

  • S'il existe une méthode utilisant le machine learning, est-elle plus ou moins précise que ARIMA?

C'est une question ouverte, qui dépend évidemment des données et de l'application que l'on prévoit.

Skander H.
la source
1

J'ai joué avec des séries chronologiques pour la détection d'anomalies au cours des derniers mois et je peux partager avec vous mon expérience.

La série chronologique avec laquelle j'ai travaillé était caractérisée par deux saisonnalités (quotidienne et hebdomadaire), aucune tendance et de nombreux pics pendant la lumière du jour.

J'ai fait plusieurs expériences, puis j'ai choisi un modèle basé sur les réseaux neuronaux LSTM car dans mon cas, il surpassait arima, mais bien sûr, comme tout en statistiques, il n'y a pas de solution générale.

Pour prédire plus d'un pas de temps à l'avenir avec un réseau neuronal est assez simple, vous devrez générer N valeurs au lieu d'une et cette sortie N sera comparée aux N observations réelles.

D'après mon expérience, je peux vous dire qu'en utilisant un faible N (disons 1), le modèle utilisera strictement peu de pas de temps dans le passé pour prédire le nouveau, sans vraiment "apprendre" la saisonnalité. D'un autre côté, en augmentant N trop de butée, les saisonnalités sont apprises mais la précision globale diminue.

Aux fins de mon analyse, j'ai trouvé que N = 4 (2 heures dans le futur) était un bon compromis.

cventr
la source
1

Pour répondre à votre question de manière plus générale, il est possible d'utiliser le machine learning et de prédire les prévisions h-steps-ahead . La partie délicate est que vous devez remodeler vos données dans une matrice dans laquelle vous avez, pour chaque observation, la valeur réelle de l'observation et les valeurs passées de la série chronologique pour une plage définie. Vous devrez définir manuellement quelle est la plage de données qui semble pertinente pour prédire votre série chronologique, en fait, comme vous paramétrez un modèle ARIMA. La largeur / horizon de la matrice est critique pour prédire correctement la prochaine valeur prise par votre matrice. Si votre horizon est restreint, vous risquez de manquer les effets de saisonnalité.

Une fois que vous avez fait cela, pour prévoir les étapes h à venir, vous devrez prédire la première valeur suivante en fonction de votre dernière observation. Vous devrez ensuite stocker la prédiction en tant que «valeur réelle», qui sera utilisée pour prédire la deuxième valeur suivante à travers un décalage temporel , tout comme un modèle ARIMA. Vous devrez répéter le processus h fois pour obtenir votre h-étapes en avance. Chaque itération s'appuiera sur la prédiction précédente.

Un exemple utilisant le code R serait le suivant.

library(forecast)
library(randomForest)

# create a daily pattern with random variations
myts <- ts(rep(c(5,6,7,8,11,13,14,15,16,15,14,17,13,12,15,13,12,12,11,10,9,8,7,6), 10)*runif(120,0.8,1.2), freq = 24)
myts_forecast <- forecast(myts, h = 24) # predict the time-series using ets + stl techniques
pred1 <- c(myts, myts_forecast1$mean) # store the prediction

# transform these observations into a matrix with the last 24 past values
idx <- c(1:24)
designmat <- data.frame(lapply(idx, function(x) myts[x:(215+x)])) # create a design matrix
colnames(designmat) <- c(paste0("x_",as.character(c(1:23))),"y")

# create a random forest model and predict iteratively each value
rfModel <- randomForest(y ~., designmat)
for (i in 1:24){
  designvec <- data.frame(c(designmat[nrow(designmat), 2:24], 0))
  colnames(designvec) <- colnames(designmat)
  designvec$y <- predict(rfModel, designvec)
  designmat <- rbind(designmat, designvec)
}
pred2 <- designmat$y

#plot to compare predictions
plot(pred1, type = "l")
lines(y = pred2[216:240], x = c(240:264), col = 2)

Maintenant, évidemment, il n'y a pas de règles générales pour déterminer si un modèle de série chronologique ou un modèle d'apprentissage automatique sont plus efficaces. Le temps de calcul peut être plus long pour les modèles d'apprentissage automatique, mais d'un autre côté, vous pouvez inclure tout type de fonctionnalités supplémentaires pour prédire vos séries chronologiques en les utilisant (par exemple, pas seulement des fonctionnalités numériques ou logiques). Un conseil général serait de tester les deux et de choisir le modèle le plus efficace.

AshOfFire
la source
Bien que vous souhaitiez peut-être mentionner que ce que vous appelez le décalage horaire est en fait ce que fait un arima standard. C'est pourquoi les prédictions d'Arima ont tendance à être très linéaires.
5
Oui, exactement. Je vais modifier ma réponse pour clarifier cette étape.
AshOfFire
1
Dans les modèles de séries chronologiques, vous pouvez également inclure des fonctionnalités supplémentaires.
Tim
Correct, avec ARIMAX, mais ils doivent être numériques et les coefficients ajoutés ne peuvent pas être aussi facilement interprétés que les coefficients utilisés dans un ARMA.
AshOfFire