Hvornår skal jeg afbalancere klasser i et træningsdatasæt?

Jeg havde et online-kursus, hvor jeg lærte, at ubalancerede klasser i træningsdataene kunne føre til problemer, fordi klassificeringsalgoritmer går for flertalsreglen, som det giver gode resultater, hvis ubalancen er for meget. Under en opgave skulle man afbalancere dataene ved at underprøve majoritetsklassen.

I denne blog hævder nogen dog, at afbalancerede data er endnu værre:

https://matloff.wordpress.com/2015/09/29/unbalanced-data-is-a-problem-no-balanced-data-is-worse/

Så hvilken er det? Skal jeg afbalancere dataene eller ej? Afhænger det af den anvendte algoritme, da nogle måske er i stand til at klare de ubalancerede proportioner af klasser? Hvis ja, hvilke er pålidelige på ubalancerede data?

Svar

Den intuitive begrundelse er forklaret i blogindlægget:

Hvis vores mål er forudsigelse, vil dette medføre en bestemt bias. Og værre, det vil være en permanent bias i den forstand, at vi ikke vil have ensartede skøn, når stikprøvestørrelsen vokser.

Så uden tvivl er problemet med (kunstigt) afbalancerede data værre end den ubalancerede sag .

Balancerede data er gode til klassificering, men du mister naturligvis information om udseendefrekvenser, hvilket vil påvirke nøjagtighedsmålingerne selv samt produktionsydelse .

Lad os sige, at du genkender håndskrevne bogstaver fra det engelske alfabet (26 bogstaver). Overbalancering af hvert bogstavs udseende vil give hvert bogstav en sandsynlighed for at blive klassificeret (korrekt eller ej) ca. 1/26, så klassifikatoren glemmer den faktiske fordeling af bogstaver i den originale prøve. Og det er ok når klassifikatoren er i stand til at generalisere og genkende hvert bogstav med høj nøjagtighed .

Men hvis nøjagtighed og vigtigst af alt generalisering ikke er “t” så høj “(jeg kan ikke give dig en definition – du kan tænke på det som en” worst case “) – vil de forklassificerede punkter mest – sandsynligvis lige fordele blandt alle bogstaver, noget som:

"A" was misclassified 10 times "B" was misclassified 10 times "C" was misclassified 11 times "D" was misclassified 10 times ...and so on 

I modsætning til uden at afbalancere (forudsat at “A” og “C” har meget højere sandsynligheder for udseende i tekst)

"A" was misclassified 3 times "B" was misclassified 14 times "C" was misclassified 3 times "D" was misclassified 14 times ...and so on 

Så hyppige tilfælde får færre forkert klassifikationer. Om det er godt eller ej, afhænger af din opgave. For naturlig tekstgenkendelse kan man argumentere for, at bogstaver med højere frekvenser er mere levedygtige, da de ville bevare semantikken i den originale tekst og bringe genkendelsesopgaven tættere på forudsigelsen (hvor semantik repræsenterer tendenser ). Men hvis du “prøver at genkende noget som et screenshot af ECDSA-nøgle (mere entropi -> mindre forudsigelse) – kan det ikke hjælpe at holde data ubalanceret. Det afhænger igen.

Den vigtigste forskel er, at nøjagtighedsestimatet i sig selv bliver partisk (som du kan se i eksemplet med det afbalancerede alfabet), så du ved ikke, hvordan modelens opførsel påvirkes af de mest sjældne eller hyppigste punkter.

PS Du kan altid spore ydeevne for ubalanceret klassificering med Præcision / tilbagekaldelse metrics first og beslutte, om du skal tilføje balance eller ej.


REDIGER : Der er yderligere forvirring, der ligger i estimeringsteori nøjagtigt i forskellen mellem prøve gennemsnit og befolkning gennemsnit. For eksempel ved du muligvis (uden tvivl) faktisk distribution af engelske bogstaver i alfabetet $ p (x_i | \ theta) $ , men din prøve (træningssæt) er ikke stor nok til at estimere den korrekt (med $ p (x_i | \ hat \ theta) $ ). Så for at kompensere for en $ \ hat \ theta_i – \ theta_i $ anbefales det undertiden at genbalancere klasser i henhold til befolkningen selv eller parametre kendt fra en større prøve (dermed bedre estimator). I praksis er der imidlertid ingen garanti for, at “større prøve” distribueres identisk på grund af risikoen for at få forudindtaget data på hvert trin (lad os sige engelske breve indsamlet fra teknisk litteratur vs fiktion vs hele biblioteket), så balance kan stadig være skadelig .

Dette svar skal også præcisere anvendelseskriterierne for afbalancering:

Problemet med klassebalance skyldes, at der ikke er nok mønstre, der tilhører mindretalsklassen, ikke af forholdet mellem positive og negative mønstre i sig selv.Generelt Hvis du har nok data, opstår “klasse ubalance-problemet” ikke

Som konklusion er kunstig afbalancering sjældent nyttig, hvis træningssættet er stort nok. Fravær af statistiske data fra en større fordelt identisk prøve antyder heller ikke behov for kunstig afbalancering (især til forudsigelse), ellers er estimatorens kvalitet så god som “sandsynlighed for at imødekomme en dinosaur”:

Hvad er sandsynligheden for at møde en dinosaur ude på gaden?

1/2 møder du enten en dinosaur eller møder du ikke en dinosaur

