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.
Réponses:
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%.
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.
la source
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 ).
la source
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 .
la source
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.
EDIT2: OK, donc pour répondre à la question: "Quelles techniques puis-je utiliser?"
Veuillez consulter cette page pour une petite introduction sur chacun: http://www.decisioncraft.com/dmdirect/forecastingtechnique.htm
la source
Commencé comme un commentaire, s'est allongé trop longtemps ...
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.
la source
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
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.
Si vous le pouvez, il peut être utile d'effectuer un amorçage pour obtenir une meilleure estimation des erreurs de prédiction.
la source
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