Quando devo bilanciare le classi in un set di dati di allenamento?


29

Ho seguito un corso online, dove ho appreso, che le classi sbilanciate nei dati di allenamento potrebbero causare problemi, perché gli algoritmi di classificazione vanno per la regola della maggioranza, in quanto danno buoni risultati se lo squilibrio è troppo. In un incarico si dovevano bilanciare i dati tramite sottocampionamento della classe di maggioranza.

In questo blog, tuttavia, qualcuno afferma che i dati bilanciati sono anche peggio:

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

Quindi quale è? Devo bilanciare i dati o no? Dipende dall'algoritmo utilizzato, in quanto alcuni potrebbero essere in grado di adattarsi alle proporzioni sbilanciate delle classi? In tal caso, quali sono affidabili su dati non bilanciati?

Risposte:


28

Il ragionamento intuitivo è stato spiegato nel blogpost:

Se il nostro obiettivo è la previsione, questo causerà una distorsione definita. E peggio, sarà un pregiudizio permanente, nel senso che non avremo stime coerenti con l'aumentare della dimensione del campione.

Quindi, probabilmente il problema dei dati (artificialmente) bilanciati è peggiore del caso sbilanciato.

I dati bilanciati sono buoni per la classificazione, ma ovviamente perdi informazioni sulle frequenze di apparizione, che influenzeranno le metriche di precisione stesse, nonché le prestazioni di produzione.

Supponiamo che tu stia riconoscendo le lettere scritte a mano dell'alfabeto inglese (26 lettere). Riequilibrando ogni aspetto della lettera si darà a ogni lettera una probabilità di essere classificata (correttamente o meno) all'incirca 1/26, quindi il classificatore dimenticherà l'effettiva distribuzione delle lettere nel campione originale. Ed è ok quando il classificatore è in grado di generalizzare e riconoscere ogni lettera con alta precisione .

Ma se l'accuratezza e, soprattutto, la generalizzazione non è "così elevata" (non posso darti una definizione - puoi pensarla solo come un "caso peggiore") - i punti classificati erroneamente si distribuiranno equamente tra tutte le lettere , qualcosa di simile a:

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

Al contrario di senza bilanciamento (supponendo che "A" e "C" abbiano probabilità di aspetto molto più elevate nel testo)

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

I casi così frequenti avranno meno classificazioni errate. Se va bene o no dipende dal tuo compito. Per il riconoscimento naturale del testo, si potrebbe sostenere che le lettere con frequenze più alte sono più praticabili, poiché preserverebbero la semantica del testo originale, avvicinando il compito di riconoscimento alla previsione (dove la semantica rappresenta tendenze ). Ma se stai cercando di riconoscere qualcosa di simile allo screenshot della chiave ECDSA (più entropia -> meno previsione) - mantenere i dati sbilanciati non sarebbe d'aiuto. Quindi, di nuovo, dipende.

La distinzione più importante è che la stima dell'accuratezza è, di per sé, distorta (come puoi vedere nell'esempio dell'alfabeto bilanciato), quindi non sai come il comportamento del modello viene influenzato dai punti più rari o più frequenti.

PS È sempre possibile tenere traccia delle prestazioni della classificazione sbilanciato con precisione / Recall metriche prime e decidere se è necessario aggiungere il bilanciamento o no.


EDIT : c'è ulteriore confusione nella teoria della stima proprio nella differenza tra media campionaria e media demografica. Ad esempio, potresti conoscere (probabilmente) la distribuzione effettiva delle lettere inglesi nell'alfabeto , ma il tuo campione (set di addestramento) non è abbastanza grande per stimarlo correttamente (con ). Quindi, al fine di compensare un , a volte si consiglia di riequilibrare le classi in base alla popolazione stessa o ai parametri noti da un campione più ampiop(Xio|θ)p(Xio|θ^)θ I - θ iθ^io-θio(quindi migliore stimatore). Tuttavia, in pratica non vi è alcuna garanzia che il "campione più ampio" sia distribuito in modo identico a causa del rischio di ottenere dati distorti in ogni fase (diciamo lettere inglesi raccolte dalla letteratura tecnica contro la narrativa rispetto all'intera biblioteca), quindi il bilanciamento potrebbe essere ancora dannoso.

Questa risposta dovrebbe anche chiarire i criteri di applicabilità per il bilanciamento:

Il problema dello squilibrio di classe è causato dal fatto che non ci sono abbastanza schemi appartenenti alla classe di minoranza, non dal rapporto di schemi positivi e negativi in ​​sé. In genere, se si dispone di dati sufficienti, il "problema di squilibrio di classe" non si presenta

In conclusione, il bilanciamento artificiale è raramente utile se il set di allenamento è abbastanza grande. L'assenza di dati statistici da un campione più ampio distribuito in modo identico suggerisce anche che non è necessario un bilanciamento artificiale (soprattutto per la previsione), altrimenti la qualità dello stimatore è buona quanto la "probabilità di incontrare un dinosauro":

Qual è la probabilità di incontrare un dinosauro per strada?

1/2 o incontri un dinosauro o non incontri un dinosauro


5
Penso che oltre alla spiegazione del problema, l'importante asporto da questa risposta sia che si dovrebbe provare prima uno sbilanciato e verificarne i risultati e solo se necessario effettuare il bilanciamento e verificarne il risultato. +1
Zelphir Kaltstahl

Quindi, in altre parole, con classi distribuite uniformemente nel sottoinsieme di formazione il modello perderà la sua precisione in dati invisibili, giusto? Ma, nel caso opposto, dove si tenta di estrarre casualmente le voci di un set di dati per i sottoinsiemi di addestramento / test, il classificatore funzionerà meglio?
Christos K.,

@ChristosK. Come molti hanno affermato, quando vedi il problema come una classificazione, è difficile ragionare sulla previsione. In ogni caso, se si rimuove la distorsione (campione "in modo casuale"), è necessario un campione più grande per migliorare le prestazioni. È solo che "di solito" il campione è abbastanza grande da preservare la semantica, quindi un sbilanciamento farebbe male e si comporterebbe solo come un martello regolarizzante che "appiattisce" tutto senza la dovuta considerazione. Inoltre, come suggerisce la metafora dei dinosauri, "bilanciato" non significa "pari" - fai un corretto bilanciamento solo quando sai che alcune probabilità sono travisate in un campione "casuale".
dk14

1
@ChristosK. Grazie per alcuni chiarimenti. Non è lo stesso che intendevo, ma l'approccio è molto simile. La consueta raccomandazione per l'applicabilità di k-fold è di farlo quando il campione iniziale è "un po 'piccolo". Non sono sicuro, ma il ripiegamento non dovrebbe far male comunque - è solo che richiede più corse e meno ti preoccupi della previsione, meno ti preoccupi della generalizzazione / delle prestazioni tanto tautologico come sembra :). Ma nel complesso - k-fold significa essenzialmente meno distorsioni.
dk14