Kommentarer

  • Jeg tror udover forklaringen på problemet er det vigtige take-away fra dette svar, at man skal prøv først ubalanceret og kontroller dens resultater, og kun hvis det er nødvendigt, gør balanceringen og kontroller resultatet. +1
  • Så med andre ord, med jævnt fordelte klasser til træningsundermængden mister modellen sin nøjagtighed i usete data, ikke? Men i det modsatte tilfælde, hvor du forsøger at udtrække tilfældigt poster af et datasæt til dine trænings- / testundersæt, vil din klassifikator fungere bedre?
  • @ChristosK. Som mange sagde, når du ser problemet som klassificering, er det svært at begrundes med forudsigelse. Under alle omstændigheder, hvis du fjerner bias (prøve “tilfældigt”) – har du brug for en større prøve for at forbedre ydeevnen. Det er bare “normalt”, at prøven er stor nok til at bevare semantik, så overbalancering ville kun skade og fungere som at regulere hammer, der “flader” alt uden passende overvejelse. Som dinosaurmetaforen antyder, betyder “afbalanceret” heller ikke “jævn” – du foretager kun korrekt afbalancering, når du ved, at nogle sandsynligheder er fejlagtigt præsenteret i en “tilfældig” prøve.
  • @ChristosK. Tak for nogle afklaringer. Det er ikke det samme, som jeg mente, men tilgangen er meget ens. En almindelig anbefaling for anvendelsen af k-fold er at gøre det, når din indledende prøve er “lidt lille”. Ikke sikker, men foldning bør ikke gøre ondt under alle omstændigheder – det tager bare flere kørsler, og jo mindre du er interesseret i forudsigelse, jo mindre er du interesseret i generalisering / ydeevne så tautologisk, som det lyder :). Men generelt – k-fold betyder i det væsentlige mindre bias.
  • @ChristosK. Åh, og som en advarsel kan spam / ikke-spam-forhold være en ikke-stationær tilfældig variabel alene. Med alle disse “falske nyheder”, “russiske trolde” og andre ting ville jeg være forsigtig med sådanne antagelser – forholdet kunne også være partisk. Du vil muligvis først estimere PrecisionRecall på dine klassifikatorer, hvis noget er under-samplet – jeg vil hellere indsamle / generere (?) Flere data.

Svar

I overensstemmelse med @ kjetil-b-halvorsens kommentar har den hurtige anvendelse af maskinlæring forvirret forskere om forudsigelse vs. klassifikation. Som jeg beskrev mere detaljeret her er klassificering kun passende i et mindretal af tilfældene. Når resultatet er sjældent (eller for almindeligt), er sandsynligheden alt for i så fald kan man tal kun med rimelighed om tendenser , ikke om at forudsige individuelle hændelser.

I statistikker lærte vi et stykke tid tilbage, at enhver metode, der kræver, at man udelukker nogle af dataene, er meget mistænkelig. Så målet om at afbalancere resultater er forkert placeret. Forudsigelse af tendenser (sandsynligheder) kræver det ikke. Og når du estimerer en sandsynlighed, kan du træffe en optimal beslutning ved at anvende Funktionen nytte / omkostning / tab til den forudsagte risiko.

Svar

Afhænger af hvad du vil opnå ved klassificeringen?

Sig det er kræft v / s ikke kræft, så det er vigtigt at opdage kræft. Men da ikke-kræft vil udgøre størstedelen af dine data, kan klassifikatoren i det væsentlige sende alle sager til ikke-kræftklasse og få meget høj nøjagtighed. Men vi har ikke råd til det, så vi nedprøver i det væsentlige tilfælde af ikke-kræft, og i det væsentlige flytter vi beslutningsgrænsen væk fra kræftregionen til den ikke-kræftregion.

Selv i brugstilfælde hvor nøjagtighed er vores eneste sigte, balance kan være afgørende, hvis testtidens balance forventes at være forskellig fra togtiden.

For eksempel sig at du vil klassificere mango og appelsiner, du har et træningsdatasæt med 900 mango og 30 appelsiner, men du forventer at indsætte det på en markedsplads med lige mango og appelsiner, så ideelt set skal du prøve i det forventede prøveforhold for at maksimere nøjagtigheden.

Kommentarer

  • Det var det, jeg forstod fra de foredrag, jeg havde. Jeg forstår dog ikke ‘ når balance kan være dårlig, som dette blogindlæg antyder. Hvorfor ville det nogensinde være dårligt at balance, hvis der er tilstrækkelige datapunkter til hver klasse?
  • Beklager, men i din analogi, hvad har markedsfrugtdistribution at gøre med model ac curacy?Du lærte enten at adskille mango fra appelsiner eller ej. Med andre ord skal du være i stand til at implementere den samme model på et marked med kun orange eller kun mango.
  • Men problemet med kræfteksemplet er at se det som klassificering , det skal behandles som risikovurdering . Derefter forsvinder det tilsyneladende problem med ubalancerede klasser, se stats.stackexchange.com/questions/127042/…

Svar

Når dine data er afbalancerede, kan du foretrække at kontrollere metricnøjagtigheden. Men når en sådan situation er ubalanceret, er din nøjagtighed ikke ens for forskellige iterationer. Du skal koncentrere flere målinger som Precision (PPR), Recall (sensitivitet). Disse to målinger skal være afbalanceret, når de sammenlignes. Du skal også være nødt til at kontrollere F1-Score, som er harmonisk gennemsnit af præcision og tilbagekaldelse. Dette gælder for alle maskinindlæringsalgoritmer

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *