Prédire l'évolution d'un inventaire ?

Machine learning ? Moindres carrés ? Un peu perdu.

a marqué ce sujet comme résolu.

Hello,

Dans mon travail, j’ai en charge l’inventaire de dizaines de personnes. Chacune de ces personnes écoule son inventaire au fur et à mesure du temps, et doit penser à faire un réassort avant d’atteindre la rupture. Pour les aider, j’aimerais réussir à prévoir intelligemment la rupture bien en avance, en leur envoyant un e-mail du type "hey, ton stock est bientôt à zéro, il faudrait vraiment lancer ton réassort maintenant".

Voici l’évolution de ce qu’on pourrait appeler deux avatars bien représentatifs :

Ce client écoule peu de stock, sauf quelques pics
Ce client écoule peu de stock, sauf quelques pics
Ce client écoule régulièrement du stock, avec des pics
Ce client écoule régulièrement du stock, avec des pics

Dans un premier temps, j’ai songé à un système simple : un seuil critique. Un bête "if(stock < X)". Problème : chaque personne a son propre seuil critique qu’il faut réussir à deviner, et surtout faire évoluer avec le temps. Au final, ça devenait complexe et inutilisable.

Dans un second temps, j’ai essayé d’appliquer la méthode des moindres carrés. J’ai mal du m’y prendre, car le résultat n’était pas pertinent. Je me demande si c’est vraiment utilisable dans mon cas.

Dans un dernier temps, j’ai discuté avec le grand Ge0, qui a évoqué l’idée du machine learning. Après nous être penchés dessus, ça semble intéressant.

On s’est dit qu’il pourrait être pertinent de poster tout ça ici, et d’avoir vos retours sur ce problème. Avez-vous une idée ou une piste pour résoudre ce problème ?

Merci beaucoup !

Il y a une question essentielle : tu as les données sur combien de temps. Ici, tu montres 2 graphiques sur 15 jours, mais j’imagine que dans la vraie vie, tu as des historiques beaucoup plus longs.

Avec les 2 graphes que tu montres, c’est comme si tu ne montrais rien du tout.

Tu parles de la méthode des moindres carrés. Cette méthode regroupe plein de choses, et donc elle peut donner des bons résultats, si elle est bien appliquée, ou donner des résultats stupides, si elle est mal appliquée.

En principe, il te faut une donnée de plus pour pouvoir travailler : les dates des commandes (et les volumes des commandes). Comme ça, tu pourras dire : telle personne, jusqu’à aujourd’hui, elle commandait des marchandises quand le stock atteint le seuil X.

Et donc, par du ML ou par d’autres outils, tu pourras 'reproduire' le comportement humain actuel.

Personnellement, je pense que le ML est un peu surdimensionné pour ce besoin. Mais si tu es plus compétent en ML qu’en analyse de données, pourquoi pas !

Dans un premier temps, j’ai songé à un système simple : un seuil critique. Un bête "if(stock < X)". Problème : chaque personne a son propre seuil critique qu’il faut réussir à deviner, et surtout faire évoluer avec le temps. Au final, ça devenait complexe et inutilisable.

Le seuil critique c’est le seuil qui permet de ne pas être en rupture de stock lorsque la commande est lancé au fournisseur, il prend en compte la consommation prévisionnelle de la période et le temps de livraison/commande. Sans évaluer de consommation prévisionnelle, tu ne peux pas calculer un seuil critique adapté à ton cas.

Si tu veux aller plus loin, tu peux aussi calculer le rapport entre coup de pénurie et de stockage pour assurer un stock optimal. En répondant à la question : Combien de produit je suis prêt à stocker pour éviter une pénurie ?

Dans un second temps, j’ai essayé d’appliquer la méthode des moindres carrés. J’ai mal du m’y prendre, car le résultat n’était pas pertinent. Je me demande si c’est vraiment utilisable dans mon cas.

La méthode au moindre au carrée revient à faire la moyenne de tes points donc fonctionne assez mal pour les grosses commandes ponctuelles. Je conseille d’identifier si plusieurs clients ont des habitudes d’achat (et les anticiper, un peu comme les logiciels des pharmacies avec les prescriptions de leurs clients/patients), c’est-à-dire identifier les auteurs des commandes plutôt que de comparer le nombre d’entrées et de sorties.

Le MUST est de proposer une API aux clients pour vous informer de leur besoin.

En rapport :

Hormis les méthodes, il existe aussi des représentations / outils qui permettent de mieux évaluer les données. Typiquement un Cube OLAP va te permettre d’isoler certaines variables pour les corréler entre elles - par exemple Jour de la semaine + Tendance de la période + Vente du jour, te permet de modéliser des récurrences (période de festivité, jours de disponibilité des clients et ratio des ventes jour / semaine). On peut aussi ajouter une dimension Type de produits pour cibler le type de stock concerné par les pénuries (pas de ML nécessaire pour ce type d’analyse). Pour en savoir plus.

Je dirais comme ça que tu as deux approches conceptuelles pour résoudre ton problème :

  • Modéliser le flux de commande comme une série temporelle, et utiliser des méthodes type analyse en composantes saisonnières, modèle ARMA, etc.
  • Avoir une analyse fonctionnelle, c’est à dire considère que la demande à une date t est fonction de différentes variables en entrée (vente la veille, promotion en cours, spécificité du vendeur, etc) et de construire un modèle qui prédira le mieux avec ces variables les ventes (que ça soit un truc simple comme une regression linéaire, ou des approches plus avancées type machin learning).

Enfin, tu aussi des approches plus "classiques", c’est à dire utiliser des formules toutes faites qui existent en gestion et qui ont été développées pour aider à avoir un stock suffisant (comme la formule de Wilson, citée par A-312). Personnellement, je pencherait pour une l’utilisation d’une formule "classique" de ce genre, avant de sortir l’artillerie lourde en terme de modélisation, surtout si tu n’est pas familier avec tout ça ! :p

+1 -0

En principe, il te faut une donnée de plus pour pouvoir travailler : les dates des commandes (et les volumes des commandes). Comme ça, tu pourras dire : telle personne, jusqu’à aujourd’hui, elle commandait des marchandises quand le stock atteint le seuil X.

@elegance : Exact ! Ce sont les informations que j’ai, sur plus ou moins 2 ans. Et c’est aussi l’intuition que j’avais : compiler ces données là (les dates, les commandes et les réassorts) pour en tirer quelque chose – mais sans savoir trop comment. Je n’ai pas de connaissances particulières en ML, ni en analyse de données, d’où ce thread.

Les graphiques voulaient simplement illustrer que les sorties de stock ne sont pas linéaires, d’où ma difficulté à régler le problème.

Le seuil critique c’est le seuil qui permet de ne pas être en rupture de stock lorsque la commande est lancé au fournisseur, il prend en compte la consommation prévisionnelle de la période et le temps de livraison/commande. Sans évaluer de consommation prévisionnelle, tu ne peux pas calculer un seuil critique adapté à ton cas.

@A-312 : Effectivement, mais c’est un peu le serpent qui se mord la queue, car je ne sais pas trouver cette consommation prévisionnelle. Le temps de réassort est bien sûr un facteur à prendre en compte, mais c’est une constante simple dans mon cas (14 jours pour tout et tout le monde).

c’est-à-dire identifier les auteurs des commandes plutôt que de comparer le nombre d’entrées et de sorties.

Pas sûr de saisir ton idée, pourrais-tu développer ? Merci !

Hormis les méthodes, il existe aussi des représentations / outils qui permettent de mieux évaluer les données. Typiquement un Cube OLAP va te permettre d’isoler certaines variables pour les corréler entre elles

@Yarflam : cool, intéressant merci, je vais regarder de quoi il s’agit.

@Demandred : plein de pistes à creuser dans ton message, il m’a bien éclairé ! :) Je vais regarder tout ça de plus près, et voir ce qu’il est possible de faire.

Ce que je retiens de vos réponses c’est :

  • Il existe des solutions plutôt simples à exploiter (du genre formules connues).
  • Pas la peine de mettre du ML là dedans pour démarrer.
+0 -0

A l’école, on m’a enseigné la formule de Wilson. Tu peux vérifier si elle serait efficace avec ton historique.

etherpin

Elle se fait à partir de la consommation prévisionnelle.

c’est-à-dire identifier les auteurs des commandes plutôt que de comparer le nombre d’entrées et de sorties.

Au lieu d’analyser en disant il y a 4 sorties aujourd’hui, et 20 hier, tu dis : il y a 4 sorties quotidiennes pour le client A et 16 pour le client B hier.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte