Léonard Noth
ENFRDE
← projets

KOCO Predict

Prévoir un conteneur pour que les camions cessent d'aller vers des bacs vides

Prévoir la vitesse de remplissage d'un conteneur à déchets, pour que les camions cessent d'aller vider des bacs qui ne sont pas pleins.

Rôle
Ingénieur de recherche
Périmètre
Chaîne de données · Choix des modèles · Protocole d'évaluation · Outillage de livraison
Construit avec
Python, Darts, Prophet, PyTorch, Docker, pandas
Équipe
Mandat de l'institut iSIS pour KOCO Solutions AG, supervisé par la Dre Sandy Ingram, avec des travaux préparatoires menés par deux collègues
Calendrier
Chèque d'innovation Innosuisse 71039.1 INNO-ICT · mon travail de mai 2024 à mai 2025
Résultat
Prophet a ramené l'erreur absolue moyenne de 75,0 kg (le système en place) à 48,04 kg sur les jours de collecte réels, et le MAPE de 40,4% à 19,8%. Les deux partenaires ont noté le projet 1 sur 4 (très réussi) dans le rapport final à Innosuisse.

Le problème

La prévision existante de KOCO était une régression linéaire adaptative : on moyenne le taux de remplissage entre deux collectes et on extrapole. Ça marche, mais ça ne voit jamais que les données des jours de collecte, quelques points par semaine. L'entreprise voulait savoir si dix-huit mois de pesées éparses pouvaient soutenir quelque chose de meilleur.

Mon rôle

Ingénieur de recherche. Des travaux antérieurs existaient à mon arrivée : j'en ai refait l'essentiel, j'ai conçu l'évaluation et j'ai porté les résultats devant le client.

Lire en
L'essentiel en deux minutes

Impact

48,0 kg vs. 75,0 kg
MAE Prophet vs. existant
19,8% vs. 40,4%
Erreur absolue moyenne en %
5, évaluées de deux façons
Familles de modèles comparées
25,6% vs. 2,15%
Points réels, jour vs. heure
71039.1 INNO-ICT
Projet Innosuisse

L'architecture du système

  1. Un conteneur à la fois

    L'export est filtré jusqu'à une seule puce, un seul point de collecte et un seul type de déchet. Les modèles sont par conteneur, pas globaux.

    • 27 722 pesées brutes réparties sur 372 séries de conteneurs et 118 points de collecte
  2. Des pesées éparses vers un taux continu

    Chaque collecte devient un segment linéaire : on divise le poids gagné par le nombre de jours écoulés, et on interpole entre les mesures pour obtenir une série en kg/jour.

    • Une ligne à zéro, synthétique, après chaque mesure marque la vidange
    • À la résolution horaire, seuls 2,15% des points obtenus étaient de vraies mesures, contre 25,6% au pas journalier
  3. Logarithme, découpage, ajustement

    On prend le logarithme de la cible pour qu'une pesée énorme ne domine pas, on garde la dernière portion comme jeu de test, et on ajuste chaque famille de modèles.

    • Les valeurs aberrantes abîmaient l'ajustement : le logarithme conserve chaque observation au lieu de supprimer de vrais événements de collecte
  4. Évaluer deux fois

    Comparer chaque modèle au système en place sur tous les points interpolés, puis à nouveau sur les seuls jours de collecte réels.

    • La première mesure dit si la courbe est juste, la seconde si elle est utile le jour où un dispatcheur décide
    • Les deux classements ne concordaient pas, et ce désaccord était le résultat
  5. Livrer quelque chose qui tourne

    Une chaîne d'entraînement et d'inférence dockerisée, pilotée par un fichier de configuration, plus une boîte à outils d'analyse distincte.

    • Changer de conteneur cible tient en trois lignes de configuration
    • Sept analyses paramétrables, chacune produisant un tableur et une série de graphiques
Services de la plateforme
  • Darts + Prophet

    Une même interface fit/predict pour les modèles statistiques et neuronaux, pour que la comparaison porte sur la même chose

  • pandas + openpyxl

    Lit tel quel l'export Excel que le client envoie réellement

  • PyTorch Lightning

    Servait de socle aux expériences RNN, LSTM et Transformer, celles qui ont finalement perdu

  • Configuration TOML

    Chaque réglage vit dans la configuration et non dans le code : réentraîner ne demande pas de développeur

  • Docker Compose

    Entraînement et inférence comme deux services activables indépendamment

  • Boîte à outils Jupyter

    Un second livrable : saisonnalité, intervalles de mesure et tendances par type de déchet, avec filtres

Cinq familles de modèles face au système en place

Jours de collecte uniquement, le chiffre sur lequel un dispatcheur agit vraiment. Erreur absolue moyenne et erreur absolue moyenne en pourcentage, sur le conteneur vers lequel pointe la configuration livrée.

Modèle linéaire de KOCOProphetFFTRNNLSTMTransformer
Erreur absolue moyenne75,0 kg48,04 kg (best)60,69 kg92,37 kg61,39 kg150,31 kg
Erreur absolue moyenne en %40,42%20,8% (best)30,16%36,7%27,68%57,93%
Racine de l'erreur quadratique moyenne94,93 kg65,43 kg (best)75,31 kg112,57 kg76,93 kg164,45 kg

Décisions clés

Journalier plutôt qu'horaire

plutôt que · La résolution horaire, plus fine, convenue au départ avec le client

À la résolution horaire, environ 98% de la série était inventée par interpolation, et rien sur le terrain ne confirmait qu'un bac se remplit linéairement dans la journée. Passer au pas journalier n'a pas rendu le modèle plus intelligent : ça a fait passer la part honnête des données de 2% à 26%. Choisir l'option la plus grossière est ce qui a rendu les chiffres dignes de confiance.

Deux évaluations, pas une

plutôt que · Un unique score train/test, ce que donne n'importe quelle boucle standard

Évaluer sur tous les points mesure l'accord avec une interpolation que nous avons inventée nous-mêmes. Un modèle peut sembler bon simplement parce qu'il reproduit bien une droite. Évaluer sur les jours de collecte mesure ce sur quoi le dispatcheur agit. C'est en faisant les deux que la différence est apparue.

Livrer les modèles statistiques, écarter les modèles profonds

plutôt que · Pousser plus loin le RNN, le LSTM et le Transformer, avec plus de capacité et une vraie recherche d'hyperparamètres

Ils coûtaient autant à entraîner et à faire tourner, et rendaient moins. Avec quelques centaines de points journaliers par conteneur, il n'y a rien à trouver pour un grand réseau, et la structure qui existe vraiment, un cycle annuel et une cadence hebdomadaire, est exactement ce pour quoi une décomposition additive et une transformée de Fourier sont faites.

Livrer la capacité de réentraîner, pas un modèle

plutôt que · Remettre les notebooks, ce qu'avait produit la première année

Un modèle que seul son auteur sait réentraîner n'est pas un livrable, c'est une dépendance de conseil. Un entraînement et une inférence pilotés par configuration, en services séparés, leur permettent de réentraîner chaque mois sans nous.

KOCO Solutions vend des logiciels pour la collecte des déchets, et leur prévision existante était une régression linéaire adaptative : on moyenne le taux de remplissage entre deux collectes et on extrapole. Ça marche, mais ça ne voit jamais que les données des jours de collecte, soit quelques points par semaine.

Le premier problème n'était pas la modélisation, c'était la forme des données. Les poids relevés aux points de collecte devaient devenir une série continue avant qu'un modèle temporel puisse s'en saisir : nous avons converti les mesures en une chaîne de régressions linéaires, puis interpolé entre elles pour obtenir un taux de remplissage en kg/jour. Nous avions commencé en kg/heure, et nous y avons renoncé : à cette résolution, seuls 2,15% des points étaient de vraies mesures contre 25,6% au pas journalier, et rien sur le terrain ne confirmait que le remplissage soit linéaire à l'intérieur d'une journée. Choisir la résolution la plus grossière est la décision qui a rendu les chiffres dignes de confiance.

Nous avons ensuite opposé cinq familles de modèles (Prophet, FFT, RNN, LSTM, Transformers) au système en place, toutes soumises au même protocole en deux volets : un score sur tous les points interpolés, un autre sur les seuls jours de collecte réels. Le premier dit si la courbe est juste, le second si elle est utile le jour où un dispatcheur décide.

Les modèles profonds ont perdu. RNN, LSTM et Transformers arrivent au niveau ou légèrement en dessous de la base linéaire de KOCO, pour un coût d'entraînement et d'inférence équivalent. Prophet et FFT l'emportent, et Prophet nettement : 48,04 kg d'erreur absolue moyenne contre 75,0 kg pour l'existant, et 19,80% de MAPE contre 40,42%. Le reste des recommandations est sorti de l'analyse exploratoire, pas d'une intuition : les valeurs aberrantes faisaient de vrais dégâts, alors transformation logarithmique et séparation des conteneurs par taille en ont fait partie.

Le livrable est quelque chose qu'ils peuvent faire tourner sans nous : une chaîne d'entraînement et d'inférence dockerisée, configurée en TOML, plus une boîte à outils d'analyse modulaire pour la saisonnalité, les intervalles de mesure et les tendances par type de déchet. Nous avons aussi répondu aux questions opérationnelles qui conditionnent un déploiement. Environ quatre mois d'historique à une à trois mesures par semaine suffisent pour entraîner, et pour un nouveau conteneur sur un site existant, un modèle voisin de même type tombe à ±5%.

Les deux partenaires ont noté le projet 1 sur 4, très réussi, dans le rapport final à Innosuisse.

Ce que j'en retiens

  • La chose la plus utile que j'aie faite a été de baisser la résolution. Plus fin paraissait mieux, jusqu'à ce que je mesure quelle part de la série fine était réelle : environ 2%.
  • Dès qu'il y a eu deux évaluations, les classements ont cessé de concorder, et ce désaccord était le vrai résultat. Un modèle qui suit bien une droite n'est pas un modèle qui dit à un dispatcheur s'il doit envoyer un camion.
  • J'ai réglé des réseaux récurrents et un Transformer deux fois, à deux résolutions, et ils ont perdu face à une transformée de Fourier et à une décomposition additive. Prendre le plus gros modèle est une habitude, pas une méthode.
  • Le retour du client m'a appris ce que j'avais sous-estimé : leur modèle linéaire fonctionne dès moins de cinq mesures, le mien demande environ quatre mois d'historique. Sur un parc où beaucoup de conteneurs sont à peine mesurés, ce n'est pas un détail, c'est la contrainte décisive.

Ce que ça ne fait pas

  • C'était de la recherche, pas de la production : les modèles n'ont jamais été déployés sur le parc de KOCO.
  • La comparaison mise en avant est un agrégat. Conteneur par conteneur, le tableau est moins flatteur : sur le conteneur retenu dans la configuration livrée, le modèle linéaire en place devance encore Prophet sur les jours de collecte tenus à l'écart.
  • Toute l'approche demande environ quatre mois d'historique à une à trois mesures par semaine, ce dont le système en place n'a pas besoin.