Wat is de ideale winkelvoorraad voor een product? Hoe kunnen we het aantal toekomstige verkopen bepalen? Is het mogelijk om het aantal productleveringen te verminderen zonder uit voorraad te raken?
ACA bouwt een intelligent voorraadbeheersysteem voor een klant met ongeveer 30 winkels. Tussen deze winkels verkoopt deze klant enkele duizenden producten. Wie kan bovenstaande vragen beantwoorden voor al deze producten voor elke winkel, op elk moment?
Ik zal je vertellen hoe we in historische gegevens doken, data science combineerden met machine learning en antwoorden kregen op bovenstaande vragen.
Voor elk afzonderlijk product in de catalogus moet een shopmanager het gewenste winkelaanbod bepalen. Een menselijke shopmanager kan echter niet met zoveel variabelen rekening houden als een AI-model. Dit resulteert in meer anticipatie (een grotere voorraadbuffer) en dus hogere opslagkosten. Ons doel is om de shopmanager te helpen bij het bepalen van de juiste hoeveelheid voorraad met een intelligent voorraadbeheersysteem op basis van machine learning. Door te kijken naar de evolutie uit het verleden kunnen we een indicatie geven van hoeveel goederen er de komende tijd waarschijnlijk verkocht zullen worden.
"Als iemand de toekomst wil bepalen, moet hij het verleden bestuderen."
- Confucius
Nu we de benodigde gegevens hebben gevonden, is het tijd om aan een model te gaan werken. Omdat een dagelijkse voorspelling te fijnkorrelig was voor onze klant, besloten we ons te richten op een wekelijkse voorspelling om een paar redenen:
Een wekelijkse voorspelling vormt echter een extra uitdaging. Gemiddeld zijn er 52,18 weken in een jaar. Dat betekent dat seizoenseffecten elk jaar iets later kunnen plaatsvinden. Er zijn ook voordelen: een wekelijkse voorspelling gaf ons de mogelijkheid om minder populaire producten op te nemen, die niet dagelijks worden verkocht.
We hebben een paar technieken overwogen om tijdreeksen te voorspellen. Vanwege het beperkte tijdsbestek van de gegevens kozen we voor een model gebaseerd op structurele tijdreeksen. Om het model te implementeren hebben we gekozen voor de STS-module van TensorFlow Probability. Hieronder ziet u het resultaat van een voorspelling van ons model. De rode lijn vertegenwoordigt het aantal artikelen in de winkel voor een bepaald product. De blauwe lijn is de voorspelling van ons model op weekbasis, verminderd met de dagelijks verkochte artikelen voor dat product. Hoewel we op sommige punten uitverkocht raken, geeft dit een vrij goede schatting van hoeveel voorraad de winkel de komende week nodig heeft.
Het is moeilijk om een exacte waarde te geven aan de kosten van overbevoorrading. Door te kijken naar het totale aantal artikelen dat per week wordt opgeslagen, kwamen we erachter dat ons model de voorraadkosten met bijna 75% zou verlagen. Het is duidelijk dat lege schappen in een winkel niet aantrekkelijk zijn vanuit het oogpunt van de klant. Maar deze informatie geeft onze klant de mogelijkheid om de omvang en de frequentie van de leveringen tot een optimaal punt terug te brengen.
Naast het feit dat het model een goede voorspelling geeft, kunnen we informatie krijgen over hoeveel invloed een kenmerk heeft op de voorspelling van het model. Een structurele tijdreeks wordt weergegeven als de som van eenvoudigere componenten. Dit betekent dat we daadwerkelijk kunnen zien welk effect de temperatuur heeft op de verkoop. Bovendien kunnen we, als we een marketingcampagne voor dit product zouden starten, de causale invloed afleiden. In feite kunnen we schatten hoeveel producten zouden zijn verkocht als we geen promotie hadden. Het is vaak een grote uitdaging om uit te leggen hoe een machine-learningmodel precies zijn doel produceert. Met structurele tijdreeksen kunnen we aangeven welke kenmerken de grootste invloed hebben op de voorspelling.
De grafiek hierboven toont de invloed van een seizoen (13 weken) op productverkopen. Zelfs in deze korte tijdsperiode is er een duidelijke stijging in de verkoop in juli.
Er is geen eenvoudige manier om de toekomst te voorspellen. Maar door terug te kijken in de tijd kunnen we patronen ontdekken die we vooruit kunnen projecteren. We hebben deze techniek gebruikt om een van onze klanten een idee te geven van hoeveel verkoop ze zouden kunnen genereren in de komende week(en). Als we verder gaan, kunnen we ervan uitgaan dat ons model steeds betrouwbaarder wordt naarmate de historische gegevens groeien.
Ik begon deze blogpost met de vraag wie het winkelaanbod van duizenden producten in meerdere winkels zou kunnen bepalen. Met een klein duwtje in de goede richting van een intelligent voorraadbeheersysteem kan iedereen die persoon zijn.