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

Lees ons artikel over

.

Inleiding

De motivatie voor dit werk kwam voort uit talrijke voorspellingsprojecten voor klanten bij Artefact waarbij onze boostingmodellen een hoge bias vertoonden op het moment van voorspellen. In een diagnostische fase stelden we vast 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 het volgende aantonen waarom en hoe gebruikten we een nieuwe benadering voor het coderen van categorische kenmerken. Op basis van onze experimenten met een retailvoorspellingsproject van een klant en verschillende openbare datasets, bewijzen wij dat deze techniek de vertekening effectief kan verminderen en de nauwkeurigheid kan verbeteren.

Boosting en trends, waarom is het complex?

Boosting-algoritmen hebben het moeilijk om te extrapoleren

Boosting-algoritmen hebben het moeilijk om trends te modelleren en te extrapoleren, omdat ze geen nieuwe waarden kunnen voorspellen die niet in de trainingsset voorkomen/afwezig zijn in de bladeren. “Lineaire boom”Onze tests leverden echter 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:

Classical encodings push towards static predictions

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

We erkennen dat de bovenstaande voorstelling een oversimplificatie is, aangezien beslisbomen complexer zijn en niet-lineaire relaties kunnen identificeren op basis van meerdere factoren. De voorwaarde “de 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 naar het grotere geheel kijken:

  • 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 om de impact van de kleur zwart op elk moment in de tijd te associëren zonder dat er complexe relaties geïdentificeerd hoeven te worden, 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 onderstaande diagram illustreert het verschil tussen een statische gemiddelde codering en een trendgebaseerde codering voor twee kleurcategorieën: zwart en goud.

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

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/maand bedraagt. De dynamische codering daarentegen maakt het mogelijk om de stijgende trend in de verkoop van zwarte artikelen te verklaren en is in staat om deze in de toekomst te extrapoleren. Een soortgelijke verklaring kan worden gemaakt met betrekking tot gouden voorwerpen. Onze aanpak zal dus vooral nuttig zijn in datasets waarbij de te voorspellen doelvariabele steile trends volgt in 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 kunnen betaalbare producten bijvoorbeeld een stijgende verkooptrend volgen, terwijl dure producten een dalende trend kunnen volgen. Als we ‘betaalbaar’ als één categorie beschouwen en ‘duur’ als een andere, zouden we een dynamische codering voor het prijskenmerk kunnen 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 gebruikt kunnen worden, aangezien ze verschillende soorten informatie zullen verschaffen.

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 wanneer we de belang van kenmerken onderzoeken. 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.

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 “zwarte” categorie voor elk item anders zijn op basis van de individuele verkoop in het verleden.

Table illustrating the calculation of dynamic encoding through a simple example

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

Experimenten en resultaten

Klant dataset

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:

Over het algemeen bleek de methode zeer efficiënt te zijn, wat resulteert in een gemiddelde absolute afname in vertekening van 9.82% en een gemiddelde absolute toename in voorspellingsnauwkeurigheid van 6.29% over de 9 productbereiken 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 casestudy gebruiken we de Winkelverkoop - Tijdreeksvoorspelling 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 uit ongeveer 75% numerieke kenmerken, waaronder vertragingen, voortschrijdende gemiddelden, kalenderkenmerken en vakantiegebeurtenissen. De resterende 25% bestaan uit categorische kenmerken zoals productfamilie, winkelnummer, stad en andere.

Er worden twee verschillende modellen getraind: het ene gebruikt de categoriale kenmerken die dynamisch gecodeerd werden 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:

Comparison of RMSE, FA, and %Bias between LightGBM encoding method and dynamic encoding

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

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

Zoals weergegeven in de bovenstaande grafiek, bevat het model met dynamische coderingen vangt 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 en de voorspellingshorizon ver genoeg weg is om te profiteren van extrapolatie van trends. Bovendien coderen en integreren we dynamisch meer categorische kenmerken met significant voorspellend stroom in het model, het effect van onze aanpak op voorspellingen neemt toe. 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 over superieure mogelijkheden beschikt om trends te modelleren en te extrapoleren - om de codering van de categorische kenmerken te construeren.

  • 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 document te publiceren met alle details over onze aanpak en implementatie. Blijf op de hoogte voor verdere updates!

Medium Blog bij Artefact.

Dit artikel werd oorspronkelijk gepubliceerd op Medium.com.
Volg ons op ons medium Blog !