Les entreprises s'appuient sur la prévision des tendances futures pour prendre des décisions stratégiques, telles que la prévision des ventes de produits ou l'évaluation de la variabilité de la demande. Une méthode permettant de réaliser des prévisions efficaces est la prévision de séries chronologiques. Un principe fondamental de la prévision des séries chronologiques est sa dépendance vis-à-vis des valeurs historiques pour prédire les résultats futurs. Cela nécessite une attention particulière aux données, car les données pratiques ont tendance à être bruitées ou incomplètes, et donc difficiles à prédire.
Bien qu'il existe de nombreux outils pour la prévision de séries chronologiques, Facebook Prophet est spécialement conçu pour gérer les complexités du monde réel, qui vont des tendances non linéaires et de la saisonnalité à l'impact d'événements spéciaux tels que les vacances, les campagnes marketing ou les pics de trafic. Si vous n'êtes pas familier avec la prévision de séries chronologiques, je vous recommande de suivre notre cours Analyse de séries chronologiques en Python et/ou notre cours Prévision en R.
Qu'est-ce que Facebook Prophet ?
Prophet est une bibliothèque de prévision open source développée par l'équipe Core Data Science de Facebook. Il est disponible à la fois en Python et en R. L'une des raisons pour lesquelles les analystes et les scientifiques de données apprécient son utilisation est qu'il automatise de nombreuses étapes fastidieuses des méthodes de prévision traditionnelles. Grâce à cette flexibilité, il permet aux utilisateurs de produire rapidement des prévisions interprétables et fiables.
Cadre de modélisation de base de Facebook Prophet
L'approche de modélisation de Facebook Prophet est à la fois structurée etflexible. Il décompose une série chronologique en quatre composantes clés de l', à savoir la tendance, la saisonnalité, les jours fériés et l'erreur. Ce troisième élément, que j'ai appelé « les vacances », n'est pas si courant. La décomposition classique et la décomposition STL identifient trois composantes : la tendance, la saisonnalité et l'erreur.
En clarifiant la manière dont les tendances, la saisonnalité et les jours fériés contribuent tous à la prévision finale, la décomposition aide à valider le raisonnement du modèle lorsque nous essayons de prendre des décisions éclairées.
Décomposition des séries chronologiques
Prophet utilise un modèle additif dans lequel l'y(t) e de la série chronologique est exprimée comme suit :
Où,
-
La tendance (
g(t)) indique une croissance ou un déclin à long terme. -
La saisonnalité (
s(t)) comprend des modèles récurrents tels que les fluctuations hebdomadaires, mensuelles ou annuelles. -
Les effets liés aux jours fériés (
h(t)) correspondent à des événements irréguliers mais prévisibles, tels que le Black Friday ou les jours fériés nationaux. -
L'erreur (
et) correspond au bruit résiduel qui ne peut être expliqué par les autres composantes.
En plus d'offrir une interprétabilité en indiquant les facteurs qui influencent les prévisions, il automatise également la plupart du processus de prévision des séries chronologiques, comme la détection de la saisonnalité et le traitement des valeurs manquantes.
En prenant en charge ces opérations de prétraitement complexes, Prophet réduit le besoin d'une expertise statistique approfondie, souvent requise dans les méthodes statistiques conventionnelles. ARIMA, par exemple, nécessite que les hypothèses de stationnarité soient valables et ne tient pas officiellement compte des facteurs externes, tandis que Prophet modélise explicitement les effets saisonniers et les impacts des jours fériés, ce qui le rend plus adapté aux prévisions commerciales.
Spécification des composants de tendance
Prophet propose deux modèles de tendance :
- Le modèle de croissance logistique est pertinent lorsqu'une série chronologique atteint sa capacité maximale, comme c'est le cas pour l'adoption d'une nouvelle application par les utilisateurs.
- Le modèle linéaire par morceaux divise la tendance en segments avec des points de changement, ce qui facilite la modélisation des changements soudains dans la croissance.
Modélisation saisonnière
La saisonnalité est modélisée à l'aide d'une série de Fourier qui permet d'obtenir des fonctions périodiques lisses dans les données chronologiques. Il présente deux formes principales de comportement saisonnier :
- La saisonnalité additive est nécessaire lorsque les variations saisonnières restent constantes en amplitude au fil du temps.
- La saisonnalité multiplicative est appropriée lorsque les fluctuations saisonnières augmentent avec la tendance, comme par exemple lorsque le volume des ventes augmente avec la croissance globale du marché.
De plus, les utilisateurs peuvent également définir des saisonnalités personnalisées afin de représenter des modèles uniques et spécifiques à un domaine, par exemple des promotions trimestrielles.
Intégration des jours fériés et des événements
Prophet offre également la possibilité d'intégrer à la fois des jours fériés prédéfinis et des listes d'événements arbitraires. Cela est particulièrement avantageux pour modéliser les cycles économiques, les jours fériés culturels ou les événements ponctuels tels que les lancements de produits. Il est également possible d'ajouter des événements imprévus tels que la COVID-19 en tant que régresseurs supplémentaires afin de mettre à jour les prévisions de manière dynamique. La modélisation explicite de ces événements améliore la précision et fournit des informations sur l'impact des dates spéciales sur les tendances sous-jacentes.
Gestion du bruit et des valeurs aberrantes
Les données réelles contiennent souvent du bruit et des valeurs aberrantes, ce qui peut entraîner des prévisions de modèle faussées. Prophet dispose de fonctions de perte robustes et de composants de tendance non paramétriques qui rendent les prévisions plus résistantes aux valeurs aberrantes dans les données.
Afin d'améliorer davantage la stabilité des prévisions, il est utile d'analyser les graphiques résiduels et de prétraiter les données en les winsorisant ou en supprimant les anomalies. Ces étapes garantissent que le modèle apprend les tendances réelles, plutôt que des bruits aléatoires.
Quand utiliser Facebook Prophet (et quand ne pas l'utiliser)
À l'instar de la plupart des modèles et techniques d'apprentissage automatique, Prophet n'est pas une solution universelle. Il est essentiel de comprendre ses points forts et ses points faibles pour l'utiliser efficacement.
Points forts et scénarios idéaux
Le prophète est particulièrement efficace lorsque :
- Lorsque les données présentent une saisonnalité quotidienne, hebdomadaire ou annuelle évidente.
- Les ensembles de données sont incomplets et nécessitent un traitement automatisé des valeurs manquantes et des valeurs aberrantes.
- Les utilisateurs ont besoin d'une analyse exploratoire rapide et d'un développement initial du modèle.
Sa simplicité le rend accessible aux utilisateurs ayant des connaissances limitées en statistiques, tandis que son interprétabilité aide les analystes et les scientifiques des données à communiquer efficacement les résultats aux parties prenantes non techniques.
Limites et difficultés potentielles
Le prophète peut être moins approprié dans les scénarios suivants :
- Données très volatiles ou non saisonnières, pour lesquelles il n'existe pas de schémas périodiques réguliers.
- Prévisions à long terme lorsque les tendances sont imprévisibles.
- Les tendances non linéaires ne sont pas prises en compte par les modèles linéaires par morceaux ou logistiques.
Une règle d'or lors de l'utilisation de Prophet, ou de tout autre modèle de prévision, est d'éviter de l'adopter sans discernement. Sans validation adéquate, les modèles peuvent facilement produire des prévisions trop optimistes ou trompeuses, comme on l'a également constaté dans plusieurs discussions communautaires et échecs de prévision très médiatisés.
Utilisation de Prophet dans Python
Étape 1 : Importer des bibliothèques
Tout d'abord, veuillez charger tous les paquets Python requis :
-
pandaspour la manipulation des données -
prophetpour élaborer le modèle de prévision -
matplotlibpour la visualisation -
sklearn.metrics– pour calculer la MAPE, la mesure d'erreur
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_error
Étape 2 : Veuillez charger l'ensemble de données.
Ensuite, nous lisons notre fichier CSV contenant l'historique des cours à terme de l'or. Voici unlien vers l'ensemble de données Kaggle que j'utilise.
file_path = "future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)
Étape 3 : Nettoyez les données
À présent, nous devons procéder au nettoyage des données. Cela signifie que nous :
-
Supprimez les virgules des colonnes numériques et convertissez-les en nombres flottants.
-
Veuillez convertir la colonne «
Date» du format chaîne au format date/heure.
Cela garantit que Prophet peut correctement comprendre et classer les dates.
for col in ["Open", "High", "Low", "Close"]:
gold_ts[col] = gold_ts[col].str.replace(",", "").astype(float)
gold_ts["Date"] = pd.to_datetime(gold_ts["Date"], format="%m/%d/%Y")
Étape 4 : Veuillez trier les données par date.
Nous organisons les données par ordre chronologique. Il s'agit d'une étape importante qui peut être négligée.
gold_ts = gold_ts.sort_values("Date")
Étape 5 : Préparer les données pour Prophet
Nous devons également préparer les données pour Prophet, qui attend que ses colonnes d'entrée soient nommées :
-
ds→ date -
y→ valeur à prévoir (ici, le prix de l'Close)
gold_ts = gold_ts[["Date", "Close"]].rename(columns={"Date": "ds", "Close": "y"})
Étape 6 : Diviser en ensembles d'entraînement et de test
Nous procédons maintenant à la division des données en deux versions distinctes : la version d'entraînement et la version de test.
- Conservez la plupart des données pour la formation.
- Veuillez réserver les 180 dernières lignes (ou 10 % si elles sont moins nombreuses) pour évaluer la précision du modèle.
test_size = min(180, len(gold_ts) // 10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]
Étape 7 : Ajuster le modèle Prophet
Veuillez entraîner le modèle Prophet sur les données historiques en activant les composantes saisonnières quotidiennes et annuelles.
model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)
Étape 8 : Prévision des valeurs futures
Nous effectuons des prévisions pour autant de jours que dans l'ensemble de test.
Les prévisions comprennent des colonnes telles que « yhat » (prédiction), « yhat_lower » (prédiction) et « yhat_upper » (prédiction).
future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)
Étape 9 : Aligner les prévisions sur les résultats réels
Veuillez associer les cours de clôture réels aux prévisions du modèle aux dates correspondantes afin de les comparer directement.
merged = pd.merge(test, forecast[["ds", "yhat"]], on="ds", how="inner")
Étape 10 : Calculer la MAPE
Nous évaluons maintenant la précision de la prévision. Si les dates ne se chevauchent pas, le système vous avertit au lieu de planter.
if merged.empty:
print("No overlapping dates between forecast and test set.")
else:
mape = mean_absolute_percentage_error(merged["y"], merged["yhat"]) * 100
print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")
Ici, l'erreur absolue moyenne en pourcentage (EAMP) : 5,83 %
Étape 11 : Veuillez réaliser un graphique des prévisions.
Nous visualisons les prévisions, les intervalles de confiance et l'historique réel.
fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

Étape 12 : Graphique des composantes saisonnières
Il est utile de montrer comment les tendances, les variations saisonnières quotidiennes et annuelles contribuent aux prévisions.
fig2 = model.plot_components(forecast)
plt.show()

Étape 13 : Veuillez examiner les exemples de prévisions.
Veuillez afficher les dernières valeurs prédites et leurs intervalles d'incertitude.
print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10))
Exemples de valeurs prévisionnelles :
ds yhat yhat_lower yhat_upper
3714 2023-11-09 1834.568081 1743.127873 1922.791205
3715 2023-11-10 1833.323500 1749.265678 1937.246093
3716 2023-11-11 1832.818196 1740.941278 1921.772611
3717 2023-11-12 1832.370884 1745.285047 1925.012684
3718 2023-11-13 1832.644350 1736.792708 1919.057042
3719 2023-11-14 1832.017761 1736.229502 1929.786669
3720 2023-11-15 1831.650906 1743.190077 1924.851936
3721 2023-11-16 1831.566521 1738.181184 1933.026740
3722 2023-11-17 1830.427713 1736.038529 1919.505155
3723 2023-11-18 1830.029816 1737.022754 1922.118728
Validation et test de Facebook Prophet
Méthodologie de validation
La validation croisée des séries chronologiques est nécessaire pour simuler des scénarios de prévision réels. Il est essentiel d'évaluer les performances du modèle sur plusieurs ensembles de validation consécutifs. Non seulement cela permet d'éviter les biais d'anticipation, mais cela offre également une généralisation aux données futures non observées.
Certaines des mesures d'évaluation standard comprennent :
- L'erreur absolue moyenne (EAM) mesure l'amplitude moyenne des erreurs, sans tenir compte de leur direction.
- L'erreur absolue moyenne en pourcentage (MAPE) mesure la différence absolue moyenne en pourcentage. Il est facilement interprétable à différentes échelles. C'est celui que nous avons examiné dans notre exemple Python.
Analyse comparative
Par rapport à ARIMA ou LSTM, Prophet est particulièrement performant dans les domaines suivants :
- Gestion des effets saisonniers et des jours fériés
- Démontrer la robustesse face aux données manquantes, aux valeurs aberrantes et aux irrégularités commerciales
Cependant, Prophet peut afficher des performances inférieures dans des scénarios impliquant des modèles hautement non linéaires ou des ensembles de données présentant une faible saisonnalité.
Applications pratiques et limites
Études de cas concrets
Prophet a été largement adopté dans divers secteurs pour des cas d'utilisation tels que :
- Prévision des ventes au détail, évaluation de la demande et gestion des stocks
- Prévision du trafic Web pour évaluer l'engagement des utilisateurs
- Prévision de la demande énergétique afin d'équilibrer efficacement l'offre et la consommation.
Malgré ses avantages, il est arrivé que les modèles historiques échouent en raison de perturbations imprévues, comme cela s'est produit pendant la pandémie.
Contraintes d'évolutivité
Prophet est capable de traiter des ensembles de données de taille modérée, ce qui convient à la plupart des tâches de prévision commerciale et opérationnelle. Cependant, son utilisation avec des ensembles de données extrêmement volumineux ou des séries chronologiques à haute fréquence est coûteuse en termes de calcul en raison du cadre de modélisation bayésien sous-jacent. Pour remédier à cela, il est recommandé de prévoir plusieurs séries chronologiques en parallèle. Une autre approche pratique consiste à agréger ou à sous-échantillonner les données. Il réduit les coûts liés à la mémoire et au temps d'exécution sans compromettre les modèles temporels importants.
Principales restrictions
Prophet suppose une variable cible unique et modélise sa tendance à l'aide de courbes de croissance linéaires ou logistiques par morceaux. De telles hypothèses peuvent limiter sa flexibilité pour les problèmes multivariés ou non dominés par une tendance. Par conséquent, les utilisateurs doivent ajouter des connaissances spécialisées aux prévisions de Prophet et procéder à une validation externe afin de garantir leur fiabilité.
Échecs et critiques dans le monde réel
Les échecs prévisibles très médiatisés, tels que l'effondrement du marché immobilier Zillow, soulignent les risques liés à une dépendance excessive envers les logiciels de prévision automatisés. Accorder une confiance excessive aux résultats des modèles sans aucune vérification humaine peut entraîner des erreurs coûteuses. Il est donc recommandé de procéder à une validation approfondie et à une planification de scénarios lors de l'interprétation des résultats des prévisions.
N'hésitez pas à remettre en question chaque modèle et chaque tendance. Favorisez une culture qui encourage la pensée critique et permet aux équipes de remettre en question le statu quo. J'ai observé de telles équipes élaborer de manière cohérente des solutions de prévision robustes.
Enfin, je recommande vivement d'adopter une approche « faire confiance, mais vérifier » et d'ajouter une couche supplémentaire de connaissances dans votre domaine afin de vérifier la pertinence des résultats.
Trajectoire de développement futur
Prophet continue d'évoluer grâce à la recherche et aux contributions de la communauté. Les améliorations continues apportées à Prophet comprennent :
- Assistance multivariée
- Évolutivité améliorée pour les ensembles de données volumineux
- Extensions développées par la communauté
La recherche active consiste à intégrer de nouvelles méthodes statistiques et à améliorer les performances dans des ensembles de données complexes et à haute fréquence.
Conclusion
Facebook Prophet est un outil performant pour la prévision de séries chronologiques, offrant automatisation, interprétabilité et flexibilité. Il est particulièrement efficace pour les prévisions exploratoires dans le domaine des affaires et dans d'autres domaines caractérisés par une forte saisonnalité ou des événements spéciaux.
Cependant, cela ne signifie pas pour autant qu'il s'agit d'une solution prête à l'emploi. Pour établir des prévisions fiables, les utilisateurs doivent veiller à effectuer une validation rigoureuse, un réglage des paramètres et acquérir des connaissances dans le domaine. En combinant l'automatisation de Prophet avec un jugement humain réfléchi, les analystes peuvent développer des informations exploitables et éviter les pièges courants.
Pour un apprentissage pratique, veuillez consulter nos cours et nos cursus de compétences :
- Cours sur l'apprentissage automatique pour les données chronologiques en Python
- Cursus de compétences « Séries chronologiques en Python »
- Cours sur l'analyse des séries chronologiques dans R

