Lisez notre article sur

.

Vous avez besoin d'une base de référence pour votre dernier projet de prévision de séries temporelles ? Vous voulez expliquer le processus décisionnel d'un modèle prédictif à une entreprise audience ? Vous aimeriez comprendre si les prix des voitures sont saisonniers avant d'en acheter une nouvelle ? Nous avons peut-être quelque chose pour vous ! Cet article présente Streamlit Prophet, une application web qui aide les scientifiques data à former, évaluer et optimiser les modèles de prévision de manière visuelle. Les prévisions sont réalisées à l'aide de Prophet, un modèle rapide et facilement interprétable.

Vous pouvez tester l'application en ligne ici mais il se peut qu'il ne soit pas disponible à tout moment, en raison de ressources informatiques partagées limitées. Une autre option consiste à installer le logiciel paquet python et l'exécuter localement.

Qu'est-ce que le prophète illuminé ?

Streamlit Prophet est un paquetage Python qui vous permet de déployer une application pour construire des modèles de prévision de séries temporelles. visuellement et sans codage. Une fois que vous avez téléchargé un dataset avec les valeurs historiques du signal à prévoir, l'application forme un modèle prédictif en quelques clics, ainsi que plusieurs visualisations pour vous aider à évaluer ses performances et à obtenir des informations supplémentaires.

Le modèle sous-jacent est construit avec Prophète, une bibliothèque open source développée par Facebook pour prévoir les séries temporelles data. Le signal est décomposé en plusieurs éléments tels que la tendance, les saisonnalités et les effets de vacances. L'estimateur apprend à modéliser chacun de ces blocs séparément et additionne ensuite leurs différentes contributions pour produire une prévision facilement interprétable. Il est plus performant lorsque les séries ont de fortes tendances saisonnières et lorsque plusieurs cycles de l'historique data sont disponibles. Vous pouvez jeter un coup d'œil à ce qui suit fil ou ceci article si vous souhaitez en savoir plus sur les fondements mathématiques de Prophet.
L'interface est réalisée avec Éclairé par la lumière du jour, un framework Python pour la construction d'applications web scientifiques data.

Quelles sont les principales caractéristiques ?

Streamlit Prophet est conçu pour aider les scientifiques et les analystes commerciaux à démarrer rapidement leurs projets de séries temporelles. À titre d'illustration, disons que nous aimerions prédire les ventes futures de biens de consommation dans un magasin particulier, à partir de données historiques data allant de 2011 à 2015. Notre série data ressemble au tableau ci-dessous.

Un modèle de base avec des paramètres par défaut est ajusté sur le data dès qu'il est téléchargé. Voyons maintenant comment nous pourrions utiliser Streamlit Prophet pour l'améliorer et parvenir à une meilleure compréhension du phénomène.

Exploration Data

La première étape de tout projet de prévision consiste à s'assurer que le dataset n'a pas de secrets pour vous. Prophet fournit nativement un décomposition du signal pour vous aider à atteindre cet objectif. Plusieurs graphiques sont disponibles dans l'application pour vous permettre d'obtenir ces informations précieuses en un coup d'œil.
Le graphique suivant est un bon point de départ car il donne une représentation globale de la série temporelle téléchargée et contient de nombreuses informations utiles.

Les points noirs correspondent aux ventes historiques réelles, qui se situent la plupart du temps entre 75 et 225 unités par jour. Quelques valeurs aberrantes sans ventes ou avec de faibles volumes peuvent être repérées à la fin de chaque année, autour de Noël, lorsque les magasins sont probablement fermés. La tendance est représentée sur une ligne rouge afin d'obtenir une vision plus synthétique du signal et de visualiser les évolutions globales. Enfin, la ligne bleue représente les prévisions faites par un modèle Prophet entraîné automatiquement sur votre dataset. Ici, nous pouvons voir que le modèle prévoit une augmentation des ventes en 2016, suivant la tendance à la croissance amorcée en 2015.

Ces prévisions semblent être saisonnières, mais il est difficile de distinguer les différentes composantes périodiques sur ce premier graphique. Vérifions une autre visualisation pour comprendre comment ces schémas saisonniers affectent la sortie du modèle.

Deux périodicités ont été détectées et fournissent des informations intéressantes sur les habitudes des consommateurs. Le cycle hebdomadaire montre que la plupart des gens font leurs achats le week-end, pendant lequel les prévisions augmentent de près de 40 unités par jour. Le graphique suggère également que les produits vendus ont une saisonnalité annuelle, avec des ventes légèrement plus importantes en été que le reste de l'année. Ces composantes périodiques et la tendance globale seront ensuite combinées par l'estimateur pour produire des prévisions pour les jours à venir.

Évaluation des performances

Ces tracés synthétisent la façon dont data est modélisé par Prophet, mais comment s'assurer que cette représentation est fiable ? Pour répondre à cette question légitime, une section de l'application est consacrée à l'évaluation de la qualité du modèle. Elle fournit rapidement à l'utilisateur une performance de base en matière de prévision. Pour ce faire, la série temporelle est divisée en plusieurs parties : le modèle est d'abord ajusté sur un ensemble d'entraînement, puis testé sur un ensemble de validation. D'autres options telles que la validation croisée sont également disponibles pour une utilisation plus avancée.

