Regression

Slutförd

Regressionsmodeller tränas för att förutsäga numeriska etikettvärden baserat på träningsdata som innehåller både funktioner och kända etiketter. Processen för att träna en regressionsmodell (eller någon övervakad maskininlärningsmodell) omfattar flera iterationer där du använder en lämplig algoritm (vanligtvis med vissa parametriserade inställningar) för att träna en modell, utvärdera modellens förutsägande prestanda och förfina modellen genom att upprepa träningsprocessen med olika algoritmer och parametrar tills du uppnår en acceptabel nivå av förutsägelseprecision.

Diagram som visar processen för att träna en utvärdering av en övervakad modell.

Diagrammet visar fyra viktiga element i träningsprocessen för övervakade maskininlärningsmodeller:

  1. Dela upp träningsdata (slumpmässigt) för att skapa en datauppsättning som modellen ska tränas med samtidigt som du håller tillbaka en delmängd av de data som du ska använda för att verifiera den tränade modellen.
  2. Använd en algoritm för att anpassa träningsdata till en modell. När det gäller en regressionsmodell använder du en regressionsalgoritm, till exempel linjär regression.
  3. Använd valideringsdata som du höll tillbaka för att testa modellen genom att förutsäga etiketter för funktionerna.
  4. Jämför kända faktiska etiketter i valideringsdatauppsättningen med de etiketter som modellen förutsade. Aggregera sedan skillnaderna mellan de förutsagda och faktiska etikettvärdena för att beräkna ett mått som anger hur exakt modellen som förutsägs för valideringsdata.

Efter varje träning, validera och utvärdera iteration kan du upprepa processen med olika algoritmer och parametrar tills ett acceptabelt utvärderingsmått har uppnåtts.

Exempel – regression

Nu ska vi utforska regression med ett förenklat exempel där vi tränar en modell att förutsäga en numerisk etikett (y) baserat på ett enda funktionsvärde (x). De flesta verkliga scenarier omfattar flera funktionsvärden, vilket ger viss komplexitet. men principen är densamma.

I vårt exempel ska vi hålla oss till det glassförsäljningsscenario som vi diskuterade tidigare. För vår funktion ska vi överväga temperaturen (vi antar att värdet är den högsta temperaturen på en viss dag) och etiketten vi vill träna en modell för att förutsäga är antalet glassar som säljs den dagen. Vi börjar med historiska data som innehåller register över dagliga temperaturer (x) och glassförsäljning (y):

Diagram över en termometer. Diagram över en glass.
Temperatur (x) Glassförsäljning (y)
51 1
52 0
67 14
65 14
70 23
69 20
72 23
75 26
73 22
81 30
78 26
83 36

Träna en regressionsmodell

Vi börjar med att dela upp data och använda en delmängd av dem för att träna en modell. Här är träningsdatauppsättningen:

Temperatur (x) Glassförsäljning (y)
51 1
65 14
69 20
72 23
75 26
81 30

För att få en inblick i hur dessa x- och y-värden kan relatera till varandra kan vi rita dem som koordinater längs två axlar, så här:

Diagram över ett punktdiagram som visar x och y.

Nu är vi redo att tillämpa en algoritm på våra träningsdata och anpassa den till en funktion som tillämpar en åtgärd på x för att beräkna y. En sådan algoritm är linjär regression, som fungerar genom att härleda en funktion som producerar en rät linje genom korsningarna av x- och y-värdena samtidigt som det genomsnittliga avståndet mellan linjen och de ritade punkterna minimeras, så här:

Diagram över punktdiagrammet med en regressionslinje tillagd.

Raden är en visuell representation av funktionen där linjens lutning beskriver hur du beräknar värdet för y för ett givet värde av x. Linjen fångar upp x-axeln vid 50, så när x är 50 är y 0. Som du kan se från axelmarkörerna i diagrammet lutar linjen så att varje ökning på 5 längs x-axeln resulterar i en ökning på 5 upp till y-axeln, så när x är 55 är y 5; när x är 60 är y 10 och så vidare. För att beräkna värdet y för ett givet värde av x subtraherar funktionen helt enkelt 50. Funktionen kan med andra ord uttryckas så här:

f(x) = x-50

Du kan använda den här funktionen för att förutsäga antalet glassar som säljs på en dag med en viss temperatur. Anta till exempel att väderprognosen säger oss att i morgon blir det 77 grader. Vi kan använda vår modell för att beräkna 77-50 och förutsäga att vi kommer att sälja 27 glassar i morgon.

Men hur exakt är vår modell?

Utvärdera en regressionsmodell

För att verifiera modellen och utvärdera hur bra den förutsäger höll vi tillbaka vissa data som vi känner till etikettens (y) värde för. Här är de data som vi höll tillbaka:

Temperatur (x) Glassförsäljning (y)
52 0
67 14
70 23
73 22
78 26
83 36

Vi kan använda modellen för att förutsäga etiketten för var och en av observationerna i den här datamängden baserat på funktionens (x) värde och sedan jämföra den förutsagda etiketten (ŷ) med det kända faktiska etikettvärdet (y).

Med den modell som vi tränade tidigare, som kapslar in funktionen f(x) = x-50, resulterar följande förutsägelser:

