Quale problema risolve il sovracampionamento, il sottocampionamento e SMOTE?


25

In una domanda recente, ben accolta, Tim chiede quando i dati sbilanciati sono davvero un problema in Machine Learning ? La premessa della domanda è che c'è molta letteratura sull'apprendimento automatico che discute dell'equilibrio delle classi e del problema delle classi squilibrate . L'idea è che i set di dati con uno squilibrio tra la classe positiva e negativa causino problemi per alcuni algoritmi di classificazione dell'apprendimento automatico (qui includo i modelli probabilistici) e si dovrebbero cercare metodi per "bilanciare" il set di dati, ripristinando il perfetto 50/50 diviso tra classi positive e negative.

Il senso generale delle risposte votate è che "non lo è, almeno se si è premurosi nella modellazione". M. Henry L., in un commento votato a una risposta accettata, afferma

[...] non esiste un problema di basso livello con l'utilizzo di dati non bilanciati. Nella mia esperienza, il consiglio di "evitare dati non bilanciati" è specifico dell'algoritmo o saggezza ereditata. Concordo con AdamO sul fatto che, in generale, i dati sbilanciati non presentano problemi concettuali a un modello ben specificato.

AdamO sostiene che il "problema" con l'equilibrio di classe è davvero una rarità di classe

Pertanto, almeno nella regressione (ma sospetto in tutte le circostanze), l'unico problema con i dati sbilanciati è che hai effettivamente dimensioni ridotte del campione. Se un metodo è adatto al numero di persone nella classe più rara, non dovrebbero esserci problemi se la loro percentuale di membri è squilibrata.

Se questo è il vero problema a portata di mano, lascia una domanda aperta: qual è lo scopo di tutti i metodi di ricampionamento destinati a bilanciare il set di dati: sovracampionamento, sottocampionamento, SMOTE, ecc.? Chiaramente non affrontano il problema di avere implicitamente una piccola dimensione del campione, non è possibile creare informazioni dal nulla!


È esattamente quello che avrei cambiato in ... grazie. Non copre l'intero ambito della tua domanda, ma non è necessario che un titolo-- capisca chiaramente a che tipo di domanda ti stai chiedendo.
Glen_b

Vi sono certamente situazioni in cui i metodi bootstrap e di sottocampionamento sono utili e talvolta migliori di altri metodi non parametrici. I libri sul bootstrap e il sottocampionamento lo trattano. Ci sono discussioni su questo sito che ne discutono tra cui la superiorità del bootstrap rispetto al congedo in analisi discriminante anche in campioni relativamente piccoli. Ci sono certamente alcune situazioni in cui il bootstrap fallisce e quelli sono menzionati nel mio libro e in altri.
Michael R. Chernick,

@MichaelChernick Non sto parlando del bootstrap, questo è ciò di cui Glen stava commentando. Sto parlando di approcci di "bilanciamento di classe" come il campionamento sopra e sotto, in modo che l'asse di classe positiva a negativa sia ugualmente rappresentato in un set di dati.
Matthew Drury,

Includete il sottocampionamento? Ti riferisci solo a dimensioni del campione disuguali? Quanto è generale un'affermazione che stai facendo?
Michael R. Chernick,

@MichaelChernick Ho aggiunto alcune osservazioni chiarificatrici nel primo e nell'ultimo paragrafo, spero che ti sia d'aiuto.
Matthew Drury,

Risposte:


0

Alcune tecniche di campionamento sono di adattarsi al bias (se il tasso di popolazione è noto e diverso), ma sono d'accordo con l'idea che la classe sbilanciata non sia il problema stesso. Uno dei motivi principali dipende dalle prestazioni di elaborazione. Se la nostra classe target, ad esempio, è un caso estremamente raro a 1: 100000, il nostro set di dati di modellazione sarebbe enorme e il calcolo sarebbe difficile. Il campionamento, indipendentemente dalla strategia, elimina sempre alcuni dati al fine di ridurre la dimensione totale del set di dati. Suppongo che la differenza tra tutte le diverse strategie di campionamento, sia solo l'intelligenza attorno alla quale i dati buttiamo via senza sacrificare una perdita di possibilità predittive.


4
Questo è tutto vero, ma molti dei metodi che sto discutendo creano set di dati più grandi . Il Upsampling crea più istanze della classe positiva copiando punti dati esistenti e SMOTE crea punti dati "sintetici" della classe rara. Questi certamente non aiuterebbero con l'efficienza informatica.
Matthew Drury,


0

Il problema che questi metodi stanno cercando di risolvere è quello di aumentare l'impatto della classe di minoranza sulla funzione di costo. Questo perché algos sta cercando di adattarsi bene all'intero set di dati e quindi adattarsi alla maggioranza. Un altro approccio sarebbe quello di utilizzare pesi di classe, e questo approccio nella maggior parte dei casi offre risultati migliori, poiché non vi è alcuna perdita di informazioni dovuta al sottocampionamento o alla perdita di prestazioni e all'introduzione del rumore da sovracampionamento.


