Quel algorithme pourrait être utilisé pour prédire l'utilisation des consommables compte tenu des données des achats passés?

10

En pensant à un problème supposé simple mais intéressant, j'aimerais écrire du code pour prévoir les consommables dont j'aurai besoin dans un avenir proche étant donné l'historique complet de mes achats précédents. Je suis sûr que ce type de problème a une définition plus générique et bien étudiée (quelqu'un a suggéré que cela était lié à certains concepts des systèmes ERP et similaires).

Les données dont je dispose sont l'historique complet des achats précédents. Disons que je regarde les fournitures de papier, mes données ressemblent à (date, feuilles):

2007-05-10   500
2007-11-11  1000
2007-12-18  1000
2008-03-25   500
2008-05-28  2000
2008-10-31  1500
2009-03-20  1500
2009-06-30  1000
2009-09-29   500
2009-12-16  1500
2010-05-31   500
2010-06-30   500
2010-09-30  1500
2011-05-31  1000

il n'est pas «échantillonné» à intervalles réguliers, donc je pense qu'il ne peut pas être qualifié de données de série chronologique .

Je n'ai pas de données sur les niveaux de stock réels à chaque fois. Je voudrais utiliser ces données simples et limitées pour prédire la quantité de papier dont j'ai besoin (par exemple) 3,6,12 mois.

Jusqu'à présent, j'ai appris que ce que je cherche s'appelle Extrapolation et pas beaucoup plus :)

Quel algorithme pourrait être utilisé dans une telle situation?