Temperatur (x) Faktisk försäljning (y) Förväntad försäljning (ŷ)
52 0 2
67 14 17
70 23 20
73 22 23
78 26 28
83 36 33

Vi kan rita både de förutsagda och faktiska etiketterna mot funktionsvärdena så här:

Diagram över ett punktdiagram som visar förutsagda och faktiska värden.

De förutsagda etiketterna beräknas av modellen så att de finns på funktionslinjen, men det finns en viss avvikelse mellan ŷ-värdena som beräknas av funktionen och de faktiska y-värdena från valideringsdatauppsättningen, vilket anges på diagrammet som en linje mellan värdena ŷ och y som visar hur långt ifrån förutsägelsen var från det faktiska värdet.

Utvärderingsmått för regression

Baserat på skillnaderna mellan de förutsagda och faktiska värdena kan du beräkna några vanliga mått som används för att utvärdera en regressionsmodell.

Genomsnittligt absolut fel (MAE)

Variansen i det här exemplet anger hur många glassar varje förutsägelse var fel. Det spelar ingen roll om förutsägelsen var över eller under det faktiska värdet (så till exempel -3 och +3 anger båda en varians på 3). Det här måttet kallas det absoluta felet för varje förutsägelse och kan sammanfattas för hela valideringsuppsättningen som det genomsnittliga absoluta felet (MAE).

I exemplet med glass är medelvärdet (genomsnittet) för de absoluta felen (2, 3, 3, 1, 2 och 3) 2,33.

Genomsnittligt kvadratfel (MSE)

Det genomsnittliga absoluta felmåttet tar hänsyn till alla avvikelser mellan förutsagda och faktiska etiketter på samma sätt. Det kan dock vara mer önskvärt att ha en modell som konsekvent är fel med en liten mängd än en som gör färre, men större fel. Ett sätt att skapa ett mått som "förstärker" större fel genom att placera enskilda fel och beräkna medelvärdet för kvadratvärdena. Det här måttet kallas mse (mean squared error ).

I vårt glassexempel är medelvärdet av de kvadratiska absolutvärdena (som är 4, 9, 9, 1, 4 och 9) 6.

RMSE (Root Mean Squared Error)

Det genomsnittliga kvadratfelet hjälper till att ta hänsyn till antalet fel, men eftersom det kvadraterar felvärdena representerar det resulterande måttet inte längre den kvantitet som mäts av etiketten. Med andra ord kan vi säga att MSE för vår modell är 6, men det mäter inte dess noggrannhet när det gäller antalet glassar som var felaktigt åtalade; 6 är bara en numerisk poäng som anger felnivån i valideringsförutsägelserna.

Om vi vill mäta felet när det gäller antalet glassar måste vi beräkna kvadratroten för MSE, som producerar ett mått som kallas, föga förvånande, root mean squared error. I det här fallet √6, vilket är 2,45 (glass).

Bestämningskoefficient (R2)

Alla mått hittills jämför avvikelsen mellan de förutsagda och faktiska värdena för att utvärdera modellen. Men i verkligheten finns det en naturlig slumpmässig varians i den dagliga försäljningen av glass som modellen tar hänsyn till. I en linjär regressionsmodell passar träningsalgoritmen en rak linje som minimerar medelvariansen mellan funktionen och de kända etikettvärdena. Bestämningskoefficienten (kallas vanligtvis R2 eller R-Squared) är ett mått som mäter andelen varians i valideringsresultatet som kan förklaras av modellen, i motsats till någon avvikande aspekt av valideringsdata (till exempel en dag med ett mycket ovanligt antal glassförsäljningar på grund av en lokal festival).

Beräkningen för R2 är mer komplex än för tidigare mått. Den jämför summan av kvadratiska skillnader mellan förutsagda och faktiska etiketter med summan av kvadratiska skillnader mellan de faktiska etikettvärdena och medelvärdet av faktiska etikettvärden, så här:

R2 = 1- ∑(y-ŷ)2 ÷ ∑(y-ȳ)2

Oroa dig inte för mycket om det ser komplicerat ut; de flesta maskininlärningsverktyg kan beräkna måttet åt dig. Det viktiga är att resultatet är ett värde mellan 0 och 1 som beskriver den andel av variansen som förklaras av modellen. Ju närmare 1 det här värdet är, desto bättre passar modellen valideringsdata. När det gäller glassregressionsmodellen är R2 som beräknas från valideringsdata 0,95.

Iterativ träning

Måtten som beskrivs ovan används ofta för att utvärdera en regressionsmodell. I de flesta verkliga scenarier använder en dataexpert en iterativ process för att träna och utvärdera en modell upprepade gånger, varierande:

  • Funktionsval och förberedelse (välja vilka funktioner som ska ingå i modellen och beräkningar som tillämpas på dem för att säkerställa en bättre passform).
  • Algoritmval (Vi utforskade linjär regression i föregående exempel, men det finns många andra regressionsalgoritmer)
  • Algoritmparametrar (numeriska inställningar för att styra algoritmbeteendet, mer exakt kallade hyperparametrar för att skilja dem från parametrarna x och y).

Efter flera iterationer väljs den modell som resulterar i det bästa utvärderingsmåttet som är acceptabelt för det specifika scenariot.