Regularisering och datautökning i prediktiv modellering

Långt ifrån alla som använder Tableau använder prediktiv modellering, och ännu färre letar efter sätt att förbättra en prediktiv modell och förutsägelserna från den. Den här artikeln riktar sig till avancerade användare som är intresserade av detta område inom datavetenskapen.

Förutom standardargumenten, t.ex. måluttryck (mätvärdet som ska förutses) och prediktoruttrycket (mätvärdet och/eller dimensionerna som används för att göra förutsägelsen), kan du finjustera dina förutsägelser genom att lägga till ytterligare två argument: lambda, en regleringsparameter, och augmentation. Det gör du genom att lägga till de nya argumenten i syntaxen för beräkningen.

Vilka modeller fungerar med regularisering och datautökning?

Som du vet kan du använda prediktiv modellering i Tableau med någon av tre modeller: linjär regression (även kallat minstakvadratmetoden eller OLS), regulariserad linjär regression (eller ridge-regression) och Gaussisk processregression. Om du använder linjär regression eller ridge-regression kan en datautökning öka modellernas förmåga att registrera icke-linjära mönster. Om du använder ridge-regression är regulariseringsparametern en skalär som du kan använda för att justera regulariseringseffekten på modellen.

Regularisering och datautökning gäller inte Gaussisk processregression.

Innan vi fortsätter att fördjupa oss i regularisering och datautökning ska vi titta närmare på dessa två modeller:

Linjär regression passar bäst om det finns en eller flera prediktorer som har en linjär relation mellan förutsägelsen och målet för förutsägelsen, som inte påverkas av samma underliggande verktyg och som inte representerar två instanser av samma data (t.ex. försäljning uttryckt både i dollar och euro).

Regulariserad linjär regression används för att förbättra stabiliteten, minska effekten av kollinearitet samt för att förbättra beräkningseffektivitet och generalisering. I Tableau används L2-regularisering. Mer information om L2-regularisering finns i den här lektionen om ridge-regression.

Vad är regularisering?

Ridge-regression är en specifik typ av regulariserad linjär regression. Regularisering är en metod som tillämpar ”straff” för att begränsa storleken på modellens koefficienter. Regulariseringens styrka styrs med lambda, en skalär som används för att finjustera regulariseringens sammantagna effekt. Ju högre värde, desto högre straff (d.v.s. desto större regularisering).

Ridge-regression tar hand om vissa av de problem som är förknippade med linjär regression:

  • Metoden eliminerar problemen som orsakas av multikollinearitet bland prediktorer.

  • Om minstakvadratproblemet är illakonditionerat, t.ex. om antalet datapunkter är mindre än antalet funktioner, så väljer lambda en unik lösning.

  • Lambda är ett sätt att förbättra generaliseringen hos den linjära modellen.

I Tableau har ridge-regression som standard lambda=0,5 eftersom detta värde fungerar bra i många fall. Om du vill ändra lambda-värdet redigerar du bara tabellberäkningen (se exemplen nedan).

Vad är datautökning?

Datautökning i MODEL_QUANTILE och MODEL_PERCENTILE är ett enkelt exempel på datautökning: prediktorer utökas till högre gradens polynom. I Tableau är några typer av polynomutökning inbyggda i funktionerna för prediktiv modellering.

  • För ordnade dimensioner gör Legendre-polynom upp till grad 3 att den linjära modellen kan registrera kvadratiska och kubiska relationer mellan den utökade prediktorn och svaret.

  • För mätvärden gör andra gradens Hermite-polynom att den linjära modellen kan registrera kvadratiska relationer mellan den utökade prediktorn och svaret.

I en linjär regression utökas endast ordnade dimensioner som standard med augmentation=on. I en ridge-regression där model=rl utökas bara mätvärden som standard. Om du vill åsidosätta inställningen och inaktivera utökning för varje prediktor i en beräkning använder du augmentation=off. Inga polynom av högre grad kommer att läggas till.

Det kan vara en fördel att inaktivera datautökning om datauppsättningen är väldigt liten eftersom utökningarna kan överanpassa eventuellt brus i ursprungliga data. Den resulterande relationen är dessutom både enklare och mer intuitiv.

