We stellen een nieuwe methode voor om categorische kenmerken te coderen die specifiek is afgestemd op voorspellingstoepassingen. In essentie codeert deze benadering categorische kenmerken door de trend van de grootheden geassocieerd met elke categorie te modelleren. In onze experimenten laat deze aanpak aanzienlijke prestatievoordelen zien - zowel in termen van voorspellingsnauwkeurigheid als bias - omdat het boomgebaseerde ensemblemodellen in staat stelt trends beter te modelleren en te extrapoleren.

Lees ons artikel over

class="img-responsive

.

Inleiding

De motivatie voor dit werk kwam voort uit talrijke voorspellingsprojecten voor klanten op Artefact waarbij onze boostingmodellen een hoge bias vertoonden op het moment van voorspellen. Door middel van een diagnostische fase ontdekten we dat een van de belangrijkste bronnen van vertekening in modellen voor ensembleleren voortkwam uit hun uitdaging om trends en fluctuerende niveaus nauwkeurig te modelleren.

In het volgende zullen we laten zien waarom en hoe we een nieuwe benadering hebben gebruikt voor het coderen van categorische kenmerken. Op basis van onze experimenten met een retailvoorspellingsproject van een klant en verschillende openbare datasets bewijzen we dat deze techniek effectief vertekeningen kan verminderen en de nauwkeurigheid kan verbeteren.

Boosting en trends, waarom is het complex?

Boosting-algoritmen hebben het moeilijk met extrapoleren

Boosting algoritmen hebben het moeilijk met het modelleren en extrapoleren van trends omdat ze geen nieuwe waarden kunnen voorspellen die niet voorkomen in de trainingsset / afwezig zijn in de bladeren. "Lineaire boommodellenproberen dit probleem te ondervangen, maar onze tests leverden geen overtuigende resultaten op met deze methode.

Klassieke coderingen gaan in de richting van statische voorspellingen

De meest gebruikte coderingsmethoden voor boosting bevorderen statische relaties tussen onafhankelijke en afhankelijke variabelen, wat op zijn beurt bijdraagt aan een grotere vertekening in de aanwezigheid van trends. Het onderstaande diagram illustreert dit fenomeen:

Klassieke coderingen gaan in de richting van statische voorspellingen

Vereenvoudigde visuele weergave van de statische aard van de codering van categorische kenmerken in boosting-algoritmen

We erkennen dat de bovenstaande weergave een oversimplificatie is, aangezien beslisbomen complexer zijn en niet-lineaire relaties kunnen identificeren op basis van meerdere factoren. De voorwaarde "kleur is zwart" zou inderdaad geassocieerd kunnen worden met "de maand juni". In dit geval zou de kleur zwart niet altijd dezelfde impact hebben. Maar laten we eens kijken naar het grotere plaatje:

  • Het toewijzen van één impact voor de kleur zwart in juni is nog steeds niet ideaal, omdat de impact in juni 2021 kan verschillen van de impact in juni 2022. Zelfs als we het jaartal zouden opnemen, zou ten eerste de beslissingsgrens te complex worden om op te bouwen en te identificeren, maar ook, wat zou er gebeuren als de training data eindigt in 2022 en er voorspellingen moeten worden gedaan voor 2023?

  • Feature engineering is bedoeld om het model te helpen bij het gemakkelijker identificeren van relaties. Als we het model kunnen helpen met het associëren van de impact van de kleur zwart op een willekeurig moment zonder dat er complexe relaties hoeven te worden geïdentificeerd, zou dat zeer voordelig zijn voor het model. Vandaar ...

Onze nieuwe benadering: Dynamische codering van categorische kenmerken

Basis van dynamische codering (v1 zonder itemniveau)

In één zin kan onze methode voor het coderen van categorische kenmerken worden beschreven als: we modelleren de trendcomponent van elke categorie en gebruiken deze trendwaarden om dat categorische kenmerk te coderen.

Het diagram hieronder illustreert het verschil tussen een statische gemiddelde codering en een trendgebaseerde codering voor twee kleurcategorieën: zwart en goud.

class="img-responsive

Illustratie van het dynamische coderingsprincipe, dat trendmodellering voor elke categorie omvat

In onze experimenten hebben we ervoor gekozen om Prophet te gebruiken voor het extraheren van de trendcomponent. Natuurlijk is het ook mogelijk om andere voorspellingsmodellen voor tijdreeksen te gebruiken.

Merk op dat de statische gemiddelde codering impliceert dat de verkoop van zwarte artikelen op elk moment gemiddeld 100 eenheden per maand bedraagt. De dynamische codering daarentegen maakt het mogelijk om de stijgende trend in de verkoop van zwarte artikelen te verklaren en kan deze extrapoleren naar de toekomst. Een soortgelijke verklaring kan worden gemaakt met betrekking tot gouden items. Onze aanpak zal dus vooral nuttig zijn in datasets waar de te voorspellen doelvariabele steile trends volgt over de verschillende beschikbare categorieën.

Onze primaire focus is om het model in staat te stellen zich gemakkelijker aan te passen aan de veranderende relaties tussen onafhankelijke variabelen en de afhankelijke variabele die voorspeld moet worden. Daarom kan deze dynamische coderingsmethode ook worden toegepast op numerieke kenmerken. Neem het voorbeeld van de prijs. Hoewel de prijs numeriek is en het model er direct regels op kan baseren, kan de voorkeur van mensen voor goedkope of dure artikelen nog steeds evolueren in de tijd en een specifieke verkooptrend volgen. In de context van een economische crisis, bijvoorbeeld, kunnen betaalbare producten een stijgende verkooptrend volgen, terwijl dure producten een dalende trend kunnen volgen. Als we 'betaalbaar' als een categorie beschouwen en 'duur' als een andere, kunnen we een dynamische codering voor het prijskenmerk voorstellen, net zoals we voor kleuren hebben gedaan.

Het is belangrijk om op te merken dat voor numerieke kenmerken zowel de basisvariabelen als de dynamisch gecodeerde variabelen in het model kunnen worden gebruikt, omdat ze verschillende soorten informatie geven.

Meer belang hechten aan dynamische functies (v2 met itemniveau)

Hoewel deze nieuwe coderingsmethode een verbetering is, is het belang van categorische kenmerken vaak niet groot genoeg om voorspellingen significant te beïnvloeden als we kijken naar het belang van kenmerken. Om de dynamische kenmerken meer belang te geven en zo een betere modellering en extrapolatie van trends te bevorderen, passen we de coderingswaarden aan elke tijdreeks / elk item afzonderlijk aan.

class="img-responsive

Formule die de twee componenten van dynamisch coderen weergeeft: categorieniveau en itemniveau

Om terug te komen op ons kleurenvoorbeeld: gegeven twee verschillende zwarte items, kan de dynamische codering van de categorie "zwart" voor elk item anders zijn op basis van de individuele verkopen in het verleden.

Tabel ter illustratie van de berekening van dynamische codering aan de hand van een eenvoudig voorbeeld

Tabel ter illustratie van de berekening van dynamische codering aan de hand van een eenvoudig voorbeeld

Experimenten en resultaten

Dataset klant

We hebben onze aanpak gebruikt om de verkoop te voorspellen voor een van onze klanten in de detailhandel. We hebben onze methode grondig gevalideerd over een uitgebreide reeks toepassingsgebieden om de effectiviteit ervan te garanderen. Hier zijn enkele data punten met betrekking tot de experimentele context:

  • Er werden experimenten uitgevoerd met 9 verschillende productscopes, met één boosting (LightGBM) model voor elke scope.
  • Voor elk bereik werd een k-voudige kruisvalidatie met een uitdijend venster uitgevoerd (k=5).

  • Voorspellingshorizon: Dag+1 tot Dag+180.

  • De prestaties werden beoordeeld aan de hand van twee maatstaven:

