Slumpmässig korsvalidering är fel på tidsberoende data. Den låter modellen träna på onsdag och testa på tisdag, alltså interpolera mellan kända punkter, något den aldrig får göra i drift, där all testdata ligger i framtiden.
Resultatet blir systematiskt för bra, och skillnaden mot verkligheten upptäcks först i produktion.
Glidande fönster
Rätt uppställning delar data i tid och upprepar den i flera omgångar:
Omgång 1: [--- träning ---][test]
Omgång 2: [----- träning -----][test]
Omgång 3: [------- träning -------][test]
Varje omgång tränar på allt fram till en tidpunkt och testar på perioden efter. Det ger flera oberoende mätningar i stället för en. Då går det att se om resultatet är stabilt eller om ett enda gynnsamt fönster bar hela slutsatsen.
Alternativet med fast fönsterbredd, där även starten flyttas framåt, används när äldre data inte längre är representativ.
Fem sätt att omedvetet fuska
Glapp saknas. Om utfallet blir känt först efter fjorton dagar måste det finnas fjorton dagars glapp mellan tränings- och testperiod. Annars tränar modellen på information som i verkligheten inte hunnit fram.
Förbearbetning på hela datan. Normalisering, imputering och variabelurval gjort före uppdelningen låter framtiden påverka träningen. Se dataläckage.
Variabler byggda på hela historiken. “Kundens totala antal ordrar” beräknat över hela perioden innehåller framtida ordrar. Varje härledd variabel måste beräknas som den såg ut vid den tidpunkt raden avser.
Modellval på testdata. Att pröva trettio modeller och redovisa den bästa på testmängden gör testmängden till en träningsmängd. Det behövs en tredje, orörd period för slutlig utvärdering.
Reviderad historik. I många system uppdateras historiska värden i efterhand: returer, korrigeringar, omklassificeringar. Backtestet ser den korrigerade versionen; modellen i drift hade sett den ursprungliga.
Jämför alltid mot en baslinje
Ett backtest utan baslinje ger ett tal utan tolkning. Kör den säsongsnaiva prognosen genom exakt samma uppställning. Om skillnaden är liten är det den viktigaste upptäckten i hela utvärderingen.
Backtestet är ett kontrakt
Den uppställning som används för utvärdering bör vara samma kod som senare kör i drift, med samma variabelberäkning. Skiljer de sig kommer de att glida isär, och då kan ingen längre säga om en försämring beror på modellen eller på att utvärderingen mätte något annat än produktionen gör.