Différentes mesures peuvent être utilisées pour évaluer la qualité du modèle : les mesures absolues telles que l'erreur quadratique moyenne (RMSE) sont utiles pour se faire une idée de l'ampleur des erreurs en termes de nombre de ventes, mais les mesures relatives telles que le pourcentage d'erreur absolue moyenne (MAPE) peuvent être plus faciles à interpréter. C'est à vous de choisir la mesure la plus pertinente pour votre cas d'utilisation.

Cependant, il est peu probable que les performances soient uniformes sur tous les points data, c'est pourquoi il ne suffit pas d'obtenir un indicateur global. Nous devons calculer des mesures à une granularité plus détaillée pour obtenir une compréhension claire de la qualité du modèle. Commençons par une analyse approfondie au niveau quotidien, qui est la granularité la plus faible possible dans notre cas, puisque le modèle fait une prédiction par jour.

Nous pouvons observer une variabilité importante : certains jours, l'erreur est supérieure à 20% alors que d'autres prévisions sont presque parfaitement exactes. En gardant ces informations à l'esprit, vous ne pouvez probablement pas vous empêcher de vous demander s'il existe des schémas dans la manière dont le modèle commet des erreurs. Y a-t-il des jours particuliers où l'on peut s'attendre à ce qu'il ait des résultats médiocres ? Heureusement, l'application fournit quelques graphiques pratiques qui nous aideront à satisfaire notre curiosité.

Diagnostic d'erreur

La section consacrée au diagnostic des erreurs est probablement la plus utile, car elle vous permet de mettre en évidence les domaines dans lesquels les prévisions pourraient être améliorées et donc d'identifier plus précisément les principaux défis auxquels vous devrez faire face pour construire un modèle de prévision fiable.

Plusieurs visualisations sont disponibles pour mener à bien cette enquête. Elles sont interactives, de sorte que vous pouvez facilement vous concentrer sur certaines zones particulières. Par exemple, le diagramme de dispersion ci-dessous représente chaque prévision faite sur l'ensemble de validation par un seul point, et le survol de celles qui sont éloignées de la ligne rouge nous aide à comprendre pour quel type de points data les prévisions sont éloignées de la vérité.

Dans notre exemple, le survol de la zone supérieure droite montre que les points les plus éloignés de la ligne rouge sont les samedis et les dimanches, ce qui suggère que le modèle est plus performant en semaine. Agrégeons les mesures de performance par jour de la semaine pour valider cette intuition.

Les erreurs sont en effet plus importantes en moyenne le week-end que le reste de la semaine, ce qui est une information à garder à l'esprit lorsque l'on essaie d'optimiser le modèle. Les performances peuvent également évoluer dans le temps, c'est pourquoi il est possible de sélectionner d'autres niveaux d'agrégation disponibles dans l'application pour les vérifier. Nous pourrions par exemple calculer les mesures à une granularité hebdomadaire ou mensuelle, ou sur une période spécifique pendant laquelle nous soupçonnons que les performances sont différentes de la normale.

Optimisation du modèle

Une fois que nous avons découvert les principales faiblesses du modèle, plusieurs options sont disponibles pour l'améliorer : la barre latérale de l'application vous permet de modifier la configuration par défaut et d'entrer vos propres spécifications. Toutes les mesures de performance et les visualisations sont mises à jour chaque fois que vous modifiez les paramètres, afin d'obtenir un retour d'information rapide.

La première façon d'obtenir de meilleures performances est d'appliquer un prétraitement personnalisé à votre ensemble data. Plusieurs alternatives sont possibles pour contourner les difficultés identifiées précédemment. Par exemple, une section de nettoyage nous permet de nous débarrasser des valeurs aberrantes observées autour de Noël, qui risquent d'embrouiller le modèle. Nous pourrions également filtrer certains jours particuliers, et ainsi former facilement des modèles distincts pour la semaine et les week-ends, car ils semblent être associés à des comportements d'achat différents. D'autres options de filtrage et de rééchantillonnage sont également disponibles, au cas où elles seraient pertinentes pour le problème en question.

Les hyperparamètres Prophet peuvent également être réglés pour aider le modèle à mieux s'adapter au data. Ces paramètres influencent la façon dont l'estimateur apprend à représenter la tendance et les saisonnalités des ventes historiques, ainsi que le poids relatif de ces composantes dans la prévision globale. Ne vous inquiétez pas si vous n'êtes pas familier avec les modèles Prophet, certaines infobulles expliquent l'intuition derrière chaque paramètre et vous guident tout au long du processus de réglage. Dans la section de modélisation, vous pouvez également alimenter le modèle avec des informations externes telles que des vacances ou des variables liées au signal à prévoir (comme le prix de vente des produits par exemple). Ces régresseurs sont susceptibles d'améliorer les performances car ils apportent au modèle des connaissances supplémentaires sur un phénomène qui a un impact sur les ventes.

