How To #2 : Gérer la logistique de sa chaîne de magasin avec l'outil “Séries Temporelles” de prevision.io

La gestion de la logistique d'un commerce ou d'une chaîne de magasins passe souvent par la connaissance préventive du nombre de ventes à venir. Sur la base des périodes précédentes, il est possible d'estimer le volume des ventes attendues pour un commerce et ainsi de gérer sa logistiques en conséquence.

Dans ce How-to, nous allons entraîner un modèle de machine-learning sur la plateforme automatisée < a href="https://prevision.io">prevision.io afin de prédire les ventes d'une chaîne d'établissement disposant de 9 magasins.

Contenu du dataset

Le dataset utilisé a été adapté et anonymisé pour la réalisation de ce test.

Il se présente sous la forme d'un fichier constitué de 8 colonnes de données séparés par des virgules :

  • Magasin : un identifiant pour le magasin concerné (la chaîne de magasins est constitués de 9 commerces numérotés de 1 à 9)
  • Jour : le quantième du jour de la semaine (1 à 7)
  • Date : la colonne de date, qui va servir d'index temporelle de notre modèle (ici au format DD/MM/YYYY mais la plateforme accepte plusieurs formats de dates)
  • Ventes : Le volume de ventes réalisées sur ce magasin sur un jour donné
  • Open : Vrai ou faux, indique si le magasin était ouvert ce jour là
  • Promo : Vrai ou faux, indique si il y avait une promotion particulière dans ce magasin ce jour là
  • Jour férié : Vrai ou Faux, indique si ce jour là était férié.
  • vacances scolaires : vrai ou faux, indique si ce jour là est un jour de vacance scolaire pour le magasin en question

dataset de ventes

Apprentissage : Entraînement Timeseries

Pour un problème comme celui de la prédiction de ventes, le modèle le plus adéquat est de type "Séries Temporelles". A partir des données historiques de ventes, la plateforme va établir un modèle permettant de prédire les ventes futures.

Rendez vous sur la page nouveau projet et sélectionnez "Séries temporelles" :

écran de séléction de modèle.

Sélectionnez votre fichier contenant l'historique de vos ventes. Celui-ci doit contenir à minima une colonne contenant une des dates et une colonne contenant la cible à apprendre.

Une fois le fichier analysé, un formulaire présente les variables détectées dans le fichier de données :

les données du fichier

Afin de permettre à la plateforme d'apprendre de l'historique, il faut lui indiquer les éléments suivants :

  • la “Cible” à apprendre : ici il s'agit de la colonne "Ventes"
  • les éventuels paramètres à ne pas inclure dans l'entraînement. Ici la colonne "Clients" doit être décochée car il s'agit d'une variable similaire au nombres de ventes qui ne peut pas et ne doit pas être utilisée pour faire une prédiction.
  • les variables "A priori". Il s'agit des variables dont la valeur lors du moment à prédire sera connue. Typiquement les jours de congés et parfois les jours de promotions.
  • la variable "Groupe" : dans notre cas il s'agit d'un de l'identifiant des magasins. En effet, chaque jour, chaque magasin enregistre un nombre de ventes et le nombre de ventes du magasin 1 n'influe pas, ou très peu, celles du magasin 2. Il s'agit donc d'un "groupe".
  • Enfin, il faut préciser dans le champ marqué de l’icône “horloge” la colonne qui contient les date (ou les heures). Normalement, la plateforme doit automatiquement détecter le pas temporelle de votre historique. Si ce n'est pas le cas, un pop-up apparaît vous indiquant le problème. Il peut alors être nécessaire de vérifier la colonne contenant vos données de temps.

Votre écran de configuration doit alors ressembler à cela :

la configuration d'une serie temporelle.

Configuration de la fenêtre de prédiction

Dans la plupart des modèles de prédiction de séries temporelles, c'est à dire de prédiction d'événements futurs, il est nécessaire de définir à partir de quelle période du passé on veut prédire quelle période du futur.

Prenons le cas fictif où le propriétaire d'un magasin de vêtements souhaite prédire les ventes des vacances d'été (Juillet/Août) à partir des ventes du 1er trimestre de l'année (Janvier, Février, Mars) :

  • La période passé est de 3 mois (Janvier, Février, Mars ).
  • La période à prédire est de 2 mois (Juillet, Août) .
  • la période à prédire se situe 3 mois après la période passée (Avril, Mai, Juin).

Dans la plateforme prevision.io, ceci s'effectue grâce à la jauge temporelle

la jauge temporelle

Dans notre cas, nous voulons, par exemple, prédire 15 jours de ventes situés à 30 jours dans le futur à partir d'un historique de 60 jours. Comme le pas temporelle de notre dataset est de 1 jour, la fenêtre historique s'étend donc de -90 à -30 et la fenêtre de prédiction de 1 à 15:

la jauge temporelle

Une fois tout ceci configuré, cliquez sur "Entraîner des modèles".

Analyse du modèle

Au bout d'environ 30 minutes, les premiers modèles sont disponibles à la page du projet accessible via le “Tableau de bord”.

Le premier insight intéressant est l'onglet "Importance des variables".

Dans celui-ci sont indiquées quelles variables influencent les ventes en particulier quels jours du passé précisément permettent de prédire les ventes du jour n. Sur la plateforme, celles ci sont préfixés par lag suivi du nombre de jour de lag.

feature importance

Dans notre cas, on voit que le premier prédicteur de vente est évidemment que le magasin soit ouvert (!) mais aussi la présence d’offres promotionnelles.

On voit aussi que les ventes du 35ème jour précédant le jour à prédire font un bon indicateur du nombre de ventes.

Le 2ème onglet présentant des informations intéressantes est celui de l'analyse du modèle :

analyse

Dans celui-ci se trouve un Widget "prédit vs réel" qui indique sur un échantillon de données du dataset d'entraînement les prédictions faites par le modèle par rapport au nombre réel de ventes. Plus les points sont proches de la droite diagonale ( f(x) = x), meilleur est le modèle. Ici, le modèle de prédiction est plutôt bon et les ventes sont prédites avec le bon ordre de grandeur.

On remarque aussi une petite série de points excentrés. Ce sont les jours où les ventes ont été nulles et qui, malgré tout, étaient prédites avec une valeur différente de 0 (voir négative car il s'agit d'une régression). Cela peut parfois signifier que les données historiques enregistrées à zéro peuvent être des absences de données (voir notre précédent How To : Valider son dataset).

Une fois que vous disposez d'au moins un modèle et que la performance atteinte vous convient, vous pouvez commencer à prédire vos ventes futures.

Prédiction de ventes

Pour effectuer des prédictions, il faut avoir un fichier historique possédant une profondeur cohérente avec la jauge temporelle définie lors de l'entraînement. Dans notre cas, si vous souhaitez prédire les ventes des 15 prochains jours, il vous faut les données de vente de la période allant d'il y a 60 jours à il y a 30 jours.

En cas de données manquantes, la plateforme sera capable de remplir les absences mais cela se fera au détriment de la qualité de prédiction.

Cet indice de confiance vous sera indiqué si vous cochez la case "Certitude" lors de le la prédiction. La prédiction sera alors légèrement plus longue mais elle vous indiquera, en plus de la valeur prédite, le taux de confiance avec lequel vous pouvez utiliser cette donnée.

Pour prédire, il vous suffit de vous rendre dans l'onglet "Faire des prévisions" et d'uploader le jeu de donnée correspondant. En cliquant sur "Faire des prévisions", vous obtiendrez un fichier “.csv” à télécharger contenant les prédictions de la période future ainsi qu'un graphique vous permettant de parcourir ces prédictions de manière plus précise :

predictions

Conclusion

Avec une plateforme de machine learning automatisée, il est facile de profiter de la puissance des modèles prédictifs sans connaissances préalables ou investissement lourd en serveurs de calcul.

La possession de données historiques reste indispensable pour obtenir des modèles performants mais toute la partie modélisation peut maintenant être déléguée et automatisée.

Les “Séries Temporelles” sont un outil puissant des mathématiques alors n'ayez aucune hésitation à les utiliser pour optimiser votre logistique et vos ventes !

Our Latest
News