maskinintelligens.se

Metod / Dataläckage

Dataläckage

Dataläckage betyder att modellen under träning fått tillgång till information som inte finns när beslutet faktiskt ska fattas. Utvärderingen blir då för bra och drift blir en besvikelse. Det är den vanligaste enskilda orsaken till att en modell presterar sämre i produktion än i test.

När en modell presterar klart sämre i drift än i utvärdering är förklaringen nästan alltid att utvärderingen mätte fel sak. Och den vanligaste anledningen till det är läckage.

Läckage är sällan uppenbart. Ingen lägger medvetet in svaret bland variablerna. Det smyger in genom hur data hämtats, hur tabeller sammanfogats och hur uppdelningen gjorts.

Fyra former som återkommer

Framtida information i en variabel. Kundens status läses ur dagens databas, men fältet uppdaterades när kunden sa upp. Modellen lär sig att uppsagda kunder har status “uppsagd”. Det är sant och värdelöst.

Slumpmässig uppdelning på tidsordnad data. Träningsmängden innehåller måndag och onsdag, testmängden tisdag. Modellen får i praktiken interpolera mellan kända punkter, vilket den aldrig får göra i drift där all testdata ligger i framtiden.

Förbearbetning före uppdelningen. Normalisering, imputering eller variabelurval gjort på hela datamängden låter testmängdens fördelning påverka träningen. Effekten är liten men systematiskt i modellens favör.

Duplikat och samma enhet på båda sidor. Samma kund, order eller bild i både träning och test. Modellen får poäng för att minnas i stället för att generalisera.

Ett enkelt test

Ställ frågan för varje variabel: fanns det här värdet, i den här formen, vid den tidpunkt då beslutet ska fattas?

Är svaret nej, eller ens osäkert, ska variabeln bort tills någon kan visa att den fanns. Det är obekvämt eftersom det ofta är de starkaste variablerna som åker ut. Det i sig är signalen.

En praktisk regel: bygg utvärderingen som en tidsmaskin. Frys datan som den såg ut vid en viss tidpunkt, prediktera framåt, jämför med vad som faktiskt hände. Är det svårt att göra i era system är det värt att veta, för det betyder också att ni inte kan mäta modellen i efterhand när den väl är i drift.

Varför det inte går att upptäcka i datan

Ingen av de fyra formerna syns genom att titta på tabellen. De syns genom att veta hur källsystemet skriver: vilket fält som uppdateras när, vad som skrivs över, och vem som kunde se vad vid vilken tidpunkt.

Det är därför läckage är ett problem om den datagenererande processen snarare än ett statistiskt problem, och varför det inte går att automatisera bort.

Varför det hör ihop med mätdesign

Läckage är i grunden ett problem om vilken information som fanns när. Loggas händelser med tidsstämpel för när de inträffade går det att rekonstruera historiken. Loggas bara nuvarande tillstånd, som skrivs över vid varje förändring, är läckage mycket svårt att undvika och ännu svårare att upptäcka.

Det är ett av skälen till att mätdesign hör hemma före modellbygget snarare än efter.

Misstänk goda resultat

Ett resultat som är påfallande bra är oftare ett fel än ett genombrott. Den nyttigaste vanan jag har är att bli misstänksam vid ovanligt starka siffror och leta efter förklaringen innan jag berättar om dem. Det har sparat mig från att lova saker jag inte kunnat hålla mer än en gång.