Ho seguito un corso online, dove ho appreso che classi sbilanciate nei dati di addestramento potrebbero portare a problemi, perché gli algoritmi di classificazione sono la regola della maggioranza, come dà buoni risultati se lo squilibrio è eccessivo. In un compito si doveva bilanciare i dati tramite il 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/
Allora qual è? Devo bilanciare i dati o no? Dipende dallalgoritmo utilizzato, poiché alcuni potrebbero essere in grado di adattarsi alle proporzioni sbilanciate delle classi? In caso affermativo, quali sono affidabili su dati sbilanciati?
Risposta
Il ragionamento intuitivo è stato spiegato nel post del blog:
Se il nostro obiettivo è la previsione, ciò causerà un bias definito. E peggio, sarà un pregiudizio permanente, nel senso che non avremo stime coerenti con laumentare della dimensione del campione.
Quindi, probabilmente il problema dei dati bilanciati (artificialmente) è peggiore del caso sbilanciato .
I dati bilanciati sono utili per la classificazione, ma ovviamente perdi informazioni sulle frequenze di comparsa, il che influenzerà le metriche di precisione stesse, nonché le prestazioni di produzione .
Diciamo che stai riconoscendo lettere scritte a mano dallalfabeto inglese (26 lettere). Sbilanciare laspetto di ogni lettera darà a ogni lettera una probabilità di essere classificata (correttamente o meno) allincirca 1/26, quindi il classificatore dimenticherà la distribuzione effettiva delle lettere nel campione originale. E è ok quando il classificatore è in grado di generalizzare e riconoscere ogni lettera con elevata precisione .
Ma se laccuratezza e, soprattutto, la generalizzazione non sono “t” così elevate “(non posso” darti una definizione – puoi pensarla proprio come un “caso peggiore”) – i punti classificati male -probabilmente distribuito equamente tra tutte le lettere, qualcosa come:
"A" was misclassified 10 times "B" was misclassified 10 times "C" was misclassified 11 times "D" was misclassified 10 times ...and so on
Contrariamente a senza bilanciamento (assumendo che “A” e “C” abbiano probabilità molto più alte di apparenza 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
Quindi i casi frequenti avranno meno classificazioni errate. Che sia buono o meno dipende dal tuo compito. Per il riconoscimento naturale del testo, si potrebbe sostenere che le lettere con frequenze più alte sono più praticabili, in quanto preserverebbero la semantica del testo originale, avvicinando lattività di riconoscimento alla previsione (dove la semantica rappresenta tendenze ). Ma se stai “provando a riconoscere qualcosa come screenshot della chiave ECDSA (più entropia -> meno previsione), mantenere i dati sbilanciati non aiuterebbe. Quindi, ancora una volta, dipende.
La distinzione più importante è che la stima dellaccuratezza è, essa stessa, di parte (come puoi vedere nellesempio dellalfabeto bilanciato), quindi non sai in che modo il comportamento del modello viene influenzato dai punti più rari o più frequenti.
PS Puoi sempre monitorare le prestazioni della classificazione sbilanciata con le metriche Precisione / Richiamo prima e decidere se è necessario aggiungere il bilanciamento o meno.
EDIT : cè ulteriore confusione in teoria della stima precisamente nella differenza tra media campionaria e media della popolazione. Ad esempio, potresti conoscere (probabilmente) leffettiva distribuzione delle lettere inglesi nellalfabeto $ p (x_i | \ theta) $ , ma il tuo campione (set di addestramento) non lo è abbastanza grande da stimarlo correttamente (con $ p (x_i | \ hat \ theta) $ ). Quindi, per compensare un $ \ hat \ theta_i – \ theta_i $ , a volte si consiglia di ribilanciare le classi in base alla popolazione stessa o ai parametri noti da un campione più ampio (quindi migliore stimatore). Tuttavia, in pratica non vi è alcuna garanzia che “un campione più ampio” sia distribuito in modo identico a causa del rischio di ottenere dati distorti su ogni passaggio (diciamo lettere inglesi raccolte dalla letteratura tecnica rispetto alla narrativa rispetto allintera biblioteca) quindi il bilanciamento potrebbe comunque essere dannoso .
Questa risposta dovrebbe anche chiarire i criteri di applicabilità per il bilanciamento:
Il problema dello squilibrio di classe è causato dalla mancanza di modelli sufficienti appartenenti alla classe di minoranza, non dal rapporto tra modelli positivi e negativi di per sé.In genere se disponi di dati sufficienti, il “problema di squilibrio di classe” non “si verifica
In conclusione, il bilanciamento artificiale è raramente utile se linsieme di addestramento è abbastanza grande. Assenza di dati statistici da un identico il campione suggerisce inoltre che non è necessario un bilanciamento artificiale (soprattutto per la previsione), altrimenti la qualità dello stimatore è pari alla “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
Commenti
- Penso che oltre alla spiegazione del problema, limportante conclusione di questa risposta è che si dovrebbe prova prima sbilanciato e controlla i suoi risultati e solo se necessario fai il bilanciamento e controlla il suo risultato. +1
- Quindi, in altre parole, con classi distribuite uniformemente nel sottoinsieme di addestramento, il modello perderà la sua precisione nei dati non visualizzati, giusto? Ma, nel caso opposto, in cui provi a estrarre in modo casuale le voci di un set di dati per i tuoi sottoinsiemi di addestramento / test, il tuo classificatore funzionerà meglio?
- @ChristosK. Come molti hanno affermato, quando vedi il problema come classificazione, è difficile ragionare sulla previsione. In ogni caso, se rimuovi il bias (campione “casuale”), hai bisogno di un campione più grande per migliorare le prestazioni. È solo che “di solito” il campione è abbastanza grande da preservare la semantica, quindi lo sbilanciamento farebbe solo male e si comporterebbe come un martello di regolarizzazione che “appiattisce” tutto senza unadeguata considerazione. Inoltre, come suggerisce la metafora del dinosauro, “bilanciato” non significa “pari”: esegui un corretto bilanciamento solo quando sai che alcune probabilità sono travisate in un campione “casuale”.
- @ChristosK. Grazie per alcuni chiarimenti. Non è lo stesso che volevo dire, ma lapproccio è molto simile. La raccomandazione usuale per lapplicabilità di k-fold è di farlo quando il campione iniziale è “un po piccolo”. Non ne sono sicuro, ma il fold non dovrebbe comunque far male: è solo che ci vogliono più run e meno ti interessa la previsione, meno ti interessa la generalizzazione / performance tautologica come sembra :). Ma nel complesso, k-fold significa essenzialmente meno pregiudizi.
- @ChristosK. Oh, e come avvertimento, il rapporto spam / non spam potrebbe essere una variabile casuale non stazionaria di per sé. Con tutte quelle “notizie false”, “troll russi” e altre cose, starei attento a tali ipotesi: anche il rapporto potrebbe essere parziale. Potresti prima stimare PrecisionRecall sui tuoi classificatori, se qualcosa è sottocampionato: preferisco raccogliere / generare (?) Più dati.
Risposta
Coerentemente con il commento di @ kjetil-b-halvorsen, la rapida adozione dellapprendimento automatico ha confuso i ricercatori sulla previsione e sulla classificazione. Come ho descritto più in dettaglio 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ò parliamo solo ragionevolmente di tendenze , non di prevedere le singole occorrenze.
Nelle statistiche, abbiamo imparato qualche tempo fa che qualsiasi metodo che richieda lesclusione di alcuni dati è altamente sospetto. Quindi lobiettivo 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 per il rischio previsto.
Risposta
Dipende da cosa si desidera ottenere dalla classificazione?
Dì che è cancro contro non cancro, quindi rilevare il cancro è vitale. Tuttavia, poiché il non cancro costituirà la maggior parte dei dati, il classificatore può essenzialmente inviare tutti i casi alla classe non cancro e ottenere una precisione molto elevata. Ma non possiamo permettercelo, quindi essenzialmente riduciamo il campione di casi di non cancro, spostando essenzialmente il confine decisionale dalla regione del cancro alla regione del cancro.
Anche nei casi duso in cui laccuratezza è la nostra unica obiettivo, il bilanciamento può essere essenziale se ci si aspetta che il bilancio del tempo di prova sia diverso dallorario del treno.
Ad esempio, supponi di voler classificare manghi e arance, hai un set di dati di allenamento con 900 manghi e 30 arance, ma ti aspetti di distribuirlo in un mercato con la stessa quantità di mango e arance, quindi idealmente dovresti campionare nel rapporto di campionamento previsto per massimizzare la precisione.
Commenti
- Questo è quello che ho capito dalle lezioni che ho tenuto. Tuttavia, ‘ t capisco quando il bilanciamento può essere un male, come suggerisce questo post del blog. Perché mai dovrebbe essere cattivo equilibrio, se rimangono punti dati sufficienti per ogni classe?
- Scusa, ma secondo la tua analogia, cosa ha a che fare la distribuzione della frutta sul mercato con il modello ac curacy?O hai imparato a separare i manghi dalle arance o no. In altre parole, dovresti essere in grado di distribuire lo stesso modello su un mercato di sole arance o solo mango.
- Ma il problema con lesempio del cancro è consideralo come una classificazione , dovrebbe essere trattato come una stima del rischio . Quindi lapparente problema con le classi sbilanciate scompare, vedere stats.stackexchange.com/questions/127042/…
Risposta
Quando i tuoi dati sono bilanciati, puoi preferire controllare la precisione della metrica. Ma quando una situazione del genere i tuoi dati sono sbilanciati, la tua precisione non è coerente per iterazioni diverse. Devi concentrare più metriche come Precisione (PPR), Richiamo (sensibilità). Queste due metriche dovrebbero essere bilanciate durante il confronto. Inoltre dovresti controllare F1-Score che è la media armonica di Precisione e richiamo. Questo è applicabile a tutti gli algoritmi di apprendimento automatico