Méthodes de prédiction de séries temporelles | Arima en Python et R

Contenu

introduction

Imagine ça: vous avez été chargé de prévoir le prix du prochain iPhone et fourni des données historiques. Cela inclut des fonctionnalités telles que les ventes trimestrielles, dépenses mensuelles et une foule de choses qui viennent avec le bilan d'Apple. En tant que data scientist, Dans quel genre de problème classeriez-vous cela? Modélisation de séries temporelles, bien sûr.

De la prévision des ventes de produits à l'estimation de la consommation d'électricité des ménages, la prédiction de séries chronologiques est l'une des compétences de base que tout data scientist est censé connaître, sinon ça domine. Il existe une multitude de techniques différentes que vous pouvez utiliser, et dans cet article, nous couvrirons l'un des plus efficaces, appelé Auto ARIMA.

autoarimafeat-6048464

Nous allons d'abord comprendre le concept d'ARIMA qui nous conduira à notre sujet principal: ARIMA automatique. Pour solidifier nos concepts, nous allons prendre un ensemble de données et l'implémenter à la fois en Python et en R.

Table des matières

  1. Qu'est-ce qu'une série temporelle?
  2. Méthodes de prévision des séries chronologiques
  3. Présentation d'ARIMA
  4. Étapes pour mettre en œuvre ARIMA
  5. Pourquoi avons-nous besoin d'AutoARIMA?
  6. Implémentation automatique ARIMA (dans l'ensemble de données sur les passagers aériens)
  7. Comment sélectionnez-vous les paramètres automatiques ARIMA?

Si vous connaissez les séries chronologiques et leurs techniques (comme moyenne mobile, lissage exponentiel et ARIMA), vous pouvez accéder directement à la rubrique 4. Pour commencer, commencer à partir de la section ci-dessous, qui est une brève introduction aux séries chronologiques et à diverses techniques de prévision. .

1. Qu'est-ce qu'une série temporelle?

Avant d'apprendre les techniques d'utilisation des données de séries chronologiques, nous devons d'abord comprendre ce qu'est réellement une série temporelle et en quoi elle diffère de tout autre type de données. Voici la définition formelle des séries temporelles: est une série de points de données mesuré dans des intervalles de temps cohérents. Cela signifie simplement que des valeurs particulières sont enregistrées à un intervalle constant qui peut être horaire., du quotidien, hebdomadaire, tous 10 jours, etc. Ce qui rend les séries chronologiques différentes, c'est que chaque point de données de la série dépend des points de données précédents. Comprenons plus clairement la différence en prenant quelques exemples.

Exemple 1:

Supposons que vous ayez un ensemble de données de personnes qui ont obtenu un prêt d'une entreprise particulière (comme indiqué dans le tableau suivant). Pensez-vous que chaque ligne sera liée aux lignes précédentes? Certainement pas! Le prêt contracté par une personne sera basé sur ses conditions financières et ses besoins (il pourrait y avoir d'autres facteurs comme la taille de la famille, etc., mais pour simplifier nous ne considérons que le revenu et le type de prêt). En outre, les données n'ont pas été collectées dans un intervalle de temps spécifique. Cela dépend du moment où l'entreprise a reçu une demande de prêt.

autoarima1-2590281

Exemple 2:

Prenons un autre exemple. Supposons que vous ayez un ensemble de données contenant le niveau de CO2 dans l'air par jour (capture d'écran ci-dessous). Pouvez-vous prédire la quantité approximative de CO2 pour le lendemain en regardant les valeurs des derniers jours? Bon, bien sûr. Si vous remarquez, les données ont été enregistrées quotidiennement, c'est-à-dire, l'intervalle de temps est constant (24 Heures).

auto-arima-4681520

Vous devez avoir eu une intuition à ce sujet maintenant: le premier cas est un problème de régression simple et le second est un problème de série temporelle. Bien que le casse-tête des séries chronologiques puisse également être résolu en utilisant la régression linéaire, ce n'est pas vraiment la meilleure approche, car il néglige la relation des valeurs à toutes les valeurs passées relatives. Examinons maintenant certaines des techniques courantes utilisées pour résoudre les problèmes de séries chronologiques..