1
@ChristosK. Oh, e come avvertimento, il rapporto spam / non-spam potrebbe essere una variabile casuale non stazionaria da sola. Con tutte quelle "notizie false", "troll russi" e altre cose starei attento a tali ipotesi - anche il rapporto potrebbe essere parziale. Potresti voler stimare prima PrecisionRecall sui tuoi classificatori, se qualcosa è sottocampionato - Preferirei raccogliere / generare (?) Più dati.
dk14

17

Coerentemente con il commento di @ kjetil-b-halvorsen, la rapida adozione dell'apprendimento automatico ha confuso i ricercatori sulla previsione rispetto alla classificazione. Come ho descritto in modo più dettagliato qui , la classificazione è appropriata solo in una minoranza di casi. Quando il risultato è raro (o troppo comune), le probabilità sono tutto perché in quel caso si può solo ragionevolmente parlare di tendenze , non di prevedere eventi individuali.

In statistica, abbiamo appreso qualche tempo fa che qualsiasi metodo che richiede uno per escludere alcuni dei dati è altamente sospetto. Quindi l'obiettivo di bilanciare i risultati è fuori luogo. La previsione delle tendenze (probabilità) non lo richiede. E una volta stimata una probabilità, è possibile prendere una decisione ottimale applicando la funzione utilità / costo / perdita al rischio previsto.


1

Dipende da cosa vuoi ottenere dalla classificazione?

Supponiamo che si tratti di cancro non cancro, quindi rilevare il cancro è vitale. Tuttavia, poiché il non-cancro costituirà la maggior parte dei tuoi dati, il classificatore può essenzialmente inviare tutti i casi alla classe non cancerosa e ottenere una precisione molto elevata. Ma non possiamo permettercelo, quindi essenzialmente analizziamo i casi di non cancro, essenzialmente spostando il confine decisionale dalla regione del cancro alla regione non cancerosa.

Anche nei casi d'uso in cui l'accuratezza è il nostro unico obiettivo, il bilanciamento può essere essenziale se si prevede che il bilancio del tempo di prova differisca dal tempo del treno.

Ad esempio, supponiamo che tu voglia classificare mango e arance, hai un set di dati di addestramento con 900 mango e 30 arance, ma ti aspetti di distribuirlo in un mercato con uguali mango e arance, quindi idealmente dovresti campionare nel rapporto di campionamento atteso per massimizzare precisione.


Questo è quello che ho capito dalle lezioni che ho tenuto. Tuttavia, non capisco quando il bilanciamento può essere negativo, come suggerisce questo post sul blog. Perché sarebbe mai male bilanciare, se rimangono punti dati sufficienti per ogni classe?
Zelphir Kaltstahl,

Siamo spiacenti, ma nella tua analogia, cosa c'entra la distribuzione della frutta sul mercato con l'accuratezza del modello? O hai imparato a separare i mango dalle arance o no. In altre parole, dovresti essere in grado di distribuire lo stesso modello su un mercato solo arancione o solo mango.
Fernando

3
Ma il problema con l'esempio del cancro è vederlo come una classificazione , dovrebbe essere trattato come una stima del rischio . Quindi il problema apparente con le classi sbilanciate scompare, vedi stats.stackexchange.com/questions/127042/…
kjetil b halvorsen,

1

Quando i tuoi dati sono bilanciati, puoi preferire controllare l'accuratezza della metrica. Ma quando una situazione del genere i tuoi dati sono sbilanciati, la tua precisione non è coerente per diverse iterazioni. Devi concentrare più metriche come Precisione (PPR), Richiama (sensibilità). Queste due metriche dovrebbero essere bilanciate quando confrontate. Inoltre, dovresti controllare il punteggio F1 che è la media armonica di precisione e richiamo. Questo è applicabile a tutti gli algoritmi di apprendimento automatico

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.