Ik had een online cursus, waar ik leerde dat ongebalanceerde klassen in de trainingsgegevens tot problemen kunnen leiden, omdat classificatie-algoritmen voor de meerderheidsregel gaan, zoals het geeft goede resultaten als de onbalans te groot is. Bij een opdracht moest men de gegevens in evenwicht brengen door de meerderheidsklasse te onderbemonsteren.
In deze blog beweert iemand echter dat gebalanceerde gegevens nog erger zijn:
https://matloff.wordpress.com/2015/09/29/unbalanced-data-is-a-problem-no-balanced-data-is-worse/
Dus welke is het? Moet ik de gegevens in evenwicht brengen of niet? Hangt het af van het gebruikte algoritme, aangezien sommigen zich misschien kunnen aanpassen aan de onevenwichtige verhoudingen van klassen? Zo ja, welke zijn betrouwbaar voor ongebalanceerde gegevens?
Antwoord
De intuïtieve redenering is uitgelegd in de blogpost:
Als ons doel voorspelling is, zal dit een duidelijke vertekening veroorzaken. En erger nog, het zal een permanente vertekening zijn, in die zin dat we geen consistente schattingen zullen hebben naarmate de steekproefomvang toeneemt.
Het probleem van (kunstmatig) gebalanceerde gegevens is dus waarschijnlijk erger dan het onevenwichtige geval .
Gebalanceerde gegevens zijn goed voor classificatie, maar u verliest duidelijk informatie over verschijningsfrequenties, wat de nauwkeurigheidsstatistieken zelf zal beïnvloeden, evenals de productieprestaties .
Laten we zeggen dat je handgeschreven letters herkent uit het Engelse alfabet (26 letters). Door het uiterlijk van elke letter te overbalanceren, krijgt elke letter een kans om te worden geclassificeerd (correct of niet) ongeveer 1/26, dus de classificator zal de feitelijke verdeling van letters in het originele voorbeeld vergeten. En het “is ok als classifier in staat is om elke letter met hoge nauwkeurigheid te generaliseren en te herkennen .
Maar als nauwkeurigheid en vooral generalisatie niet “t” zo hoog is (ik kan je geen definitie geven – je kunt het zien als een “worst case”) – zullen de verkeerd geclassificeerde punten -waarschijnlijk gelijk verdeeld over alle letters, zoiets als:
"A" was misclassified 10 times "B" was misclassified 10 times "C" was misclassified 11 times "D" was misclassified 10 times ...and so on
In tegenstelling tot zonder balancering (aangenomen dat “A” en “C” veel grotere verschijning in tekst)
"A" was misclassified 3 times "B" was misclassified 14 times "C" was misclassified 3 times "D" was misclassified 14 times ...and so on
Zo vaak voorkomende gevallen zullen minder verkeerde classificaties krijgen. Of het goed is of niet, hangt af van uw taak. Voor natuurlijke tekstherkenning zou je kunnen stellen dat letters met hogere frequenties meer haalbaar zijn, omdat ze de semantiek van de originele tekst behouden, waardoor de herkenningstaak dichter bij de voorspelling komt (waar semantiek staat voor tendensen ). Maar als je “probeert om zoiets als een screenshot van ECDSA-sleutel (meer entropie -> minder voorspelling) te herkennen, zou het niet helpen om de gegevens uit balans te houden. Dus, nogmaals, het hangt ervan af.
Het belangrijkste onderscheid is dat de schatting van de nauwkeurigheid zelf vertekend is (zoals je kunt zien in het uitgebalanceerde alfabetvoorbeeld), dus je weet niet hoe het gedrag van het model wordt beïnvloed door de meest zeldzame of meest voorkomende punten.
PS U kunt de prestaties van ongebalanceerde classificatie altijd volgen met Precision / Recall -statistieken eerst en beslissen of u al dan niet balancering moet toevoegen.
BEWERKEN : er is nog meer verwarring in schattingstheorie precies in het verschil tussen steekproefgemiddelde en populatiegemiddelde. U kent bijvoorbeeld (aantoonbaar) de feitelijke verdeling van Engelse letters in het alfabet $ p (x_i | \ theta) $ , maar uw voorbeeld (trainingsset) is dat niet groot genoeg om het correct te schatten (met $ p (x_i | \ hat \ theta) $ ). Dus om een $ \ hat \ theta_i – \ theta_i $ te compenseren, wordt het soms aanbevolen om klassen opnieuw in evenwicht te brengen op basis van de populatie zelf of de parameters bekend van een grotere steekproef (dus een betere schatter). In de praktijk is er echter geen garantie dat een grotere steekproef identiek is verdeeld vanwege het risico op vooringenomen gegevens bij elke stap (laten we zeggen dat Engelse letters verzameld zijn uit technische literatuur versus fictie versus de hele bibliotheek), dus evenwicht kan nog steeds schadelijk zijn .
Dit antwoord zou ook de toepasbaarheidscriteria voor balancering moeten verduidelijken:
Het probleem van de klassenonbalans wordt veroorzaakt doordat er niet genoeg patronen zijn die tot de minderheidsklasse behoren, niet door de verhouding tussen positieve en negatieve patronen zelf.Over het algemeen als u voldoende gegevens heeft, treedt het “class onbalance problem” niet “op
Concluderend: kunstmatige balancering is zelden nuttig als de trainingsset groot genoeg is. Ontbreken van statistische gegevens van een grotere identiek verdeeld voorbeeld suggereert ook geen noodzaak voor kunstmatige uitbalancering (vooral voor voorspelling), anders is de kwaliteit van de schatter zo goed als “waarschijnlijkheid om een dinosaurus te ontmoeten”:
Wat is de kans dat je een dinosaurus op straat tegenkomt?
1/2 je ontmoet een dinosaurus of je ontmoet geen dinosaurus
Reacties
- Ik denk dat, naast de uitleg van het probleem, de belangrijkste afleiding van dit antwoord is dat je probeer eerst de onbalans en controleer de resultaten en pas indien nodig de balans en controleer het resultaat. +1
- Met andere woorden, met gelijkmatig verdeelde klassen over de trainingssubset verliest het model zijn nauwkeurigheid in ongeziene gegevens, toch? Maar in het tegenovergestelde geval, waar u willekeurig gegevens uit een dataset probeert te extraheren voor uw trainings- / testsubsets, zal uw classificator dan beter presteren?
- @ChristosK. Zoals velen al zeiden, is het moeilijk om over voorspelling te redeneren wanneer u het probleem als classificatie beschouwt. Als u bias verwijdert (steekproef “willekeurig”), heeft u in ieder geval een grotere steekproef nodig om de prestaties te verbeteren. Het is gewoon “normaal” dat de sample groot genoeg is om de semantiek te behouden, dus overbalanceren zou alleen maar pijn doen en zou werken als een regulariserende hamer die alles “vlakker” maakt zonder de juiste overweging. Zoals de metafoor van een dinosaurus suggereert, betekent gebalanceerd niet gelijk – je doet alleen een goede balans als je weet dat sommige waarschijnlijkheden verkeerd worden voorgesteld in een willekeurige steekproef.
- @ChristosK. Bedankt voor enkele verduidelijkingen. Het is niet hetzelfde wat ik bedoelde, maar de aanpak lijkt erg op elkaar. De gebruikelijke aanbeveling voor de toepasbaarheid van k-vouw is om het te doen als uw eerste steekproef “een beetje klein” is. Ik weet het niet zeker, maar vouwen zou sowieso geen pijn moeten doen – het kost gewoon meer runs, en hoe minder je om voorspelling geeft, hoe minder je geeft om generalisatie / prestaties, zo tautologisch als het klinkt :). Maar over het algemeen betekent k-fold in wezen minder vooringenomenheid.
- @ChristosK. Oh, en als waarschuwing: de spam / niet-spamratio kan op zichzelf een niet-stationaire willekeurige variabele zijn. Met al dat “nepnieuws”, “Russische trollen” en andere dingen zou ik voorzichtig zijn met dergelijke aannames – de ratio kan ook bevooroordeeld zijn. Misschien wil je eerst PrecisionRecall op je classificaties schatten, als iets te weinig bemonsterd is – ik verzamel / genereer (?) Meer gegevens.
Antwoord
In overeenstemming met de opmerking van @ kjetil-b-halvorsen, heeft de snelle acceptatie van machine learning onderzoekers in verwarring gebracht over voorspelling versus classificatie. Zoals ik in meer detail heb beschreven hier , is classificatie slechts in een minderheid van de gevallen geschikt. Als de uitkomst zeldzaam (of te vaak) is, zijn de waarschijnlijkheden alles , want in dat geval kan Spreek alleen redelijkerwijs over tendensen , niet over het voorspellen van individuele gebeurtenissen.
In de statistieken hebben we een tijdje geleden geleerd dat elke methode die vereist dat een deel van de gegevens wordt uitgesloten, zeer verdacht is. Het doel om uitkomsten in evenwicht te brengen is dus misplaatst. Voorspelling van tendensen (waarschijnlijkheden) vereist dit niet. En als je eenmaal een kans hebt ingeschat, kun je een optimale beslissing nemen door de e nut / kosten / verlies-functie voor het voorspelde risico.
Antwoord
Hangt af van wat u wilt bereiken met de classificatie?
Stel dat het kanker is versus geen kanker, dan is het opsporen van kanker van vitaal belang. Aangezien niet-kanker het merendeel van uw gegevens zal vormen, kan de classificator in wezen alle gevallen naar niet-kanker-klassen sturen en een zeer hoge nauwkeurigheid krijgen. Maar dat kunnen we ons niet veroorloven, dus we nemen in wezen steekproeven op niet-kankergevallen, waarbij we de beslissingsgrens in wezen verplaatsen van het kankergebied naar het niet-kankergebied.
Zelfs in gevallen waarin nauwkeurigheid onze enige is doel, kan balanceren essentieel zijn als verwacht wordt dat de testtijdbalans anders is dan de treintijd.
Stel dat u bijvoorbeeld mangos en sinaasappels wilt classificeren, u heeft een trainingsdataset met 900 mangos en 30 sinaasappels, maar je verwacht het te implementeren op een markt met gelijke mangos en sinaasappels, dan zou je idealiter moeten samplen in de verwachte sample ratio om de nauwkeurigheid te maximaliseren.
Reacties
- Dat is wat ik begreep van de lezingen die ik had. Ik begrijp echter niet ‘ niet wanneer balanceren slecht kan zijn, zoals deze blogpost suggereert. Waarom zou het ooit slecht zijn om balans, als er voldoende gegevens overblijven voor elke klasse?
- Sorry, maar wat heeft de marktfruitdistributie in uw analogie te maken met model ac curatiteit?Je hebt geleerd om mangos van sinaasappels te scheiden, of niet. Met andere woorden, je zou in staat moeten zijn om hetzelfde model te implementeren op een markt met alleen sinaasappel of alleen mangos.
- Maar het probleem met het kankervoorbeeld is dat beschouw het als classificatie , het moet worden behandeld als risico-inschatting . Dan verdwijnt het schijnbare probleem met ongebalanceerde klassen, zie stats.stackexchange.com/questions/127042/…
Answer
Als uw gegevens in evenwicht zijn, kunt u er de voorkeur aan geven om de metrische nauwkeurigheid te controleren. Maar als een dergelijke situatie uw gegevens uit balans is, is uw nauwkeurigheid niet consistent voor verschillende iteraties. U moet meer statistieken concentreren, zoals Precisie (PPR), Recall (gevoeligheid). Deze twee statistieken moeten bij vergelijking in evenwicht zijn. Ook moet u F1-Score controleren, wat een harmonisch gemiddelde is van precisie en herinnering. Dit is van toepassing op alle algoritmen voor machine learning