2
non capisco la tua risposta.
Michael R. Chernick,

Intendevo dire che le prestazioni del classificatore sono valutate sull'intero set di dati (errore medio su esempi positivi e negativi), in cui l'errore per ciascun esempio è equamente ponderato. Pertanto l'algoritmo (ad es. Regressione logistica) adatta la sua funzione di ipotesi ad esempi che massimizzeranno la riduzione degli errori. In questo caso per la classe di maggioranza, dove la minoranza (classe negativa) è praticamente ignorata perché non ha un'influenza elevata sull'errore sull'insieme di dati. Questo è il motivo per cui il sovracampionamento, il sottocampionamento o la ponderazione di classe consentono una migliore adozione dell'algoritmo alla classe di minoranza.
Milan Vukicevic,

0

Ti darò un esempio più estremo. Considera il caso in cui hai un set di dati con 99 punti dati etichettati come positivi e solo uno etichettato come negativo. Durante l'allenamento, il tuo modello si renderà conto che se classifica tutto come positivo, finirà per cavarsela. Un modo per risolvere questo problema è sovrastampare la classe sottorappresentata e un altro è sottocampionare la classe sovrarappresentata. Ad esempio, in un set di dati di 70 etichette positive e 30 negative, potrei campionare le etichette negative con la sostituzione e quelle positive senza sostituzione, il che farà sì che il mio modello incontri più etichette negative durante l'allenamento. In questo modo, se il mio modello cerca di classificare tutto come positivo, subirà una perdita maggiore di quanto avrebbe altrimenti.

Un altro approccio che non riguarda il campionamento è quello di regolare la funzione di costo per assegnare pesi più elevati ai punti dati con l'etichetta di minoranza. Ad esempio, se si utilizza la perdita NLL in un set di dati in cui gli 1 sono sovrarappresentati rispetto agli 0 tra le etichette, è possibile regolare la funzione di perdita su:

L(Xio~,yio)=-α(yio)ln(Xio~)-β(1-yio)ln(1-Xio~)

β>αβ-α


0

Non sono d'accordo con la premessa che i dati sbilanciati non sono un problema nell'apprendimento automatico. Forse meno nella regressione, ma è certamente nella classificazione.

I dati sbilanciati sono rilevanti nelle applicazioni di Machine Learning a causa della riduzione delle prestazioni degli algoritmi (la ricerca che sto pensando è specificamente sui classificatori) nel contesto dello squilibrio di classe.

Prendi un semplice problema di classificazione binaria con un rapporto 25: 1 di esempi di allenamento di classe A 'rispetto a' classe B '. La ricerca ha dimostrato che l'accuratezza relativa alla classificazione della classe B subisce un colpo semplicemente a causa della riduzione del rapporto tra i dati di allenamento. Ha senso, dato che meno esempi di formazione hai, più povero il tuo classificatore si allenerà su quei dati. Come ha affermato uno dei commentatori, non puoi fare qualcosa dal nulla. Dagli articoli che ho visto, in problemi di classificazione multiclasse, sembra che tu debba arrivare a un rapporto di 10: 1 per iniziare ad avere un impatto significativo sull'accuratezza della classe di minoranza. Forse le persone che leggono letteratura diversa da quella che ho visto hanno opinioni diverse.

Pertanto, le soluzioni proposte sono: sovracampionamento della classe di minoranza, sottocampionamento della classe di maggioranza o utilizzo di SMOTE sulla classe di minoranza. Sì, non puoi davvero creare dati dal nulla (una sorta di SMOTE, ma non esattamente) a meno che tu non stia entrando nella creazione di dati sintetici per la classe di minoranza (nessun metodo semplice). Altre tecniche come MixUp e simili rientrano potenzialmente in questo concetto, ma penso che siano più regolarizzanti delle soluzioni di squilibrio di classe. Negli articoli che ho letto, Oversampling> SMOTE> Underampling.

Indipendentemente dalla tua tecnica, stai alterando la relazione tra la maggioranza e le classi di minoranza che possono influenzare l'incidenza. In altre parole, se stai creando un classificatore per rilevare una malattia cerebrale super rara X che ha un'incidenza di 1 su 100.000 e il tuo classificatore è 1: 1, potresti essere più sensibile e meno specifico con un numero maggiore di falsi positivi . Se è importante che tu rilevi quei casi e l'arbitro in un secondo momento, stai bene. Altrimenti, hai sprecato un sacco di tempo e denaro di altre persone. Alla fine questo problema dovrà essere affrontato.

Quindi, per rispondere alla domanda:

tl / dr: esistono operazioni di bilanciamento della classe come Over / Undersampling e SMOTE (e dati sintetici) per migliorare le prestazioni dell'algoritmo di machine learning (classificatore) risolvendo il colpo di prestazioni intrinseco in un algoritmo causato dallo squilibrio stesso .

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.