Et quel algorithme, s'il était différent du précédent, pourrait également tirer parti de plus de points de données donnant les niveaux d'approvisionnement actuels (par exemple, si je sais qu'à la date XI il restait Y feuilles de papier)?

N'hésitez pas à modifier la question, le titre et les balises si vous connaissez une meilleure terminologie pour cela.

EDIT: pour ce que ça vaut, je vais essayer de coder cela en python. Je sais qu'il existe de nombreuses bibliothèques qui implémentent plus ou moins n'importe quel algorithme. Dans cette question, j'aimerais explorer les concepts et les techniques qui pourraient être utilisés, la mise en œuvre réelle devant être laissée au lecteur.

Luke404
la source
1
chers statisticiens, je veux juste vous faire savoir que cette question n'a pas été abandonnée. Je reviendrai sur ce problème spécifique dès que je trouverai du temps et de la motivation (lire: le patron me dit de le faire) et enquêterai sur vos précieuses réponses et éventuellement j'en marquerai une comme acceptée (ce qui pour moi signifiera "effectivement mis en œuvre").
Luke404

Réponses:

12

La question concerne le taux de consommation en fonction du temps. Cela nécessite une régression du taux en fonction du temps (et non une régression du total des achats en fonction du temps). L'extrapolation est réalisée en construisant des limites de prédiction pour les achats futurs.

Plusieurs modèles sont possibles. Étant donné la transition vers un bureau sans papier (qui dure depuis environ 25 ans :-), nous pourrions adopter un modèle exponentiel (de diminution). Le résultat est représenté par le diagramme de dispersion de la consommation suivant, sur lequel sont tracées la courbe exponentielle (ajustée via les moindres carrés ordinaires aux logarithmes de la consommation) et ses limites de prédiction à 95%. Les valeurs extrapolées devraient se situer près de la ligne et entre les limites de prédiction avec un niveau de confiance de 95%.

Figure

L'axe vertical montre les pages par jour sur une échelle linéaire. La ligne continue bleu foncé est l'ajustement: elle est vraiment exponentielle mais se rapproche remarquablement d'être linéaire. L'effet de l'ajustement exponentiel apparaît dans les bandes de prédiction, qui sur cette échelle linéaire sont placées asymétriquement autour de l'ajustement; sur une échelle logarithmique, ils seraient symétriques.

Un modèle plus précis tiendrait compte du fait que les informations sur la consommation sont plus incertaines sur des périodes plus courtes (ou lorsque les achats totaux sont plus petits), ce qui pourrait être ajusté à l'aide des moindres carrés pondérés. Compte tenu de la variabilité de ces données et de l'égalité approximative de la taille de tous les achats, cela ne vaut pas l'effort supplémentaire.

Cette approche contient des données d'inventaire intermédiaires , qui peuvent être utilisées pour interpoler les taux de consommation à des moments intermédiaires. Dans un tel cas, étant donné que les quantités intermédiaires de consommation pourraient varier considérablement, l'approche des moindres carrés pondérés serait souhaitable.

Quels poids utiliser? Nous pourrions considérer la consommation de papier, qui s'accumule nécessairement en quantités intégrales de papier, comme un décompte qui varie indépendamment d'un jour à l'autre. Sur de courtes périodes, la variance du dénombrement serait donc proportionnelle à la durée de la période. La variance du dénombrement par jour serait alors inversement proportionnelle à la durée de la période. Par conséquent, les pondérations devraient être directement proportionnelles proportionnelles aux périodes écoulées entre les stocks. Ainsi, par exemple, la consommation de 1000 feuilles entre 2007-05-10 et 2007-11-11 (environ 180 jours) aurait presque cinq fois le poids de la consommation de 1000 feuilles entre 2007-11-11 et 2007-12- 18, une période de seulement 37 jours.

La même pondération peut être prise en compte dans les intervalles de prédiction. Il en résulterait des intervalles relativement larges pour les prévisions de consommation sur une journée par rapport aux prévisions de consommation sur, disons, trois mois.

Veuillez noter que ces suggestions se concentrent sur des modèles simples et des prédictions simples, appropriées à l'application prévue et à la grande variabilité évidente des données. Si les projections impliquaient, par exemple, des dépenses de défense pour un grand pays, nous voudrions tenir compte de beaucoup plus de variables explicatives, tenir compte de la corrélation temporelle et fournir des informations beaucoup plus détaillées dans le modèle.

whuber
la source
si les données avaient été échantillonnées à intervalles réguliers, l'utilisation de dénombrements par opposition aux taux aurait-elle été appropriée?
MannyG
1
@MannyG Oui, mais uniquement parce que les chiffres seraient directement proportionnels aux taux, non pas parce qu'il serait approprié d'utiliser les chiffres eux-mêmes. La nécessité d'utiliser des taux ici est claire lorsque nous considérons ce que signifie réellement prédire une valeur future: vous devez spécifier l'intervalle de temps de la consommation prévue. On prévoit ainsi une quantité de temps pour obtenir une quantité, ce qui implique que cette quantité doit être une quantité par unité de temps: un taux de consommation .
whuber
@whuber Excusez-moi, mais je ne comprends pas clairement quels modèles sont décrits dans votre réponse et dans quels points l'un se termine et commence un autre. J'ai un problème similaire et des parties de votre réponse semblent exactement ce dont j'ai besoin, mais je dois faire plus d'étude sur cette question et je ne peux pas dire en lisant votre réponse si vous parlez de modèles distincts ou d'un certain modèle qui s'améliore progressivement. Y a-t-il un nom officiel pour le modèle avec les poids que vous décrivez? Votre premier modèle (diminution exponentielle) implique-t-il des poids? Merci d'avance.
Agis
@rensokuken Je décris un modèle et une variation qui pondèrent les données. La deuxième moitié de cette réponse suggère comment déterminer les poids. Je ne connais aucun nom officiel au-delà des "moindres carrés pondérés".
whuber
@whuber je vois. Au début, vous décrivez cela , puis lorsque vous ajoutez des poids, vous décrivez cela , non? De plus, avez-vous des ressources à regarder, liées à la solution particulière et pour un débutant en prévision? Merci pour la clarification.
Agis
5

C'est certainement le problème de l' apprentissage automatique (j'ai mis à jour les balises dans votre message). Il s'agit très probablement d' une régression linéaire . En bref, la régression linéaire tente de récupérer la relation entre 1 variable dépendante et 1 ou plusieurs variables indépendantes. La variable dépendante est ici l' utilisation des consommables . Pour les variables indépendantes, je suggère des intervalles de temps entre les achats. Vous pouvez également ajouter des variables plus indépendantes, par exemple, le nombre de personnes qui ont utilisé des consommables à chaque instant, ou toute autre chose qui peut affecter un montant d'achats. Vous pouvez trouver une belle description de la régression linéaire avec l'implémentation en Python ici .

En théorie, il est également possible que non seulement les intervalles de temps entre les achats, mais aussi les moments dans le temps eux-mêmes influencent les montants. Par exemple, pour une raison quelconque, en janvier, les gens voudront peut-être plus de papier qu'en avril, par exemple. Dans ce cas, vous ne pouvez pas utiliser le nombre de mois comme variable indépendante en raison de la nature de la régression linéaire elle-même (le numéro du mois n'est qu'une étiquette, mais sera utilisé comme montant). Vous avez donc 2 façons de surmonter cela.

Tout d'abord, vous pouvez ajouter 12 variables supplémentaires , une pour chaque mois , et définir chaque variable sur 1 si elle représente le mois d'achat et sur 0 si ce n'est pas le cas. Utilisez ensuite la même régression linéaire.

Deuxièmement, vous pouvez utiliser un algorithme plus sophistiqué, tel que M5 ' , qui est un mélange d'arbres de régression linéaire et de décision (vous pouvez trouver une description détaillée de cet algorithme dans l' exploration de données: outils et techniques pratiques d'apprentissage automatique ).

ami
la source
Cela dépend de la quantité de données sur l'utilisateur que vous possédez. Si cela suffit (par exemple,> 100 transactions sur> 1 an), vous pouvez former un modèle pour cet utilisateur spécifique. Sinon, un modèle général sur tous les utilisateurs peut vous donner de meilleurs résultats. Vous pouvez utiliser la validation croisée pour mesurer les performances des deux approches.
ffriend
5

il n'est pas «échantillonné» à intervalles réguliers, donc je pense qu'il ne peut pas être qualifié de données de série chronologique.

Voici une idée sur la façon de prévoir les achats: considérez les données comme une série de demande intermittente . Autrement dit, vous avez une série temporelle échantillonnée à intervalles réguliers, mais les valeurs positives sont évidemment espacées de manière irrégulière. Rob Hyndman a un bon article sur l'utilisation de la méthode de Croston pour prévoir les séries de demande intermittente. Bien que je programme également beaucoup en Python, vous économiserez beaucoup de temps d'exploration en utilisant la méthode de Croston, ainsi que d'autres méthodes de prévision de séries chronologiques, facilement disponibles dans l'excellente prévision du package R de Rob .

Josh Hemann
la source
1
+1 Pour avoir proposé une nouvelle idée. En parcourant l'introduction et les conclusions du document de Shenstone & Hyndman, cependant, la méthode de Croston n'est généralement pas très bonne: le document se concentre sur la tentative de justifier et de comprendre une procédure populaire qui s'avère limitée; le mieux que les auteurs puissent dire est que malgré cela, "les prévisions ... peuvent toujours être utiles". En outre, il semble que ce modèle ne puisse pas prendre en compte les données supplémentaires sur les «niveaux actuels d'approvisionnement», comme le demande le PO.
whuber
3

Je suis sûr que vous essayez de faire une analyse de régression pour ajuster une ligne à vos points de données. Il existe de nombreux outils pour vous aider - MS Excel étant le plus accessible. Si vous souhaitez lancer votre propre solution, mieux vaut réviser vos statistiques ( ici et ici , peut-être). Une fois que vous avez adapté une ligne à vos données, vous pouvez extrapoler dans le futur.

EDIT: Voici une capture d'écran de l'exemple Excel que j'ai mentionné dans les commentaires ci-dessous. Les dates en gras sont des dates aléatoires dans le futur que j'ai tapées moi-même. Les valeurs en gras dans la colonne B sont des valeurs extrapolées calculées par la saveur de régression exponentielle d'Excel. entrez la description de l'image ici

EDIT2: OK, donc pour répondre à la question: "Quelles techniques puis-je utiliser?"

  • régression exponentielle (mentionnée ci-dessus)
  • Méthode de Holt
  • La méthode de l'hiver
  • ARIMA

Veuillez consulter cette page pour une petite introduction sur chacun: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm


la source
Cela m'a amené à me demander: quels sont mes points de données? pas les achats uniques - cela ne prendrait pas en compte le temps qui s'écoule entre eux et donc la consommation totale d'une ressource donnée. Peut-être devrais-je les interpoler pour obtenir une moyenne à intervalles réguliers (par exemple, une quantité par semaine), puis l'utiliser comme entrée de données de séries chronologiques pour extrapoler les données futures?
Considérez la différence de temps comme la différence de vos valeurs «x» sur un graphique. La plupart des types d'analyses de régression prendront en compte les différences variées. Essayez vos exemples de données à l'aide de la fonction CROISSANCE dans Excel, qui utilise une régression exponentielle. Si vous modifiez les dates, vos valeurs projetées changeront en conséquence.
3

Commencé comme un commentaire, s'est allongé trop longtemps ...

il n'est pas "échantillonné" à intervalles réguliers, donc je pense qu'il ne peut pas être qualifié de données de série chronologique

C'est une conclusion erronée - c'est certainement une série chronologique. Une série chronologique peut être échantillonnée de manière irrégulière, elle a simplement tendance à nécessiter une approche différente des approches habituelles lorsqu'elle l'est.

Ce problème semble être lié à des problèmes stochastiques comme les niveaux des barrages (l'eau est généralement utilisée à un rythme assez stable dans le temps, augmentant ou diminuant parfois plus ou moins rapidement, tandis qu'à d'autres moments, elle est assez stable), tandis que les niveaux des barrages ont tendance à n'augmenter que rapidement (essentiellement par sauts), lorsque les précipitations se produisent. Les modes d'utilisation du papier et de réapprovisionnement peuvent être quelque peu similaires (bien que le montant commandé puisse avoir tendance à être beaucoup plus stable et en nombre beaucoup plus arrondi que les quantités de précipitations, et à se produire chaque fois que le niveau baisse).

Il est également lié au capital des compagnies d'assurance (mais en quelque sorte inversé) - mis à part le capital initial, l'argent des primes (coûts d'exploitation nets) et les investissements arrivent assez régulièrement (parfois plus ou moins), tandis que les paiements des polices d'assurance ont tendance à être effectués dans des montants relativement importants. les montants.

Ces deux choses ont été modélisées et peuvent fournir un petit aperçu de ce problème.

Glen_b -Reinstate Monica
la source
-1

vous devriez jeter un œil à WEKA. Il s'agit d'un outil et d'une API Java avec une suite d'algorithmes d'apprentissage automatique. En particulier, vous devriez rechercher des algorithmes de classification.

Bonne chance


la source
Comment un algorithme de classification me donnerait-il une prédiction quantitative?
@ Luke404: Weka a 3 types d'algorithmes (classification, clustering et association d'association), et ils ont décidé de mettre la régression dans la section classification. Mais en général, vous avez raison, la classification et la prévision quantitative sont des choses un peu différentes.
ffriend
-1

J'utiliserais des moindres carrés linéaires pour adapter un modèle à la consommation cumulée (c'est-à-dire le total cumulé des pages par date). Une hypothèse initiale serait d'utiliser un polynôme du premier degré. Cependant, les résidus indiquent que le premier degré ne correspond pas aux données de l'exemple, donc la prochaine étape logique serait de l'augmenter à un second degré (c'est-à-dire quadratique). Cela supprime la courbure des résidus et le coefficient légèrement négatif pour le terme au carré signifie que le taux de consommation diminue au fil du temps, ce qui semble intuitif étant donné que la plupart des gens ont probablement tendance à utiliser moins de papier au fil du temps. Pour ces données, je ne pense pas que vous ayez besoin d'aller au-delà d'un ajustement au deuxième degré, car vous pourriez commencer un surapprentissage et l'extrapolation résultante pourrait ne pas avoir de sens.

Vous pouvez voir les ajustements (y compris l'extrapolation) et les résidus dans les graphiques ci-dessous.

en forme résiduel

Si vous le pouvez, il peut être utile d'effectuer un amorçage pour obtenir une meilleure estimation des erreurs de prédiction.

dnlbrky
la source
Étant donné que les résidus dans la consommation cumulée seraient fortement corrélés, cette méthode ne semble pas statistiquement justifiée. Utiliser un ajustement quadratique uniquement des documents sur ce problème fondamental; il ne peut pas le guérir.
whuber
-2

Je pense que vous pouvez obtenir vos données en utilisant la recherche opérationnelle .

Pourquoi n'essayez-vous pas de trouver des équations qui prennent comme variables la quantité de papier utilisée par période, les utilisateurs du papier, etc.?


la source