class="img-responsive

Over het geheel genomen bleek de methode zeer efficiënt, wat resulteerde in een gemiddelde absolute afname in vertekening van 9,82% en een gemiddelde absolute toename in voorspellingsnauwkeurigheid van 6,29% voor de 9 productscopes en 5 kruisvalidatievouwen.

De volgende sectie valideert de relevantie van onze methode door deze te testen op een openbare dataset.

Openbare winkelverkoop dataset

In deze vereenvoudigde casestudie gebruiken we de Store Sales - Time Series Forecasting Kaggle dataset. Deze dataset vertoont een steile trend bij het onderzoeken van de gemiddelde verkooptijdreeksen, waardoor onze methode bijzonder relevant is. Bovendien is de gekozen voorspellingshorizon drie maanden, wat ver genoeg is om te profiteren van de extra extrapolatiemogelijkheden van de dynamische codering. Voor demonstratiedoeleinden beperken we de dataset tot 31 maart 2016, vlak voordat er een aardbeving plaatsvond, waardoor de verkoopcurve afvlakte.

Voorafgaand aan de codering bestaat onze initiële dataset voor ongeveer 75% uit numerieke kenmerken, waaronder vertragingen, voortschrijdende gemiddelden, kalenderkenmerken en vakantiegebeurtenissen. De resterende 25% bestaat uit categorische kenmerken zoals productfamilie, winkelnummer, stad en andere.

Er worden twee verschillende modellen getraind: het ene gebruikt de categoriale kenmerken die dynamisch zijn gecodeerd met onze aangepaste methode, terwijl het andere LightGBM's eigen verwerking van categoriale kenmerken gebruikt.

Bij het vergelijken van hun prestaties zien we een aanzienlijke verbetering in de dynamische coderingsaanpak. De volgende tabel geeft een samenvatting van de resultaten:

Vergelijking van RMSE, FA en %Bias tussen LightGBM-coderingsmethode en dynamische codering

Vergelijking van RMSE, FA en %Bias tussen LightGBM-coderingsmethode en dynamische codering

class="img-responsive

Gemiddelde wekelijkse verkoop + 3 maanden voorspellingen (dynamische codering vs LightGBM coderingsmethode)

Zoals de bovenstaande grafiek laat zien, vangt het model met dynamische coderingen effectief de trend en extrapoleert deze, terwijl het alternatieve model moeite heeft om dit te bereiken.

Gebruik en limieten

Onze methode blijkt vooral waardevol te zijn in scenario's waar de tijdreeks uitgesproken trends vertoont en de voorspellingshorizon ver genoeg is om te profiteren van extrapolatie van trends. Bovendien neemt het effect op voorspellingen toe naarmate we meer categorische kenmerken met een significante voorspellende kracht dynamisch coderen en in het model opnemen. Het is echter belangrijk om te erkennen dat andere coderingsmethoden hun eigen voordelen hebben en in verschillende contexten voordeliger kunnen zijn. Bovendien bestaat de mogelijkheid om beide coderingstypes te combineren voor mogelijk betere resultaten.

Conclusie

  • Conventionele coderingstechnieken voor categorische kenmerken zijn niet ideaal voor voorspellingen, vooral wanneer tijdreeksen steile trends vertonen en de voorspellingshorizon ver weg is.
  • Onze methode is een variatie op het stapelen van modellen, omdat we een Prophet-model gebruiken - dat superieure mogelijkheden heeft voor het modelleren en extrapoleren van trends - om de codering van de categorische kenmerken te maken.

  • Onze experimenten toonden de voordelen aan van het verminderen van vertekeningen en het verbeteren van de nauwkeurigheid van voorspellingen.

We zijn van plan om in de komende maanden een paper te publiceren met alle details over onze aanpak en implementatie. Blijf kijken voor verdere updates!

class="img-responsive

Medium Blog door Artefact.

Dit artikel is oorspronkelijk gepubliceerd op Medium.com.
Volg ons op onze Medium Blog !