Wij stellen een nieuwe methode voor om categorische kenmerken te coderen, die specifiek is afgestemd op voorspellingsdoeleinden. In essentie coderen we bij deze aanpak categorische kenmerken door de trend te modelleren van de grootheden die bij elke categorie horen. Uit onze experimenten blijkt dat deze aanpak aanzienlijke prestatievoordelen oplevert – zowel wat betreft voorspellingsnauwkeurigheid als wat betreft vertekening – aangezien boomgebaseerde ensemblemodellen hierdoor trends beter kunnen modelleren en extrapoleren.
Inleiding
De aanleiding voor dit onderzoek kwam voort uit talrijke prognoseprojecten voor klanten bij Artefact onze boosting-modellen op het moment van de voorspelling een sterke vertekening vertoonden. Tijdens een diagnostische fase hebben we vastgesteld dat een van de belangrijkste oorzaken van vertekening in ensemble-leermodellen voortkwam uit de moeilijkheid om trends en schommelingen nauwkeurig te modelleren.
Hieronder zullen we uitleggenwaaromenhoewe een nieuwe methode hebben toegepast voor het coderen van categorische kenmerken. Op basis van onze experimenten met een prognoseproject voor een retailklant en diverse openbare datasets tonen we aan dat deze techniek vooroordelen effectief kan verminderen en de nauwkeurigheid kan verbeteren.
Boosting en trends: waarom is het zo ingewikkeld?
Boosting-algoritmen hebben moeite met extrapoleren
Boosting-algoritmen hebben moeite met het modelleren en extrapoleren van trends, omdat ze geen nieuwe waarden kunnen voorspellen die niet in de trainingsset voorkomen of in de bladeren ontbreken.„Linear Tree“-modellen proberen dit probleem te verhelpen, maar onze tests leverden met deze methode geen eenduidige resultaten op.
Klassieke coderingen neigen naar statische voorspellingen
De meest gangbare coderingsmethoden die bij boosting worden gebruikt, bevorderen statische relaties tussen onafhankelijke en afhankelijke variabelen, wat op zijn beurt leidt tot een grotere vertekening wanneer er trends aanwezig zijn. Het onderstaande diagram illustreert dit fenomeen:

Vereenvoudigde visuele weergave die de statische aard van de codering van categorische kenmerken benadrukt, zoals die wordt toegepast in boosting-algoritmen
We erkennen dat bovenstaande voorstelling een te grote vereenvoudiging is, aangezien beslissingsbomen complexer zijn en in staat zijn om op basis van meerdere factoren niet-lineaire verbanden te leggen. De voorwaarde „de kleur is zwart“ zou immers gekoppeld kunnen zijn aan „de maand is juni“. In dat geval zou de kleur zwart niet altijd dezelfde impact hebben. Maar laten we eens naar het grotere geheel kijken:
Onze vernieuwende aanpak: dynamische codering van categorische kenmerken
Basis van dynamische codering (v1 zonder itemniveau)
In één zin zou onze methode voor het coderen van categorische kenmerken als volgt kunnen worden omschreven:we modelleren de trendcomponent van elke categorie en gebruiken deze trendwaarden om dat categorische kenmerk te coderen.
Het onderstaande diagram laat het verschil zien tussen een statische gemiddelde-codering en een op trends gebaseerde codering voor twee kleurcategorieën: zwart en goud.

Illustratie die het principe van dynamische codering weergeeft, waarbij voor elke categorie een trendmodel wordt toegepast
In onze experimenten hebben we ervoor gekozen om Prophet te gebruiken voor het extraheren van de trendcomponent. Uiteraard kunnen ook andere modellen voor tijdreeksvoorspelling in overweging worden genomen.
Merk op dat de statische codering inhoudt dat de verkoop van zwarte artikelen op elk moment gemiddeld 100 stuks per maand bedraagt. De dynamische codering houdt daarentegen rekening met de stijgende trend bij zwarte artikelen en kan deze trend naar de toekomst extrapoleren. Hetzelfde geldt voor gouden artikelen. Onze aanpak zal dus vooral nuttig zijn bij datasets waarin de te voorspellen doelvariabele sterke trends vertoont in de verschillende beschikbare categorieën.
Onze primaire focus ligt op het vergemakkelijken van de aanpassing van het model aan de veranderende relaties tussen onafhankelijke variabelen en de te voorspellen afhankelijke variabele. Daarom zou deze dynamische coderingsmethode ook kunnen worden toegepast op numerieke kenmerken. Neem bijvoorbeeld de prijs. Hoewel de prijs numeriek is en het model daar direct regels op kan baseren, kunnen de voorkeuren van mensen voor goedkope of dure artikelen in de loop van de tijd nog steeds veranderen 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 vertonen. Door 'betaalbaar' als de ene categorie en 'duur' als de andere te beschouwen, zouden we een dynamische codering voor de prijskenmerk kunnen voorstellen, net zoals we dat 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, aangezien ze verschillende soorten informatie opleveren.
Meer nadruk op dynamische functies (v2 met itemniveau)
Hoewel deze nieuwe coderingsmethode een verbetering is, is het belang van categorische kenmerken vaak niet groot genoeg om een significante invloed te hebben op de voorspellingen wanneer we de belangrijkheid van kenmerken onderzoeken. Om de dynamische kenmerken meer gewicht te geven en zo een betere modellering en extrapolatie van trends te bevorderen, passen we de coderingswaarden afzonderlijk aan voor elke tijdreeks of elk item.