Obs! Datautökning aktiveras/inaktiveras per prediktor (d.v.s. inom prediktorargumentet i beräkningen). Lambda (och modellen) tillämpas på den högre nivån (utanför eventuella prediktoruttryck).

Konfigurera lambda och datautökning i en beräkning

Nu när du vet mer om regulariseringsparametern (eller lambda) och datautökning ska vi se hur de fungerar i en förutsägelseberäkning:

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

I tabellen nedan kan du snabbt se om de linjära modellerna påverkas om du ändrar standardvärdena för datautökning och lambda:

 DatautökningLambda
Ridge-regressionJaJa
Linjär regressionJaEj tillämpligt

Att tänka på när det gäller regularisering och datautökning

  • Om du har fel modell för dina data så kommer du antagligen inte att förbättra resultatet nämnvärt om du ändrar regulariseringsparametern eller datautökningen. Det kan vara en bra idé att se över datatyperna och bekräfta att de stämmer (mätvärden eller dimensioner). Om dina underliggande data består av en tidsserie kan du till exempel överväga att använda Gaussisk processregression i stället, genom att ändra modellen i tabellberäkningen med model=gp.

  • Eftersom OLS inte är regulariserad finns det inget lambda-värde som du kan ändra.

  • Om datauppsättningen är extremt liten och du har dimensioner (särskilt dimensioner med hög kardinalitet) kan du överväga att använda ridge-regression genom att lägga till model=rl i tabellberäkningen.

  • När allt är lika (för samma datauppsättning, med aktiverad eller inaktiverad datautökning) kan ett lågt lambda-värde förbättra modellanpassningen, men försämra generaliseringen (orsaka överanpassning).

  • På motsvarande sätt kan ett högt lambda-värde resultera i en konstantmodell, utan beroende gentemot någon av prediktorerna. Detta påverkar modellens kapacitet negativt (orsakar underanpassning).

Exempel 1

Det här exemplet illustrerar relationen mellan ett genomsnitt av kolesterol- och hjärtsjukdom bland män och kvinnor, där män representeras med fyrkanter och kvinnor med cirklar.

I den första visualiseringen symboliserar de blå markeringarna förutsägelsemålet, och de orangea markeringarna är de modellerade värdena. Som du ser finns det mycket brus i dessa data. Och med aktiverad datautökning och ett lågt lambda-värde på 0,01 ser vi dessutom en orealistisk frekvens av hjärtsjukdom på över 1. Beroendet är alldeles för brant, antagligen på grund av alla avvikande värden i databruset.

Hjärtsjukdom efter kön med förutsägelsemål och en olämplig modell

MODEL_QUANTILE(”model=rl; lambda=0,01”; 0,5; AVG([Target]); ATTR([Sex]); ”augmentation=on”; AVG([Chol]))

I nästa visualisering jämför vi förutsägelsemålet med en annan modell, med inaktiverad datautökning och ett lambda-värde på 10. Observera att den här modellen är mer realistisk, och inga markeringar överstiger en frekvens på 1.

Hjärtsjukdom efter kön med förutsägelsemål och en bättre modell

MODEL_QUANTILE(”model=rl; lambda=10”; 0,5; AVG([Target]); ATTR([Sex]); ”augmentation=off”; AVG([Chol]))

Exempel 2

Nu ska vi titta på ett annat verkligt exempel som bygger på användningsdata från ett cykeldelningssystem utvecklat av Bluebikes (tidigare Hubway) i Boston. I det här fallet fungerar linjär regression bra. Jämför följande visualiseringar, aggregerade för kvartal år 2017:

Ritning av Hubway-användningsdata utan överanpassning

MODEL_QUANTILE('model=rl; lambda=0,05'; 0,5; sum([Trip.Duration]); AVG([Temp]))

Ritning av Hubway-användningsdata utan överanpassning

MODEL_QUANTILE('model=rl; lambda=0,05'; 0,5; AVG([Speed]); AVG([Temp]))

Ingen av dem har någon överanpassning och lambda-beroendet är därför svagt vid ett lågt lambda-värde.

Titta nu på den sista visualiseringen:

Ritning av Hubway-användningsdata utan överanpassning

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

Notera att kurvan planar ut (d.v.s. blir överregulariserad eller underanpassad) i takt med att lambda-värdet ökar.

Tack för din feedback!Din feedback har skickats in. Tack!