2. Méthodes de prévision des séries chronologiques

Il existe plusieurs méthodes de prévision des séries chronologiques et nous les aborderons brièvement dans cette section.. Des explications détaillées et des codes Python pour toutes les techniques mentionnées ci-dessous peuvent être trouvés dans cet article: 7 techniques de prévision de séries chronologiques (avec des codes Python).

  1. Approche naïve: Dans cette technique de prévision, la valeur du nouveau point de données est supposée être égale au point de données précédent. Le résultat serait une ligne plate, puisque toutes les nouvelles valeurs reprennent les valeurs précédentes.naïf-2432706
  2. Moyenne simple: La valeur suivante est considérée comme la moyenne de toutes les valeurs précédentes. Les prédictions ici sont meilleures que "l'approche naïve", car cela ne donne pas une ligne plate, mais ici, toutes les valeurs passées sont prises en considération, ce qui peut ne pas toujours être utile. Par exemple, lorsqu'on lui a demandé de prédire la température d'aujourd'hui, Je considérerais la température du dernier 7 jours au lieu de la température d'il y a un mois.simplemoyenne-5477497
  3. Moyenne mobile : Il s'agit d'une amélioration par rapport à l'art antérieur. Au lieu de prendre la moyenne de tous les points ci-dessus, la moyenne de 'n’ au-dessus des points est considérée comme la valeur prédite.moyennemouvement-7801970
  4. Moyenne mobile pondérée: Une moyenne mobile pondérée est une moyenne mobile dans laquelle les valeurs n’ passé reçoivent des poids différents.wmovingmoy-5287626
  5. Lissage exponentiel simple: Dans cette technique, les observations les plus récentes se voient attribuer un poids plus important que celles du passé lointain.ses-3692119
  6. Le modèle de tendance linéaire de Holt: Cette méthode prend en compte la tendance de l'ensemble de données. Par tendance, on entend le caractère croissant ou décroissant de la série. Supposons que le nombre de réservations d'hôtel augmente chaque année, alors on peut dire que le nombre de réservations montre une tendance à la hausse. La fonction de prévision dans cette méthode est une fonction de niveau et de tendance.holttrend-3015737
  7. Méthode Holt Winters: Cet algorithme prend en compte à la fois la tendance et la saisonnalité de la série. Par exemple, le nombre de réservations d'hôtel est élevé le week-end et faible en semaine, et augmente chaque année; il y a une saisonnalité hebdomadaire et une tendance croissante.holtwinter-3922820
  8. ARIMA: ARIMA est une technique très populaire pour la modélisation de séries chronologiques. Décrit la corrélation entre les points de données et prend en compte la différence de valeurs. Une amélioration par rapport à ARIMA est SARIMA (o ARIMA saisonnier). Nous examinerons ARIMA un peu plus en détail dans la section suivante..

3. Présentation d'ARIMA

Dans cette section, nous allons faire une introduction rapide à ARIMA qui sera utile pour comprendre Auto Arima. Une explication détaillée d'Arima est incluse dans cet article, paramètres (p, q, ré), graphique (ACF PACF) et mise en œuvre: Tutoriel complet sur les séries temporelles.

ARIMA est une méthode statistique très populaire pour la prévision de séries chronologiques. ARIMA signifie Moyennes mobiles auto-régressives intégrées. Les modèles ARIMA fonctionnent avec les hypothèses suivantes:

  • La série de données est stationnaire, ce qui signifie que la moyenne et la variance ne doivent pas varier dans le temps. Une série peut être rendue stationnaire en utilisant une transformation logarithmique ou en différenciant la série.
  • Les données fournies en entrée doivent être une série univariée, car arima utilise les valeurs passées pour prédire les valeurs futures.

