Regularisatie en uitbreiding in prognosemodellen

Veel mensen die Tableau gebruiken, gebruiken mogelijk niet prognosemodellering, laat staan dat ze zoeken naar manieren om een prognosemodel passend te maken en de voorspellingskwaliteit ervan te verbeteren. Dit artikel is bedoeld voor gevorderde gebruikers die geïnteresseerd zijn in datawetenschap.

Naast de standaardargumenten, zoals de doelexpressie (de te voorspellen meetwaarde) en de predictorexpressie (de meetwaarde en/of dimensies die worden gebruikt om de voorspelling te doen), kunt u nog twee argumenten toevoegen om uw voorspellingen nauwkeuriger te maken: lambda, een regularisatieparameter, en uitbreiding. Dit houdt in dat de nieuwe argumenten aan de syntaxis van uw berekening worden toegevoegd.

Welke modellen werken met regularisatie en uitbreiding?

Ter informatie: de functies voor prognosemodellering in Tableau ondersteunen drie modellen, namelijk lineaire regressie (ook ordinary-least-squares-regressie of OLS), geregulariseerde lineaire regressie (of ridge-regressie) en Gaussische procesregressie. Als u lineaire of ridge-regressie gebruikt, kunt u met uitbreiding het vermogen van uw modellen vergroten om niet-lineaire patronen op te pikken. Als u ridge-regressie gebruikt, is de regularisatieparameter een scalair die u kunt gebruiken om het regularisatie-effect op uw model aan te passen.

Regularisatie en uitbreiding zijn niet van toepassing op Gaussische procesregressie.

Voordat we verder ingaan op regularisatie en uitbreiding, bekijken we deze twee modellen:

Lineaire regressie is het meest geschikt wanneer er een of meer predictors zijn met een lineaire relatie tussen de voorspelling en het voorspellingsdoel, ze niet worden beïnvloed door dezelfde onderliggende omstandigheden en ze niet twee instanties van dezelfde data vertegenwoordigen (bijvoorbeeld verkopen uitgedrukt in zowel dollars als euro's).

Geregulariseerde lineaire regressie wordt gebruikt om de stabiliteit te verbeteren, de impact van collineariteit te verminderen en de rekenefficiëntie en generalisatie te verbeteren. In Tableau wordt L2-regularisatie gebruikt. Zie deze les over Ridge-regressie voor meer informatie over L2-regularisatie.

Wat is regularisatie?

Ridge-regressie is een specifiek type geregulariseerde lineaire regressie. Regularisatie legt een straf op aan de grootte van de coëfficiënten van het model. De sterkte van de regularisatie wordt gecontroleerd door lambda, een scalair die wordt gebruikt om de algehele impact van regularisatie nauwkeurig af te stemmen. Hoe hoger de waarde, hoe zwaarder de straf (dus hoe groter de regularisatie).

Ridge-regressie pakt enkele problemen van lineaire regressie aan:

  • Het verwijdert pathologieën die ontstaan door multicollineariteit tussen predictors.

  • Als het kleinste-kwadratenprobleem slecht geconditioneerd is, bijvoorbeeld als het aantal datapunten kleiner is dan het aantal kenmerken, dan zal lambda een unieke oplossing selecteren.

  • Het biedt een manier om de generalisatie van het lineaire model te verbeteren.

Standaard staat ridge-regressie in Tableau ingesteld op lambda=0,5, omdat deze waarde in veel gevallen goed werkt. Om de lambdawaarde te wijzigen, bewerkt u eenvoudigweg de tabelberekening (zie voorbeelden hieronder).

Wat is uitbreiding?

Uitbreiding in MODEL_QUANTILE en MODEL_PERCENTILE is een eenvoudig voorbeeld van data-uitbreiding (in het Engels): predictors worden uitgebreid naar polynomen van hogere orde. In Tableau zijn een aantal typen polynomiale uitbreidingen ingebouwd in de functies voor prognosemodellering.

  • Bij geordende dimensies zorgen Legendre-polynomen tot orde 3 ervoor dat het lineaire model kwadratische en kubieke relaties tussen de uitgebreide predictor en de respons kan oppikken.

  • Bij meetwaarden zorgen Hermite-polynomen van de 2e graad ervoor dat het lineaire model kwadratische relaties kan oppikken tussen de uitgebreide predictor en de respons.

Bij lineaire regressie worden alleen geordende dimensies standaard uitgebreid met uitbreiding=aan; in ridge-regressie waarbij model=rl, worden alleen de meetwaarden standaard uitgebreid. Om de instelling te negeren en de uitbreiding voor elke predictor in uw berekening uit te schakelen, gebruikt u uitbreiding=uit. Er worden dan geen polynomen van hogere orde toegevoegd.

Het uitschakelen van uitbreidingen is voordelig wanneer de dataset erg klein is, omdat de uitbreidingen voor een 'overfitting' van de ruis in de oorspronkelijke data kunnen zorgen. Bovendien is de resulterende relatie dan eenvoudiger en intuïtiever.

Opmerking: Uitbreiding wordt per predictor in- of uitgeschakeld (dat wil zeggen binnen het predictorargument van uw berekening). Lambda (en model) worden op een hoger niveau toegepast (buiten de predictorexpressies).

Lambda en uitbreiding configureren in uw berekening

Nu u meer weet over de regularisatieparameter (of lambda) en data-uitbreiding, gaan we deze bekijken in de context van een voorspellingsberekening:

MODEL_QUANTILE("model=rl, lambda=0.05", 0.5, SUM([Profit]), "augmentation=off", SUM([Sales]))

Hieronder vindt u een tabel met een kort overzicht van de gevolgen van het wijzigen van de uitbreiding en lambda ten opzichte van de standaard voor lineaire modellen:

 UitbreidingLambda
Ridge-regressieJaJa
Lineaire regressieJaNiet van toepassing

Overwegingen voor regularisatie en uitbreiding

  • Als u het verkeerde model voor uw data hebt, is het niet waarschijnlijk dat het wijzigen van de regularisatieparameter of uitbreiding tot aanzienlijk betere resultaten zullen leiden. Controleer of de datatypen correct zijn (meetwaarden versus dimensies). Als de onderliggende data bijvoorbeeld een tijdreeks zijn, kunt u overwegen om Gaussische procesregressie te gebruiken, door het model in uw tabelberekening te wijzigen met model=gp.

  • Omdat OLS niet geregulariseerd is, is er geen lambdawaarde die gewijzigd kan worden.

  • Als uw dataset extreem klein is en u dimensies hebt (vooral dimensies met een hoge kardinaliteit), overweeg dan om ridge-regressie te gebruiken door model=rl toe te voegen aan uw tabelberekening.

  • Als alle andere factoren gelijk zijn (voor dezelfde dataset, gegeven dat uitbreiding aan of uit staat), kan een lage lambda de fit verbeteren, maar de generalisatie schaden (overfitting veroorzaken).

  • Omgekeerd kan een hoge lambda ervoor zorgen dat de fit een constant model wordt, zonder afhankelijkheid van een van de predictors. Hierdoor wordt de capaciteit van het model verminderd (wat leidt tot underfitting).

Voorbeeld 1

Dit voorbeeld toont de relatie tussen gemiddeld cholesterol en hartziekten bij mannen en vrouwen. Mannen worden weergegeven door vierkante markeringen en vrouwen door cirkels.

In de eerste visualisatie geven de blauwe markeringen het voorspellingsdoel aan en de oranje markeringen zijn de gemodelleerde waarden. U ziet dat de data veel ruis bevatten en dat we met de uitbreiding ingeschakeld en een kleine lambdawaarde van 0,01 onrealistische hartziektepercentages van meer dan 1 zien. Er is sprake van een veel te grote afhankelijkheid, waarschijnlijk vanwege alle uitschieters in de ruis in de data.

Hartziekten per geslacht met voorspellingsdoel en een slecht passend model

MODEL_QUANTILE("model=rl, lambda=0.01", 0.5, AVG([Target]), ATTR([Sex]), "augmentation=on", AVG([Chol]))

In de volgende visualisatie vergelijken we het voorspellingsdoel met een ander model, waarbij de uitbreiding is uitgeschakeld en de lambdawaarde is gewijzigd naar 10. Merk op dat dit model realistischer is en dat geen enkele markering een ziektepercentage van 1 overschrijdt.

Hartziekten per geslacht met voorspellingsdoel en een beter model

MODEL_QUANTILE("model=rl, lambda=10", 0.5, AVG([Target]), ATTR([Sex]), "augmentation=off", AVG([Chol]))

Voorbeeld 2

Laten we nu eens kijken naar een ander voorbeeld uit de praktijk, waarbij gebruik wordt gemaakt van data over het aantal gebruikers van het fietsdeelsysteem Bluebikes (voorheen Hubway) in Boston. In dit geval werkt lineaire regressie goed. Vergelijk de volgende visualisaties, samengevoegd tot kwartalen van 2017:

Grafiek met Hubway-gebruikersdata zonder overfitting

MODEL_QUANTILE('model=rl, lambda=0.05', 0.5, sum([Trip.Duration]), AVG([Temp]))

Grafiek met Hubway-gebruikersdata zonder overfitting

MODEL_QUANTILE('model=rl, lambda=0.05', 0.5, AVG([Speed]), AVG([Temp]))

Geen van beide is geneigd tot overfitting, waardoor de afhankelijkheid van lambda voor een kleine lambda zwak is.

Kijk nu eens naar deze laatste visualisatie:

Grafiek met Hubway-gebruikersdata zonder overfitting

MODEL_QUANTILE('model=rl, lambda=2', 0.5, sum([Trip.Duration]), AVG([Temp]))

U ziet dat naarmate de lambda toeneemt, de fit afvlakt tot er geen helling meer is (dat wil zeggen dat er sprake is van een te geregulariseerde fit of underfit).

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.