Je suis un stratège de l'IA et un éthicien qui travaille à l'intersection de la science des données, du produit et de l'ingénierie pour construire des systèmes d'apprentissage automatique évolutifs. Considéré comme l'un des 200 plus grands innovateurs commerciaux et technologiques au monde, je me suis donné pour mission de démocratiser l'apprentissage automatique et de briser le jargon pour que tout le monde puisse participer à cette transformation.
Questions fréquentes
À quoi sert Facebook Prophet ?
Facebook Prophet est utilisé pour les prévisions de séries chronologiques, permettant de prédire les tendances, la saisonnalité et les effets des événements dans des données telles que les ventes, la demande ou le trafic web.
Comment Prophet gère-t-il les jours fériés et les événements spéciaux ?
Prophet permet d'ajouter des événements prédéfinis ou personnalisés au modèle, ce qui permet de tenir compte des pics ou des creux irréguliers dans la série chronologique.
Pourquoi Prophet est-il si apprécié pour les prévisions commerciales ?
Prophet est automatisé, interprétable et robuste face aux données manquantes et aux valeurs aberrantes, ce qui le rend idéal pour des prévisions rapides et fiables.
Dans quels cas est-il préférable de ne pas utiliser Facebook Prophet ?
Il est possible d'éviter d'utiliser Prophet pour les données hautement volatiles ou non saisonnières, ou lorsque les tendances sont trop imprévisibles.
Quels sont les principaux avantages de Prophet par rapport à ARIMA ?
Contrairement à ARIMA, Prophet ne nécessite pas de stationnarité stricte, traite les données manquantes et détecte automatiquement les points de changement.