ARIMA a trois composantes: AVEC (terme autorégressif), je (terme de différenciation) et MA (durée moyenne mobile). Comprenons chacun de ces composants:

  • Le terme AR fait référence aux valeurs passées utilisées pour prévoir la valeur suivante. Le terme AR est défini par le paramètre 'p’ en arima. La valeur de 'p’ déterminé à l'aide de la carte PACF.
  • Le terme MA est utilisé pour définir le nombre d'erreurs de prévision passées qui sont utilisées pour prédire les valeurs futures. Le paramètre 'q’ dans arima il représente le terme MA. Le graphique ACF est utilisé pour identifier la valeur 'q’ C'est Correct.
  • L'ordre de différenciation spécifie le nombre de fois que l'opération de différenciation en série est effectuée pour la rendre stationnaire. Des tests tels que ADF et KPSS peuvent être utilisés pour déterminer si la série est stationnaire et aider à identifier la valeur d.

4. Étapes pour mettre en œuvre ARIMA

Les étapes générales pour mettre en œuvre un modèle ARIMA sont:

  1. Télécharger les données: La première étape de la construction d'un modèle est, bien sûr, charger l'ensemble de données.
  2. Prétraitement: Selon le jeu de données, les étapes de prétraitement seront définies. Cela inclura la création d'horodatages, convertir le type de colonne de date / temps, rendre la série univariée, etc.
  3. Rendre la série stationnaire: Pour satisfaire l'hypothèse, il faut rendre la série stationnaire. Cela inclurait de vérifier la stationnarité de la série et d'effectuer les transformations nécessaires.
  4. Déterminer la valeur d: Pour rendre la série stationnaire, le nombre de fois où l'opération de différence a été effectuée sera pris comme valeur d
  5. Créer des graphiques ACF et PACF: C'est l'étape la plus importante dans la mise en œuvre d'ARIMA. Les cartes ACF PACF sont utilisées pour déterminer les paramètres d'entrée de notre modèle ARIMA.
  6. Déterminer les valeurs p et q: Lire les valeurs p et q des graphiques de l'étape précédente
  7. Monter le modèle ARIMA: En utilisant les données traitées et les valeurs des paramètres que nous avons calculées à partir des étapes précédentes, adapter le modèle ARIMA
  8. Prédire les valeurs dans l'ensemble de validation: Prédire les valeurs futures
  9. Calculer le RMSE: Pour vérifier les performances du modèle, vérifier la valeur RMSE à l'aide des prédictions et des valeurs réelles dans l'ensemble de validation.

5. Pourquoi avons-nous besoin d'Auto ARIMA?

Bien qu'ARIMA soit un modèle très puissant pour la prévision des données de séries chronologiques, les processus de préparation des données et de réglage des paramètres finissent par prendre beaucoup de temps. Avant de mettre en œuvre ARIMA, vous devez rendre la série stationnaire et déterminer les valeurs de p et q à l'aide des graphiques dont nous avons parlé plus tôt. Auto ARIMA nous rend cette tâche vraiment facile, puisqu'il élimine les étapes 3 une 6 que nous avons vu dans la section précédente. Ensuite, les étapes que vous devez suivre pour implémenter ARIMA automatique sont affichées:

  1. Charger les données: Cette étape sera la même. Téléchargez les données sur votre ordinateur portable
  2. Pré-traitement des données: l'entrée doit être univariée, donc, supprimer les autres colonnes
  3. Fit Auto ARIMA: adapte le modèle sur la série univariée
  4. Prédire les valeurs dans l'ensemble de validation: faire des prédictions sur l'ensemble de validation
  5. Calculer le RMSE: vérifier les performances du modèle en utilisant les valeurs prédites par rapport aux valeurs réelles

On ignore complètement la sélection des fonctions p et q, Comme vous pouvez le voir. Quel soulagement! Dans la section suivante, nous allons implémenter auto ARIMA en utilisant un jeu de données de jouets.

6. Implémentation en Python et R