Interprétabilité des prévisions

Disposer d'un modèle de prévision précis est une bonne chose, mais être capable d'expliquer les principaux facteurs qui contribuent à ses prédictions est encore mieux. La dernière section de l'application vise à nous aider à comprendre comment le modèle que nous venons de construire prend ses décisions. Il y a différentes façons d'aborder cette question : nous pouvons soit examiner une seule composante et voir comment sa contribution aux prévisions globales évolue dans le temps, soit prendre une seule prévision et la décomposer en la somme des contributions de plusieurs composantes.

Commençons par la première option. Les différentes composantes qui influencent les prévisions sont la tendance, les saisonnalités et les régresseurs externes. Nous avons déjà observé l'impact des saisonnalités hebdomadaires et annuelles, alors concentrons-nous sur les régresseurs externes que nous avons inclus dans la section d'optimisation du modèle : les vacances et le prix de vente des produits.

L'impact de certains jours fériés est assez important : par exemple, la fête du travail augmente les prévisions de 50 ventes chaque année au début du mois de septembre, et les baisses à Noël montrent que le modèle a pris en compte le fait que les magasins ferment ce jour-là. Quant au prix, il a augmenté d'année en année et son impact sur les ventes est donc passé de positif à négatif.

Il peut également être utile d'expliquer comment le modèle a produit une prévision spécifique, en particulier lorsqu'un événement particulier influence la prévision. Le graphique en cascade suivant montre cette décomposition pour la prévision faite le 31 octobre 2012.

Dans cet exemple, le modèle a fini par prévoir 96 ventes, ce qui correspond à la somme des contributions de cinq composants différents :

  • Tendance mondiale (+134) : c'est le facteur le plus influent.
  • Halloween effet (-12) : le produit est moins vendu à Halloween que les jours ordinaires.
  • Prix de vente (+2) : le prix doit avoir été légèrement inférieur à la moyenne ce jour-là.
  • Saisonnalité hebdomadaire (-23) : il s'agissait d'un mercredi, qui n'est pas un jour de week-end.
  • Saisonnalité annuelle (-5) : Le mois d'octobre est une basse saison pour ce produit.

Ce type de décomposition n'est pas seulement utile pour partager des informations avec des collaborateurs, il peut également aider les analystes à comprendre pourquoi leur modèle ne fonctionne pas comme prévu. Si nécessaire, plusieurs paramètres sont disponibles dans la barre latérale de l'application pour augmenter ou diminuer les poids relatifs des différents composants.

Comment commencer ?

L'exécution de l'application sur votre propre ordinateur est assez simple. La seule condition préalable est d'avoir installé Python. D'autres conditions sont requises pour les utilisateurs de Windows (voir dépôt pour plus de détails). Ensuite, vous pouvez suivre les instructions ci-dessous pour commencer.

Installation

Nous vous recommandons de créer un nouvel environnement virtuel pour éviter les problèmes de dépendances ou d'incompatibilité avec votre environnement actuel. Une fois votre nouvel environnement activé, vous pouvez installer le paquetage avec la commande suivante. L'installation peut prendre quelques minutes (5-10).

pip install -U streamlit_prophet

Exécuter

Maintenant que le paquetage a été installé, une simple commande vous permet de lancer l'application depuis votre terminal et de l'ouvrir dans votre navigateur web par défaut.

streamlit_prophet deploy dashboard

Et vous êtes prêt à construire des modèles de prophètes ! Pour commencer à modéliser, vous devez d'abord télécharger votre dataset sous la forme d'un fichier csv au format suivant.

Image

Vous pouvez ensuite fournir vos spécifications dans la barre latérale pour effectuer les tâches de prétraitement qui répondent à vos besoins et ajuster les hyperparamètres du modèle. Une fois que vous êtes satisfait des résultats, enregistrez votre expérience pour conserver toutes les visualisations et pouvoir la reproduire facilement par la suite.

Déploiement dans le nuage

Si vous souhaitez rendre l'application facilement accessible à plusieurs collaborateurs sans les obliger à télécharger Python et à installer le paquetage, vous pouvez déployer l'application sur le cloud. La première chose à faire est de cloner le dépôt git. Ensuite, une commande Docker vous permet de conteneuriser facilement l'application et de créer une image qui peut être utilisée pour déployer l'application sur la plateforme cloud de votre choix. Ce projet article explique en détail comment procéder sur Google Cloud Platform.

Merci beaucoup pour votre lecture, je serais heureux d'entendre vos commentaires. N'hésitez pas à me contacter si vous souhaitez contribuer au développement du paquet ou si vous avez des idées d'amélioration. En attendant, vous pouvez visiter le site dépôt de projet pour visionner une courte démonstration et Artefact blog tech pour plus d'informations sur nos projets scientifiques data.

Moyen Blog par Artefact.

Cet article a été initialement publié sur Medium.com.
Suivez-nous sur notre Medium Blog !