Hur man gör baslinjeförutsägelser för tidsserieprognoser med Python

Hur man gör baslinjeförutsägelser för tidsserieprognoser med Python

Att upprätta en baslinje är avgörande för alla tidsserieprognosproblem.

En baslinje i prestanda ger dig en uppfattning om hur bra alla andra modeller faktiskt kommer att prestera på ditt problem.

I den här självstudien kommer du att upptäcka hur du utvecklar en uthållighetsprognos som du kan använda för att beräkna en basnivå för prestanda på en tidsserieuppsättning med Python.

Efter att ha slutfört denna handledning vet du:

  • Vikten av att beräkna en baslinje av prestanda på tidsserieprognosproblem.
  • Hur man utvecklar en uthållighetsmodell från grunden i Python.
  • Hur man utvärderar prognosen från en uthållighetsmodell och använder den för att fastställa en baslinje i prestanda.

Starta ditt projekt med min nya bok Time Series Forecasting With Python, inklusive steg-för-steg-självstudier och den Python-källkod filer för alla exempel.

Låt oss börja.

  • Uppdaterad apr / 2019: Uppdaterade länken till dataset.
Hur man gör baslinjeförutsägelser för tidsserieprognoser med Python

Hur man gör baslinjeförutsägelser för tidsserieprognoser med Python
Foto av Bernard Spragg. NZ, vissa rättigheter reserverade.

Baslinje för prognosprestanda

En baslinje i prognosresultat ger en jämförelsepunkt.

Det är en referenspunkt för alla andra modelleringstekniker för ditt problem. Om en modell uppnår prestanda vid eller under baslinjen, bör tekniken fixas eller överges.

Tekniken som används för att generera en prognos för att beräkna baslinjeprestanda måste vara enkel att implementera och naiv av problemspecifika detaljer.

Innan du kan fastställa en prestationsbaslinje för ditt prognosproblem måste du utveckla en testkabel. Detta består av:

  1. De dataset du tänker använda för att träna och utvärdera modeller.
  2. De omprovtagning teknik du tänker använda för att uppskatta teknikens prestanda (t.ex. tåg / testdelning).
  3. De prestandamått du tänker använda för att utvärdera prognoser (t.ex. medelkvadratfel).

När du är förberedd måste du sedan välja en naiv teknik som du kan använda för att göra en prognos och beräkna baslinjens prestanda.

Målet är att få en baslinjeprestanda på ditt tidsserieprognosproblem så snabbt som möjligt så att du kan få bättre förståelse av datasetet och utveckla mer avancerade modeller.

Tre egenskaper för en bra teknik för att göra en baslinjeprognos är:

  • Enkel: En metod som kräver liten eller ingen träning eller intelligens.
  • Snabb: En metod som är snabb att implementera och beräkningsmässigt trivial för att göra en förutsägelse.
  • Upprepas: En metod som är deterministisk, vilket innebär att den ger en förväntad utgång med samma ingång.

En vanlig algoritm som används för att upprätta en baslinjeprestanda är persistensalgoritmen.

Sluta lära sig tidsserieprognoser långsam väg!

Ta min gratis 7-dagars e-postkurs och upptäck hur du kommer igång (med exempelkod).

Klicka för att registrera dig och få en gratis PDF-e-bokversion av kursen.

Starta din GRATIS minikurs nu!

Persistensalgoritm (den "naiva" prognosen)

Den vanligaste baslinjen för övervakad maskininlärning är Zero Rule-algoritmen.

Denna algoritm förutsäger majoritetsklassen i fallet med klassificering, eller det genomsnittliga resultatet i fallet med regression. Detta kan användas för tidsserier, men respekterar inte den seriella korrelationsstrukturen i tidsseriedatamängder.

Motsvarande teknik för användning med tidsseriedataset är persistensalgoritmen.

Persistensalgoritmen använder värdet vid föregående tidssteg (t-1) för att förutsäga det förväntade resultatet i nästa tidsteg (t + 1).

Detta uppfyller de tre ovanstående villkoren för en basprognos.

För att göra detta konkret kommer vi att titta på hur man utvecklar en uthållighetsmodell och använder den för att skapa en baslinjeprestanda för ett enkelt univariat tidsserieproblem. Låt oss först granska Shampoo Sales-datasetet.

Schampos försäljningsdataset

Denna dataset beskriver det månatliga antalet schampoförsäljningar under en treårsperiod.

Enheterna är ett antal försäljningar och det finns 36 observationer. Den ursprungliga datasetet krediteras Makridakis, Wheelwright och Hyndman (1998).

Nedan följer ett exempel på de fem första raderna med data, inklusive rubrikraden.

Nedan följer en översikt över hela datasetet där du kan ladda ner datasetet och lära dig mer om det.

Schampos försäljningsdataset

Schampos försäljningsdataset

Datauppsättningen visar en ökande trend och möjligen en säsongsbestämd komponent.

Ladda ner datamängden och placera den i den aktuella arbetskatalogen med filnamnet “schampo-försäljning.csv“.

Följande kodavsnitt laddar Shampoo Sales-datasetet och plottar tidsserien.

Att köra exemplet plottar tidsserien enligt följande:

Schampo försäljningsdataset tomt

Schampo försäljningsdataset tomt

Persistensalgoritm

En uthållighetsmodell kan enkelt implementeras i Python.

Vi delar upp detta avsnitt i fyra steg:

  1. Förvandla den univariata datasetet till ett övervakat inlärningsproblem.
  2. Upprätta tåg- och testdatamängder för teststammen.
  3. Definiera uthållighetsmodellen.
  4. Gör en prognos och skapa en baslinjeprestanda.
  5. Granska hela exemplet och plotta utdata.

Låt oss dyka in.

Steg 1: Definiera det övervakade inlärningsproblemet

Det första steget är att ladda datauppsättningen och skapa en fördröjd representation. Det vill säga, med tanke på observationen vid t-1, förutsäga observationen vid t + 1.

Detta kodavsnitt skapar datamängden och skriver ut de fem första raderna i den nya datamängden.

Vi kan se att den första raden (index 0) måste kasseras eftersom det inte fanns någon observation före den första observationen att använda för att göra förutsägelsen.

Ur ett övervakat inlärningsperspektiv är kolumnen t-1 ingångsvariabeln, eller X, och kolumnen t + 1 är utgångsvariabeln, eller y.

Steg 2: Träna och testa uppsättningar

Nästa steg är att separera datamängden i tåg- och testuppsättningar.

Vi kommer att behålla de första 66% av observationerna för ”utbildning” och de återstående 34% för utvärdering. Under delningen är vi noga med att utesluta den första dataraden med NaN-värdet.

Ingen utbildning krävs i detta fall; det är bara vana. Var och en av tåg- och testuppsättningarna delas sedan upp i ingångs- och utgångsvariablerna.

Steg 3: Persistensalgoritm

Vi kan definiera vår uthållighetsmodell som en funktion som returnerar värdet som anges.

Till exempel, om t-1-värdet 266.0 tillhandahölls, returneras detta som förutsägelse, medan det verkliga verkliga eller förväntade värdet råkar vara 145,9 (hämtat från den första användbara raden i vår eftersläpna dataset).

Steg 4: Skapa och utvärdera prognos

Nu kan vi utvärdera den här modellen på testdatan.

Vi gör detta med valideringsmetoden walk-forward.

Ingen modellutbildning eller omskolning krävs, så i huvudsak går vi igenom testdatan tid för steg och får förutsägelser.

När förutsägelser har gjorts för varje tidssteg i träningsdatasetet jämförs de med de förväntade värdena och ett medelvärde-kvadratfel (MSE) beräknas.

I det här fallet är felet mer än 17730 över testdatan.

Steg 5: Komplett exempel

Slutligen görs en plot för att visa träningsdataset och de avvikande förutsägelserna från de förväntade värdena från testdataset.

Från planen för förutsägelser av uthållighetsmodellen är det tydligt att modellen ligger 1 steg efter verkligheten. Det finns en stigande trend och månad till månad buller i försäljningssiffrorna, vilket belyser begränsningarna i uthållighetstekniken.

Shampoo Sales Persistence Model

Shampoo Sales Persistence Model

Det fullständiga exemplet listas nedan.

Du kan också vara intresserad av