Når skal jeg balansere klassene i et treningsdatasett?

Jeg hadde et online kurs hvor jeg lærte at ubalanserte klasser i treningsdataene kan føre til problemer, fordi klassifiseringsalgoritmer går for flertallsregelen, som det gir gode resultater hvis ubalansen er for mye. I en oppgave måtte man balansere dataene ved å underprøve majoritetsklassen.

I denne bloggen hevder imidlertid noen at balanserte data er enda verre:

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

Så hvilken er det? Skal jeg balansere dataene eller ikke? Avhenger det av algoritmen som brukes, da noen kanskje kan tilegne seg ubalanserte proporsjoner av klasser? Hvilke er i så fall pålitelige for ubalanserte data?

Svar

Den intuitive resonnementet er forklart i blogginnlegget:

Hvis målet vårt er spådom, vil dette føre til en klar skjevhet. Og verre, det vil være en permanent skjevhet, i den forstand at vi ikke vil ha konsekvente estimater når prøvestørrelsen vokser.

Så, uten tvil, problemet med (kunstig) balanserte data er verre enn det ubalanserte tilfellet. .

Balanserte data er gode for klassifisering, men du mister tydeligvis informasjon om utseendefrekvenser, noe som vil påvirke nøyaktighetsberegningene i tillegg til produksjonsytelse .

La oss si deg «gjenkjenner håndskrevne bokstaver fra engelsk alfabet (26 bokstaver). Overbalansering av hvert bokstavs utseende vil gi hver bokstav en sannsynlighet for å bli klassifisert (riktig eller ikke) omtrent 1/26, så klassifisereren vil glemme den faktiske fordelingen av bokstaver i originaleksemplet. Og det «er ok når klassifisereren er i stand til å generalisere og gjenkjenne hver bokstav med høy nøyaktighet .

Men hvis nøyaktighet og viktigst av alt generalisering ikke er «t» så høy «(jeg kan ikke gi deg en definisjon – du kan tenke på det akkurat som et» verste tilfelle «) – vil de feilklassifiserte punktene mest – sannsynligvis like fordelt mellom alle bokstaver, noe sånt 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 motsetning til uten balansering (forutsatt at «A» og «C» har mye høyere sannsynlighet for utseende 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å ofte vil tilfeller få færre feilklassifiseringer. Om det er bra eller ikke, avhenger av oppgaven din. For naturlig tekstgjenkjenning kan man hevde at bokstaver med høyere frekvenser er mer levedyktige, ettersom de vil bevare semantikken til originalteksten, og bringe gjenkjennelsesoppgaven nærmere prediksjon (der semantikk representerer tendenser ). Men hvis du prøver å gjenkjenne noe som skjermbilde av ECDSA-nøkkel (mer entropi -> mindre prediksjon), vil ikke data være ubalansert. Så, igjen, det avhenger.

Det viktigste skillet er at nøyaktighetsestimatet i seg selv blir partisk (som du kan se i eksemplet på det balanserte alfabetet), slik at du ikke vet hvordan modellens oppførsel påvirkes av de mest sjeldne eller hyppigste punktene.

PS Du kan alltid spore ytelsen til ubalansert klassifisering med Precision / Recall -beregninger først og bestemme om du trenger å legge til balansering eller ikke.


EDIT : Det er ekstra forvirring som ligger i estimeringsteori nøyaktig i forskjellen mellom sample gjennomsnitt og populasjon gjennomsnitt. For eksempel vet du kanskje (uten tvil) faktisk distribusjon av engelske bokstaver i alfabetet $ p (x_i | \ theta) $ , men prøven din (treningssett) er ikke stor nok til å estimere den riktig (med $ p (x_i | \ hat \ theta) $ ). Så for å kompensere for en $ \ hat \ theta_i – \ theta_i $ , anbefales det noen ganger å balansere klassene i henhold til populasjonen selv eller parametere kjent fra et større utvalg (dermed bedre estimator). I praksis er det imidlertid ingen garanti for at «større utvalg» distribueres identisk på grunn av risikoen for å få partiske data på hvert trinn (la oss si engelske bokstaver samlet fra teknisk litteratur vs fiksjon mot hele biblioteket), slik at balansering fortsatt kan være skadelig. .

Dette svaret bør også avklare anvendbarhetskriteriene for balansering:

Klasseubalanseproblemet er forårsaket av at det ikke er nok mønstre som tilhører minoritetsklassen, ikke av forholdet mellom positive og negative mønstre i seg selv.Generelt Hvis du har nok data, oppstår ikke «klasse ubalanseproblemet»

Som en konklusjon er kunstig balansering sjelden nyttig hvis treningssett er stort nok. Fravær av statistiske data fra en større identisk fordelt prøven antyder heller ikke behov for kunstig balansering (spesielt for prediksjon), ellers er estimatorens kvalitet så god som «sannsynlighet for å møte en dinosaur»:

Hva er sannsynligheten for å møte en dinosaur ute i gaten?

1/2 møter du enten en dinosaur eller så møter du ikke en dinosaur

Kommentarer

  • Jeg tror at i tillegg til forklaringen på problemet, er den viktige løsningen fra dette svaret at man bør prøv ubalansert først og sjekk resultatene, og bare om nødvendig gjør balanseringen og kontroller resultatet. +1
  • Så med andre ord, med jevnt fordelte klasser til treningsundersettet, vil modellen miste nøyaktigheten i usynlige data, ikke sant? Men i motsatt tilfelle, hvor du prøver å tilfeldig trekke ut oppføringer av et datasett for trening / testing av undergrupper, vil klassifisereren din prestere bedre?
  • @ChristosK. Som mange har sagt, er det vanskelig å resonnere når du ser problemet som klassifisering. I alle fall, hvis du fjerner skjevhet (prøve «tilfeldig») – trenger du et større utvalg for å forbedre ytelsen. Det er bare «vanligvis» at prøven er stor nok til å bevare semantikk, så overbalansering vil bare skade og fungere som å regulere hammer som «flater» alt uten riktig vurdering. Som dinosaurmetaforen antyder, betyr ikke «balansert» ikke «jevn» – du gjør riktig balansering bare når du vet at noen sannsynligheter blir feil fremstilt i et «tilfeldig» utvalg.
  • @ChristosK. Takk for noen avklaringer. Det er ikke det samme som jeg mente, men tilnærmingen er veldig lik. Vanlig anbefaling for bruk av k-fold er å gjøre det når den første prøven er «ganske liten». Ikke sikker, men folding skal uansett ikke skade – det tar bare flere løp, og jo mindre du bryr deg om spådommer, jo mindre bryr du deg om generalisering / ytelse så tautologisk som det høres ut :). Men generelt – k-fold betyr i det vesentlige mindre skjevhet.
  • @ChristosK. Åh, og som advarsel kan spam / ikke-spam-forhold være en ikke-stasjonær tilfeldig variabel alene. Med alle disse «falske nyheter», «russiske troll» og andre ting vil jeg være forsiktig med slike antakelser – forholdet kan også være partisk. Det kan være lurt å estimere PrecisionRecall på klassifiseringsapparatene dine først, hvis noe blir underprøvet – jeg vil heller samle inn / generere (?) Mer data.

