I dette blogindlæg taler vi om noget der indenfor maskinlæring kaldes data lækage. Det er ikke at forveksle med lækage af data til offentligheden!
Data lækage indenfor maskinlæring er når en feature vi benytter til at forudsige et output, på tidspunktet hvor vi laver forudsigelsen ikke kunne være tilgængelig.
I mange tilfælde holder featuren information omkring den værdi som vi forsøger at forudsige.
“Feature: en feature er en individuel egenskab, der bruges til at forudsige outputværdien. Vibration, temperatur og lyd er eksempler på tre features.” neurospace
Data lækage kan blive introduceret til en maskinlæringsmodel på forskellige stadier, for eksempel:
- Når vi arbejder med tidsserier
- Udvælgelsen af den rigtige feature for forudsigelser
- Labels til vores outputværdier
Tidsserier
Overvej følgende: Vi ønsker at skabe en maskinlæringsmodel til at forudsige en given efterspørgsel. Vi har data tilgængelig fra produktets kategori, fabrikken og produktkoden. Vores outputværdi er efterspørgelsen.
Vi har et sæt af data indsamlet over et givet tidspunkt.
Dataene indsamles med samme frekvens, f.eks. en gang om dagen eller en gang om ugen.
Når dato og tidspunkter bliver vigtig for forudsigelsen, kaldes det en tidsserie.
Tidsserier er ordnet som historiske data, den ældste dato er den første observation.
Ligesom når du fortæller din virksomheds indtægter de sidste 10 år.
Når vi træner en maskinlæringsmodel, har vi brug for en større mængde af disse historiske data.
Problemer med tidsserier er tilbøjelige til at introducere datalækage, hvis vi ikke er forsigtige, når vi designer maskinlæringsmodellen.
I tilfælde af introduktion af datalækage i tidsserier tillader vi vores model at bruge både tidligere, men også fremtidige ordrekrav til at forudsige dagens ordrebehov.
Kan du se problemet?
Hvis vores model lærer at bruge morgendagens forudsigelse til at forudsige i dag, kan modellen ikke generaliseres og bruges til at forudsige fremtidige ordenskrav.
“Generaliserbarhed: Generaliserbarhed beskriver, om forudsigelser fra en maskinlæringsmodel kan anvendes og bruges i produktionen.” neurospace
Tabellen nedenfor er et eksempel på en virksomheds ordrebehov.
Hvis du kun har følgende data tilgængelige, hvad er dit bedste gæt for ordrebehovet den 29. august 2019?
Da mønsteret viser en stigning på 5 produkter dagligt, er et godt skøn 50 produkter.
Dato | Output |
---|---|
2019/08/26 | 30 |
2019/08/27 | 35 |
2019/08/28 | 45 |
2019/08/29 | ?? |
Nu, med følgende tilgængelige data, hvad er din forudsigelse af ordrebehovet den 29. august 2019?
Dato | Output |
---|---|
2019/08/26 | 30 |
2019/08/27 | 35 |
2019/08/28 | 45 |
2019/08/29 | ?? |
2019/08/30 | 20 |
2019/08/31 | 16 |
2019/09/01 | 18 |
Hvis vi har introduceret datalækage til maskinlæringsmodellen, vil den forudsige, at ordrebehovet den 29. august er mindre end de sidste tre dage, fordi vi kan se, at efterspørgslen mindskes efter den 29. august.
Valg af de rigtige features
Vi vil lave en maskinlæringsmodel til at forudsige, om folk har mycoplasma pneumoniae.
De generelle symptomer på dette er ondt i halsen, tør hoste, hovedpine, rennende næse og en let feber.
Vi vores maskinlæringsmodeller på historiske data som vi beskrev i starten af dette blogindlæg.
Vores outputværdi vil sige, om de givne symptomer er forårsaget af mycoplasma pneumoniae (ja / nej).
Som input feature tilføjer vi, om folk fik udstedt recept til antibiotika (ja / nej).
Problemet er, at folk, der ikke er syge med et specifikt sæt vira, ikke får antibiotika. At få en recept på antibiotika er noget, der naturligt sker efter forudsigelserne af vores maskinlæringsmodel og derved introducerer vi datalækage.
Udtrækning af de rigtige features til en maskinlæringsmodel er vigtig. Du skal være opmærksom på, om de givne funktioner er korrelerede med den givne outputværdi, samt sørge for at de ikke har oplysninger om output, som vi naturligt ikke kan have til rådighed på tidspunktet vi forudsiger.
Labeling af outputværdi
Endelig kan vi introducere datalækage, når vi labler et datasæt, som er en tidsserier.
Et eksempel på datalækage, der opstår som følge af dårlig labeling, er når vi ønsker at detektere unormale værdier også kaldet anomalier. Når vi bestemmer, om den givne observation skal labeles som enten en normal værdi eller et anomali, ser vi også på fremtidige værdier i tidsserierne.
Et eksempel er visualiseret i tabellen herunder. Vi ser en stigning indtil 40.000 med et fald i værdier bagefter. Nu kommer spørgsmålet for dig at beslutte: “Er de 40.000 en outlier? Eller ville 27.000 blive vurderet som en outlier?” Dette er svære spørgsmål, og hvis vi labler dataen forkert, vil vi desuden introducere denne fejl til vores model, når den lærer at tolke mønstrene.
Dato | Værdi | Output |
---|---|---|
2019/08/26 | 25000 | normal |
2019/08/27 | 30000 | normal |
2019/08/28 | 33000 | normal |
2019/08/29 | 40000 | ?? |
2019/08/30 | 27000 | ?? |
2019/08/31 | 16000 | ?? |
2019/09/01 | 18000 | ?? |
Faldgruberne i datalækage
Når du introducerer datalækage til en maskinlæringsmodel, får du en høj træn- og testnøjagtighed, hvilket antyder, at modellen er god nok til produktion. Modellen vil hverken underfitte eller overfitte.
Når du implementerer maskinlæringsmodellen i produktionen, introduceres den imidlertid ikke længere til én feature, fordi den ikke er tilgængelig, når du har brug for modellens forudsigelser.
Den manglende feature er måske endda den vigtigste feature til bestemmelse af den rigtige klasse: _ de lækkede data_.
Når du implementerer en maskinlæringsmodel i produktionen, vil du se, at forudsigelserne ikke er pålidelige, hvilket tvinger dig til at stoppe med at bruge maskinlæringsmodellen til forudsigelser.
Derfor er det vigtigt at sikre dig, at du ikke introducerer datalækage i dit datasæt.
Det er vigtigt, at modellen kun lærer mønstre til forudsigelse af et givet resultat, baseret på hvad der er tilgængeligt på tidspunktet for forudsigelse.
Konklusion
Datalækage er introduktionen af en feature, der på tidspunktet for forudsigelse ikke kan være tilgængelig.
Den indeholder ofte de oplysninger, du prøver at forudsige.
Derfor kan datalækage antyde, at en maskinlæringsmodel er god nok til produktion, når den i virkeligheden har lært mønstre på nogle oplysninger, der ikke er tilgængelig på det tidspunkt, vi har brug for den til at forudsige en outputværdi.
Datalækage kan opstå, når man arbejder med tidsserier, i labling af et datasæt til en maskinlæringsmodel, og når man vælger de rigtige feature.
Det er vigtigt, at maskinlæringsmodellen kun introduceres til information, der kan være tilgængelig på tidspunktet for forudsigelse.
// Maria Hvid, Machine Learning Engineer @ neurospace