NIEUWS / AI TECHNOLOGIE

25 november 2020
Bij Artefact zijn we zo Frans dat we besloten hebben Machine Learning toe te passen op croissants. In dit eerste van twee artikelen wordt uitgelegd hoe we hebben besloten Catboost te gebruiken om de verkoop van “viennoiseries” te voorspellen. De belangrijkste kenmerken voor de verkoop waren de laatste wekelijkse verkoop, of het product in promotie is of niet en de prijs. We zullen u een aantal leuke feature engineering presenteren, waaronder kannibalisatie en waarom u soms uw doelvariabele moet bijwerken.

Wat is het?

Bij Artefact zijn we zo Frans dat we besloten hebben Machine Learning toe te passen op croissants. In dit eerste van twee artikelen wordt uitgelegd hoe we hebben besloten Catboost te gebruiken om de verkoop van “viennoiseries” te voorspellen. De belangrijkste kenmerken voor de verkoop waren de laatste wekelijkse verkoop, of het product in promotie is of niet en de prijs.

We zullen u een aantal leuke functies presenteren, waaronder kannibalisatie en waarom u soms uw doelvariabele moet bijwerken. We hebben de voorspellingsnauwkeurigheid en de biais als evaluatieparameters gekozen. In ons tweede artikel leggen we uit hoe we dit model in productie hebben genomen en wat de best practices van ML Ops zijn.

Voor wie?

  • Data wetenschapper, ML-ingenieur of Data liefhebbers

Context

Modelontwikkeling

Nu we een goed gedefinieerd probleem hebben en enkele doelen om te bereiken, kunnen we eindelijk beginnen met het schrijven van leuke pythoncode in onze notebooks - laat de pret beginnen!

Data verzoek

Zoals bij elk data wetenschapsproject begint alles met data. Uit ervaring raden we sterk aan om de data aanvraag zo snel mogelijk te doen. Wees niet verlegen om veel data aan te vragen en zorg ervoor dat u voor elke data bron een referent identificeert, iemand met wie u gemakkelijk contact kunt opnemen om uw vragen te stellen over de data verzameling of hoe de data is opgebouwd.

Dankzij de verschillende vergaderingen konden we een lijst opstellen van de data die we konden gebruiken:

  • Transactionele data inclusief prijs van producten.
  • Promoties: een lijst met alle toekomstige promoties en de bijbehorende prijzen.
  • Productinformatie: verschillende kenmerken van de producten.

Verkennende Data analyse (EDA) en detectie van uitschieters

Image for post

Van verkoopvoorspelling naar optimale verkoopvoorspelling

Een uitdaging bracht ons ertoe om onze doelvariabele bij te werken. Soms verwachtte de afdeling door een onverwachte invloed of een slechte prognose een tekort aan producten voor het einde van de dag. Er kunnen zich dan twee fenomenen voordoen: de klant die zijn product niet kan vinden, koopt niets, of koopt een soortgelijk goed. Op basis van historische data leidden we enkele distributiewetten (basisstatistieken) af die ons hielpen om deze invloed te modelleren en onze doelvariabele aan te passen om niet de historische verkoop te voorspellen, maar de optimale verkoop voor een bepaald product.

Deze update van de doelvariabele is lastig omdat het echt moeilijk is om te weten of de update zinvol was. Is de kwaliteit van de data echt verbeterd of juist verslechterd? Een manier om onze impact te kwantificeren was om verkopen zonder uitverkochte voorraad te nemen en valse tekorten te creëren, bijvoorbeeld door alle verkopen na 17.00 of 18.00 uur te verwijderen en vervolgens te proberen de verkopen te reconstrueren. Deze methode helpt ons om terug te keren naar een klassiek probleem onder toezicht dat we objectief kunnen beoordelen.

Hierdoor konden we de optimale verkoop voorspellen en voorkomen dat ons algoritme tekortpatronen leerde.

Onze modellen

Nadat we onze data goed hebben schoongemaakt, kunnen we eindelijk een paar modellen testen en uitproberen.

Image for post

Eén model vs. veel modellen

Samengevat hebben we één algoritme gebruikt: Catboost, om al onze 10.000 tijdreeksen te voorspellen, voor elk product en elke winkel. Maar wat als een product een heel specifiek verkooppatroon heeft, of een specifieke winkel? Zou het algoritme dit patroon herkennen en leren?

Deze vragen leiden ons tot de vraag of we onze producten en winkels moeten clusteren en één algoritme per cluster moeten trainen. Zelfs als het gebruik van beslisboomalgoritmen deze uitdaging zou moeten aangaan, hebben we in enkele specifieke gevallen beperkingen geconstateerd.

Boosting-algoritmen zijn iteratieve algoritmen, gebaseerd op zwakke leerlingen die zich richten op hun grootste fouten. Het is natuurlijk een beetje overgesimplificeerd, maar het helpt me om op een van hun beperkingen te wijzen. Als u uw doelvariabele niet hebt genormaliseerd, zal uw algoritme zich “alleen” richten op producten met grote fouten, die waarschijnlijk de producten met de grootste verkoop zullen zijn. Als gevolg daarvan kan het algoritme zich meer richten op producten of winkels met een groter verkoopvolume.

We hebben niet de perfecte manier gevonden om dit probleem aan te pakken, maar we hebben enkele verbeteringen geconstateerd door onze producten/winkels te clusteren op basis van familie of verkoopfrequentie.

Hoe evalueert u ons model?

  1.  Kruisvalidatie

2. De keuze van de metriek:

Image for post

Laatste woorden, wat advies voor alle data projecten

Belangrijkste opmerkingen

Geïnteresseerd in digitaal en data marketing?

Meld u aan voor Data Digest, de nieuwsbrief van Artefact, en ontvang elke maand bruikbaar advies, inzichten en meningen in uw inbox.

Schrijf me in!