Svar

I samsvar med @ kjetil-b-halvorsens kommentar, har den raske adopsjonen av maskinlæring forvirret forskere om prediksjon vs. klassifisering. Som jeg beskrev nærmere her , er klassifisering bare passende i et mindretall av tilfellene. Når utfallet er sjeldent (eller for vanlig), er sannsynligheten alt fordi i så fall kan man snakk bare rimelig om tendenser , ikke om å forutsi individuelle hendelser.

I statistikken lærte vi for en stund tilbake at enhver metode som krever at man utelukker noen av dataene, er svært mistenksom. Så målet om å balansere resultatene er feilplassert. Forutsigelse av tendenser (sannsynligheter) krever ikke det. Og når du anslår en sannsynlighet, kan du ta en optimal beslutning ved å bruke e funksjon / kostnad / tap-funksjon til den forventede risikoen.

Svar

Avhenger av hva du vil oppnå fra klassifiseringen?

Si at det er kreft v / s ikke kreft, da er det viktig å oppdage kreft. Men siden ikke-kreft vil utgjøre flertallet av dataene dine, kan klassifikatoren i hovedsak sende alle tilfeller til ikke-kreftklasse og få veldig høy nøyaktighet. Men vi har ikke råd til det, så vi prøver i det vesentlige ikke-krefttilfeller, og flytter i hovedsak beslutningsgrensen bort fra kreftregionen til ikke-kreftregionen.

Selv i brukstilfeller der nøyaktighet er vår eneste sikte, balansering kan være avgjørende hvis testtidbalansen forventes å være forskjellig fra togtiden.

For eksempel si at du vil klassifisere mango og appelsiner, du har et treningssett med 900 mango og 30 appelsiner, men du forventer å distribuere den på en markedsplass med like mango og appelsiner, og ideelt sett bør du prøve i det forventede prøveforholdet for å maksimere nøyaktigheten.

Kommentarer

  • Det var det jeg forsto fra forelesningene jeg hadde. Jeg forstår imidlertid ikke ‘ når balansering kan være dårlig, som dette blogginnlegget antyder. Hvorfor ville det noen gang være dårlig å balanse, hvis det er nok datapunkter for hver klasse?
  • Beklager, men i din analogi, hva har markedsdistribusjonen av markedet å gjøre med modell ac kuracy?Du lærte enten å skille mango fra appelsiner, eller ikke. Med andre ord, bør du kunne distribuere den samme modellen på et kun oransje eller bare mango-marked.
  • Men problemet med krefteksemplet er å se det som klassifisering , det bør behandles som risikovurdering . Da forsvinner det tilsynelatende problemet med ubalanserte klasser, se stats.stackexchange.com/questions/127042/…

Svar

Når dataene dine er balanserte, kan du foretrekke å sjekke metrikkens nøyaktighet. Men når en slik situasjon er dataene dine i ubalanse, er nøyaktigheten din ikke konsistent for forskjellige iterasjoner. Du må konsentrere flere beregninger som Precision (PPR), Recall (sensitivitet). Disse to beregningene bør balanseres når de sammenlignes. Du må også sjekke F1-Score som er harmonisk gjennomsnitt av presisjon og tilbakekalling. Dette gjelder for alle maskinlæringsalgoritmer

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *