Bienvenue dans cette série d’articles où je mets dans la vitrine de l’Atelier des Données une machine conçue et fabriquée sur place. J’y explique en quoi elle consiste, ce qu’elle fait, et surtout à quoi elle peut bien servir !
7 février 2023 – Y aura-t-il de la queue à la cantine ?
Le contexte
Sous ce titre équivoque – on ne mange que rarement de queue de bœuf en restauration collective – se cache une de mes machines les plus intéressantes.
Il s’agit en effet de prédire la fréquentation d’un restaurant d’entreprise ou interentreprise.
Le profond changement des modes de travail engendré par la crise sanitaire du début de la décennie a eu de nombreux impacts sur l’utilisation des immeubles de bureaux. L’un d’entre eux est une variabilité amplifiée de la fréquentation quotidienne des restaurants d’entreprise. En termes simples : depuis le confinement, on ne sait plus rien prévoir.
Ce sujet se superpose à celui de la moindre fréquentation totale pour poser des problèmes importants aux exploitants de restaurants, et par effet de domino aux usagers et aux employeurs. Pour simplifier encore une fois : quand on va à la cantine, il n’y a plus rien à manger dès midi-et-demie. Ou alors : j’ai préparé pour mille couverts, on n’en a fait que 300, on va finir par devoir tout jeter.
Le cas d’usage spécifique que je vais aborder ici est le suivant : il s’agit, tous les jours ouvrables à 10h30, d’envoyer un message sur le téléphone de l’exploitant d’un restaurant contenant une seule information : à combien de couverts doit-il s’attendre aujourd’hui. Il pourra s’en servir pour ajuster les étapes finales de préparation, comme la mise en place ou les mises en cuisson.
La curieuse Machine
J’entre ici dans quelques détails techniques, à la fois sur la structure de la machine, mais aussi sur la nature des données qu’elle a dû traiter.
Les données
Chaque restaurant d’entreprise sert une population particulière. La façon dont un potentiel convive va décider de venir au bureau, ou au restaurant d’entreprise, dépendra de nombreuses conditions. On peut citer si une seule ou plusieurs entreprises utilisent le restaurant, si les employés viennent plutôt travailler en transport en commun, en voiture, en deux-roues, à pied, si les employés ont des familles à charge, si les postes se prêtent au télétravail, si les entreprises ont organisé plus ou moins strictement la présence dans les locaux… et bien entendu pour les sites Français, si la cuisine est bonne !
Ainsi, pour pouvoir obtenir des données avant 10h qui puissent être informatives sur la présence de convives à midi, on peut utiliser des données plus générales liées à l’activité économique immédiate comme
- les données de météorologie,
- les données de circulation routière,
- des informations sur les jours fériés,
- des informations sur les vacances scolaires,
- des informations sur les mouvements sociaux,
- d’autres sources de données publiques,
mais aussi des données extrêmement spécifiques à une entreprise ou une autre, comme
- un profil temporel des pointages ou des entrées sur le site à 10h,
- un profil temporel de consommation de l’eau froide sanitaire à 10h,
- un profil temporel des entrées au parking,
- des données relatives à la planification des présences,
- des données relatives à des facteurs internes à l’entreprise qui influeront sur la présence des salariés,
- des données relatives à des facteurs internes au restaurant qui influeront sur la présence des salariés…
sous réserve bien sûr d’y avoir accès!
La machine consiste donc en:
- Une série de modules pour se connecter à diverses sources d’information, récupérer leurs données
- Un ou plusieurs modules pour récupérer le cas échéant des données de l’entreprise en temps réel
- Des modules de nettoyage des données, spécifiques à chaque flux ou bien communs
- Un module prédictif, entraîné sur des données historiques
- Un module d’alerte, pour envoyer le message sur le téléphone du responsable du restaurant.
La Machine en fonctionnement
Vous pouvez vous approcher, et même toucher les boutons, il n’y a aucun danger tant que vous ne mettez pas les doigts dedans.
Détaillons un peu plus le module de prédiction, pour ceux que le sujet intéresse…
Les données arrivent sous forme numérique et tabulaire, ce qui convient plutôt bien aux méthodes prédictives et limite les transformations à appliquer.
Cependant, la richesse d’information principale se trouve dans des flux de données qui donnent un profil temporel : l’état de la circulation durant tout le pic du matin, les consommations d’eau… les pointages peuvent même être horodatés, un par un !
Chaque donnée d’entrée est donc une suite de tableaux, qui mis à plat bout à bout forment un vecteur de haute dimension, entre plusieurs dizaine et plusieurs centaines de colonnes.
Plusieurs types de modèles peuvent tenter de prendre en charge ce type de problème : par exemple des modèles linéaires + autocorrélés, du style ARIMAX qui peuvent trouver une relation linéaire avec toutes les données externes dont je parlais ci-dessus puis détecter des tendances temporelles dans les résidus. Ce type de modèle va très facilement se trouver mis en échec par la pléthore de données extérieures, et avoir beaucoup de difficultés à converger dans un espace avec autant de dimensions.
On peut également imaginer des modèles d’arbres, en forêt ou en accélération de gradient, sans avoir une grande certitude qu’ils se débrouillent mieux que les modèles linéaires, avec autant de dimensions.
Enfin, les perceptrons, réseaux de neurone les plus simples, peuvent apprendre d’un tel jeu de données. C’est un apprentissage assez similaire à celui qui leur permet de reconnaître des images simples, et on peut aussi envisager utiliser des techniques de convolution pour réduire la dimensionnalité.
C’est donc un réseau de neurones, un perceptron, qui est aujourd’hui branché sur la machine.
Les résultats
La machine n’a pas encore été utilisée sur de véritables données de fréquentation de restaurant d’entreprise. Elle attend tranquillement sous sa bâche avant que je ne la sorte pour la mettre dans la vitrine. Si vous collez votre oreille au verre, vous devinerez un doux bourdonnement qui sort de l’engin…
Revenez dans quelques semaines, je travaille à trouver des partenaires pour faire quelques tests… Et si vous êtes vous-même intéressé à me prêter quelques données, sachez que j’en ferai bon usage !
Bibliothèques utilisées
numpy – Harris, C.R. et al., 2020. Array programming with NumPy. Nature, 585, pp.357–362.
pandas – McKinney, W. & others, 2010. Data structures for statistical computing in python. In Proceedings of the 9th Python in Science Conference. pp. 51–56
scipy – Virtanen, P. et al., 2020. SciPy 1.0: Fundamental Algorithms for Scientific Computing in Python. Nature Methods, 17, pp.261–272.
scikit-learn – Pedregosa, F. et al., 2011. Scikit-learn: Machine learning in Python. Journal of machine learning research, 12(Oct), pp.2825–2830.
requests – Chandra, R.V. & Varanasi, B.S., 2015. Python requests essentials, Packt Publishing Ltd.
BeautifulSoup – Richardson, L., 2007. Beautiful soup documentation. April.
Very interesting topic, thanks for putting up.Raise blog range