Nous utiliserons l'ensemble de données International-Air-Passenger. Cet ensemble de données contient le nombre total mensuel de passagers (en milliers). Il a deux colonnes: mois et nombre de passagers. Vous pouvez télécharger l'ensemble de données à partir de ce lien.

#charger les données
données = pd.read_csv('international-airline-passagers.csv')

#diviser en train et ensemble de validation
train = données[:entier(0.7*(longueur(Les données)))]
valide = données[entier(0.7*(longueur(Les données))):]

#prétraitement (puisque arima prend en entrée des séries univariées)
train.drop('Mois',axe=1,inplace=True)
valide.drop('Mois',axe=1,inplace=True)

#tracer les données
former[« Passagers des compagnies aériennes internationales »].terrain()
valide[« Passagers des compagnies aériennes internationales »].terrain()

autoarimaplot1-3762053

#construire le modèle
de pyramid.arima importer auto_arima
modèle = auto_arima(former, trace=Vrai, error_action='ignorer', suppress_warnings=Vrai)
model.fit(former)

prévision = model.predict(n_périodes = uniquement(valide))
prévision = pd.DataFrame(prévision,index = valide.index,colonnes=['Prédiction'])

#tracer les prédictions pour l'ensemble de validation
plt.plot(former, étiquette="Former")
plt.plot(valide, étiquette="Valide")
plt.plot(prévision, étiquette="Prédiction")
plt.show()

autoarimaplot-4372874

#calculer rmse
de math import sqrt
à partir de sklearn.metrics importer Mean_squared_error

rms = sqrt(Mean_squared_error(valide,prévision))
imprimer(rms)
sortir -
76.51355764316357

Ci-dessous le code R pour le même problème:

# chargement de paquets
une bibliothèque(prévision)
une bibliothèque(Métrique)

# lecture de données
données = lecture.csv("passagers-compagnies-internationales.csv")

# fractionnement des données en train et ensembles valides
train = données[1:100,]
valide = données[101:maintenant(Les données),]

# suppression "Mois" colonne
train$Mois = NULL

# modèle de formation
modèle = auto.arima(former)

# résumé du modèle
sommaire(maquette)

# prévision
prévision = prévoir(maquette,44)

# évaluation
rmse(valide$International.airline.passagers, prévision$préd)

7. Comment Auto Arima sélectionne les meilleurs paramètres?

Dans le code ci-dessus, nous utilisons simplement le .pour se adapter à() commande pour ajuster le modèle sans avoir à sélectionner la combinaison de p, q, ré. Mais, Comment le modèle a-t-il découvert la meilleure combinaison de ces paramètres? Auto ARIMA prend en compte les valeurs AIC et BIC générées (comme tu peux le voir dans le code) pour déterminer la meilleure combinaison de paramètres. Valeurs AIC (Critère d'information d'Akaike) y BIC (Critère d'information bayésien) sont des estimateurs pour comparer des modèles. Plus ces valeurs sont basses, meilleur est le modèle.

Consultez ces liens si vous êtes intéressé par les mathématiques derrière AIC Oui BIC.

8. Notes finales et lectures complémentaires

J'ai trouvé que l'ARIMA automatique était la technique la plus simple pour faire des prévisions de séries chronologiques. Connaître un raccourci, c'est bien, mais il est également important de se familiariser avec les mathématiques sous-jacentes. Dans cet article, J'ai examiné les détails du fonctionnement d'ARIMA, mais assurez-vous de vérifier les liens fournis dans l'article. Pour votre référence facile, voici encore les liens:

Je suggérerais de pratiquer ce que nous avons appris ici sur ce problème de pratique: Problème de pratique des séries temporelles. Vous pouvez également suivre notre formation créée sur le même problème de pratique, Séries temporelles de prévision, pour vous donner une longueur d'avance.

Bonne chance et n'hésitez pas à nous envoyer vos commentaires et à poser des questions dans la section commentaires ci-dessous..

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.