Formule die de twee componenten van dynamische codering weergeeft: categorieniveau en itemniveau
Om terug te komen op ons kleurvoorbeeld: als we twee verschillende zwarte artikelen hebben, maakt dit het mogelijk om de categorie „zwart“ voor elk artikel dynamisch te coderen, waarbij de codering verschilt op basis van de individuele verkoopcijfers uit het verleden.

Tabel die de berekening van dynamische codering aan de hand van een eenvoudig voorbeeld illustreert
Experimenten en resultaten
Klantendatabase
We hebben onze aanpak gebruikt om de omzet te voorspellen voor een van onze klanten in de detailhandel. We hebben onze methode grondig getoetst in een breed scala aan scenario’s om de effectiviteit ervan te waarborgen. Hier volgen enkele data over de context van het experiment:

Over het geheel genomen bleek de methode zeer efficiënt te zijn:deze leidde tot een gemiddelde absolute afname van de afwijking met 9,82% en een gemiddelde absolute toename van de voorspellingsnauwkeurigheid met 6,29%voor de 9 productdomeinen en de 5 kruisvalidatiegroepen.
In het volgende hoofdstuk wordt de relevantie van onze methode aangetoond door deze te testen op een openbare dataset.
Databestand met verkoopcijfers van winkels
In deze vereenvoudigde casestudy maken we gebruik van de Kaggle-dataset‘Store Sales — Time Series Forecasting’. Deze dataset vertoont een steile trend wanneer we de tijdreeks van de gemiddelde omzet bekijken, 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. Ter illustratie beperken we de dataset tot 31 maart 2016, vlak voordat er een aardbeving plaatsvond, waardoor de verkoopcurve afvlakte.
Vóór de codering bestaat onze oorspronkelijke dataset voor ongeveer 75% uit numerieke kenmerken, waaronder vertragingen, voortschrijdende gemiddelden, kalenderkenmerken en feestdagen. De overige 25% bestaat uit categorische kenmerken, zoals productfamilie, winkelnummer, stad en andere.
Er worden twee verschillende modellen getraind: het ene maakt gebruik van de categorische kenmerken die dynamisch zijn gecodeerd met behulp van onze eigen methode, terwijl het andere gebruikmaakt van de standaardverwerking van categorische kenmerken door LightGBM.
Bij een vergelijking van hun prestaties zien we een aanzienlijke verbetering bij de dynamische coderingsmethode. De volgende tabel geeft een overzicht van de resultaten:

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

Gemiddelde wekelijkse omzet + prognoses voor de komende 3 maanden (dynamische codering versus LightGBM-codering)
Zoals uit bovenstaande grafiek blijkt,weet het model met dynamische coderingende trend goed weer te geven en te extrapoleren, terwijl het alternatieve model hier moeite mee heeft.
Gebruik en beperkingen
Onze methode blijkt vooral waardevol te zijn in scenario’s waarin de tijdreeksuitgesproken trendsvertoont en devoorspellingshorizon ver genoeg in de toekomst ligt om te kunnen profiteren van trend-extrapolatie. Bovendienneemt het effect van onze aanpak op de voorspellingen toe naarmate we dynamischmeer categorische kenmerkenmet eenaanzienlijke voorspellende waardein het model coderen en opnemen. Het is echter belangrijk te erkennen dat andere coderingsmethoden hun eigen voordelen hebben en in andere contexten wellicht voordeliger zijn. Bovendien bestaat de mogelijkheid om beide coderingstypen te combineren voor mogelijk betere resultaten.
Conclusie
We zijn van plan om in de komende maanden een artikel te publiceren met alle details over onze aanpak en de uitvoering ervan. Houd ons in de gaten voor meer nieuws!

BLOG







