Classificazione binaria con classi fortemente sbilanciate


52

Ho un set di dati sotto forma di (funzionalità, output binario 0 o 1), ma 1 si verifica abbastanza raramente, quindi solo prevedendo sempre 0, ottengo una precisione tra il 70% e il 90% (a seconda dei dati particolari che guardo ). I metodi ML mi danno la stessa accuratezza, e credo che ci dovrebbero essere alcuni metodi standard da applicare in questa situazione, che migliorerebbero l'accuratezza rispetto all'ovvia regola di previsione.


3
Ho trovato questo articolo molto utile sull'argomento: svds.com/learning-imbalanced-classes
J. O'Brien Antognini

@ J.O'BrienAntognini Questo è davvero un bell'articolo!
Jinhua Wang

Risposte:


30

Sia hxd1011 che Frank hanno ragione (+1). Essenzialmente il ricampionamento e / o l'apprendimento sensibile ai costi sono i due modi principali per aggirare il problema dei dati squilibrati; terzo è usare metodi del kernel che a volte potrebbero essere meno influenzati dallo squilibrio di classe. Vorrei sottolineare che non esiste una soluzione a proiettile d'argento. Per definizione hai una classe che è rappresentata inadeguatamente nei tuoi campioni.

Detto questo, credo che troverai gli algoritmi SMOTE e ROSE molto utili. SMOTE utilizza efficacemente un approccio -nearest neighbors per escludere membri della classe di maggioranza, creando allo stesso modo esempi sintetici di una classe di minoranza. ROSE prova a creare stime delle distribuzioni sottostanti delle due classi usando un approccio bootstrap semplificato e campionandole per esempi sintetici. Entrambi sono prontamente disponibili in R, SMOTE nel pacchetto DMwR e ROSE nel pacchetto con lo stesso nome . Sia SMOTE che ROSE danno luogo a un set di dati di allenamento più piccolo di quello originale.k

Probabilmente direi che una metrica migliore (o meno cattiva) per il caso di dati sbilanciati sta usando l'area delle caratteristiche operative dik e o / o del ricevitore sotto la curva . Il kappa di Cohen controlla direttamente l'accuratezza attesa, AUC in quanto è una funzione di sensibilità e specificità, la curva è insensibile alle disparità nelle proporzioni di classe. Ancora una volta, nota che queste sono solo metriche che dovrebbero essere utilizzate con un granello di sale. Dovresti adattarli idealmente al tuo problema specifico tenendo conto dei guadagni e dei costi che le classificazioni corrette e sbagliate trasmettono nel tuo caso. L'ho trovato guardando le curve di sollevamentoè in realtà piuttosto informativo per questa materia. Indipendentemente dalla tua metrica, dovresti provare a utilizzare un test separato per valutare le prestazioni del tuo algoritmo; esattamente a causa del sovradimensionamento sbilanciato della classe è ancora più probabile, quindi i test fuori campione sono cruciali.

Probabilmente il recente articolo più popolare sull'argomento è Imparare dai dati squilibrati di He e Garcia. Fornisce una panoramica molto bella dei punti sollevati da me stesso e in altre risposte. Inoltre, credo che il walk-through sul sottocampionamento per gli squilibri di classe , presentato da Max Kuhn come parte del pacchetto di caret , sia una risorsa eccellente per ottenere un esempio di struttura di come misurare la creazione di dati sotto / sovracampionamento e sintetico uno contro l'altro.


Una terza metrica piuttosto popolare (e di nuovo non troppo appropriata) è l'area sotto la curva della curva di richiamo di precisione. Davis & James, il documento del 2006 è considerato un classico in materia; CV ha un buon filo troppo . Di recente ho visto un articolo dal titolo piuttosto "grosso" Il diagramma di richiamo di precisione è più informativo del diagramma ROC quando si valutano classificatori binari su set di dati non bilanciati ", quindi si potrebbe voler verificare anche quello.
usεr11852 dice Reinstate Monic,

1
Per un'implementazione di Python di una varietà di tecniche di
ricampionamento

Per distribuzioni di classi altamente squilibrate, AUPRC è più informativo di AUROC. Dettagli non inclusi qui in quanto questo è un commento. Tra le tante fonti, una è qui .
Zhubarb,

15

Innanzitutto, la metrica di valutazione per i dati squilibrati non sarebbe accuratezza. Supponiamo che tu stia effettuando un rilevamento delle frodi, che il 99,9% dei tuoi dati non è una frode. Possiamo facilmente realizzare un modello fittizio con un'accuratezza del 99,9%. (basta prevedere tutti i dati non fraudolenti).

Vuoi cambiare la tua metrica di valutazione dall'accuratezza a qualcos'altro, come punteggio F1 o precisione e richiamo . Nel secondo link ho fornito. ci sono dettagli e intuizioni sul perché il richiamo di precisione funzionerà.

Per dati altamente squilibrati, la costruzione di un modello può essere molto impegnativa. Puoi giocare con la funzione di perdita ponderata o modellare una sola classe. come una classe SVM o adattarsi a un gaussiano multi-variabile (come il link che ho fornito prima.)


2
+1. Bell'esempio e buona menzione sull'SVM di una classe. Penso però che il punteggio sia un po 'troppo pesante ignorando il vero negativo tutti insieme. F1
Usεr11852 dice Reinstate Monic,

il link a "precisione e richiamo" è morto?
Jason,

13

Le questioni relative agli squilibri di classe possono essere affrontate mediante apprendimento sensibile o ricampionamento. Vedi i vantaggi e gli svantaggi dell'apprendimento sensibile ai costi rispetto al campionamento , copypasted di seguito:


{1} fornisce un elenco di vantaggi e svantaggi dell'apprendimento sensibile ai costi rispetto al campionamento:

2.2 Campionamento

Il sovracampionamento e il sottocampionamento possono essere usati per alterare la distribuzione di classe dei dati di addestramento ed entrambi i metodi sono stati usati per affrontare lo squilibrio di classe [1, 2, 3, 6, 10, 11]. Il motivo per cui l'alterazione della distribuzione di classe dei dati di formazione aiuta l'apprendimento con set di dati molto distorti è che impone effettivamente costi di classificazione errata non uniformi. Ad esempio, se si modifica la distribuzione di classe dell'insieme di addestramento in modo che il rapporto tra esempi positivi e negativi vada da 1: 1 a 2: 1, si è effettivamente assegnato un rapporto di costo di classificazione errata di 2: 1. Questa equivalenza tra l'alterazione della distribuzione di classe dei dati di addestramento e l'alterazione del rapporto dei costi di classificazione errata è ben nota ed è stata formalmente descritta da Elkan [9].

Vi sono noti svantaggi associati all'uso del campionamento per implementare l'apprendimento sensibile ai costi. Lo svantaggio del sottocampionamento è che elimina i dati potenzialmente utili . Il principale svantaggio del sovracampionamento , dal nostro punto di vista, è che, facendo copie esatte di esempi esistenti, è probabile che si verifichi un overfitting . In effetti, con il sovracampionamento è abbastanza comune per uno studente generare una regola di classificazione per coprire un singolo esempio replicato. Un secondo svantaggio del sovracampionamento è che aumenta il numero di esempi di allenamento, aumentando così il tempo di apprendimento .

2.3 Perché usare il campionamento?

Dati gli svantaggi del campionamento, vale la pena chiedersi perché qualcuno dovrebbe usarlo piuttosto che un algoritmo di apprendimento sensibile ai costi per gestire i dati con una distribuzione distorta della classe e costi di classificazione errati non uniformi. Ci sono diverse ragioni per questo. Il motivo più ovvio è che non ci sono implementazioni sensibili in termini di costi di tutti gli algoritmi di apprendimento e quindi un approccio basato su wrapper che utilizza il campionamento è l'unica opzione. Sebbene questo sia certamente meno vero oggi che in passato, molti algoritmi di apprendimento (ad esempio, C4.5) non gestiscono ancora direttamente i costi nel processo di apprendimento.

Un secondo motivo per l'utilizzo del campionamento è che molti set di dati altamente distorti sono enormi e le dimensioni del set di addestramento devono essere ridotte affinché l'apprendimento sia fattibile. In questo caso, il sottocampionamento sembra essere una strategia ragionevole e valida. In questo documento non consideriamo la necessità di ridurre le dimensioni del set di addestramento. Vorremmo sottolineare, tuttavia, che se uno ha bisogno di scartare alcuni dati di addestramento, potrebbe comunque essere utile scartare alcuni degli esempi di classe di maggioranza al fine di ridurre la dimensione del set di addestramento alla dimensione richiesta e quindi impiegare anche un costo- algoritmo di apprendimento sensibile, in modo da ridurre al minimo la quantità di dati di allenamento scartati.

Un'ultima ragione che potrebbe aver contribuito all'uso del campionamento piuttosto che a un algoritmo di apprendimento sensibile ai costi è che i costi di errata classificazione sono spesso sconosciuti. Tuttavia, questo non è un motivo valido per utilizzare il campionamento rispetto a un algoritmo di apprendimento sensibile ai costi, dal momento che il problema analogo sorge con il campionamento: quale dovrebbe essere la distribuzione in classe dei dati di addestramento finale? Se queste informazioni sui costi non sono note, una misura come l'area sotto la curva ROC potrebbe essere utilizzata per misurare le prestazioni del classificatore ed entrambi gli approcci potrebbero quindi determinare empiricamente il rapporto costo / distribuzione della classe adeguato.

Hanno anche fatto una serie di esperimenti, che era inconcludente:

Sulla base dei risultati di tutti i set di dati, non esiste un vincitore definitivo tra apprendimento sensibile ai costi, sovracampionamento e sottocampionamento

Quindi cercano di capire quali criteri nei set di dati possono suggerire quale tecnica è più adatta.

Osservano inoltre che SMOTE può apportare alcuni miglioramenti:

Esistono numerosi miglioramenti che le persone hanno apportato per migliorare l'efficacia del campionamento. Alcuni di questi miglioramenti includono l'introduzione di nuovi esempi "sintetici" durante il sovracampionamento [5 -> SMOTE], l'eliminazione di esempi di classe maggioritaria meno utili durante il sottocampionamento [11] e l'utilizzo di più sottocampioni quando il sottocampionamento come quello di ciascun esempio viene utilizzato in almeno uno sottocampione [3]. Sebbene queste tecniche siano state confrontate con il sovracampionamento e il sottocampionamento, in genere non sono state confrontate con algoritmi di apprendimento sensibili ai costi. Vale la pena studiare in futuro.


{1} Weiss, Gary M., Kate McCarthy e Bibi Zabar. "Apprendimento sensibile ai costi rispetto al campionamento: qual è la soluzione migliore per gestire classi sbilanciate con costi di errore diseguali?" DMIN 7 (2007): 35-41. https://scholar.google.com/scholar?cluster=10779872536070567255&hl=en&as_sdt=0,22 ; https://pdfs.semanticscholar.org/9908/404807bf6b63e05e5345f02bcb23cc739ebd.pdf


1
Quindi per riassumere il collegamento: i risultati su quale metodo migliore sono inconcludenti, ed è più facile usare il sottocampionamento / over-sampling. Giusto?
LazyCat,

1
@LazyCat giusto.
Franck Dernoncourt,

Sì, la piattaforma ha dei limiti. Ma molti di loro sono anche funzionalità. Ad esempio, suppongo che se una risposta lunga e dettagliata come questa potrebbe rispondere adeguatamente a due domande, tali domande devono essere duplicate. E se non sono duplicati, dovrebbe essere possibile variare le risposte in modo significativo in modo che non vengano semplicemente incollate. Quale azione dovrebbe essere presa in questo caso? (cc @gung)
whuber

@whuber L'altra domanda è già stata chiusa :-)
Franck Dernoncourt,

1
Va bene - questa è una discussione persuasiva!
whuber

6

Diverse risposte a questa query hanno già fornito diversi approcci diversi, tutti validi. Questo suggerimento proviene da un documento e dal software associato di Gary King, eminente scienziato politico di Harvard. È stato coautore di un documento intitolato Regressione logistica nei dati sugli eventi rari che fornisce alcune soluzioni abbastanza convincenti.

Ecco l'abstract:

Studiamo dati su eventi rari, variabili binarie dipendenti con decine o migliaia di volte in meno (eventi, come guerre, veti, casi di attivismo politico o infezioni epidemiologiche) rispetto agli zeri ("non eventi"). In molte letterature, queste variabili si sono rivelate difficili da spiegare e prevedere, un problema che sembra avere almeno due fonti. Innanzitutto, le procedure statistiche popolari, come la regressione logistica, possono sottovalutare nettamente la probabilità di eventi rari. Raccomandiamo correzioni che sovraperformano i metodi esistenti e cambiano le stime dei rischi assoluti e relativi di alcuni effetti stimati riportati in letteratura. In secondo luogo, le strategie di raccolta dati comunemente utilizzate sono gravemente inefficienti per i dati sugli eventi rari. La paura di raccogliere dati con un numero troppo limitato di eventi ha portato a raccolte di dati con un numero enorme di osservazioni ma relativamente poche, e variabili esplicative scarsamente misurate, come nei dati sui conflitti internazionali con più di un quarto di milione di diadi, solo alcune delle quali sono in guerra. A quanto pare, esistono progetti di campionamento più efficienti per fare inferenze valide, come campionare tutti gli eventi variabili (ad es. Guerre) e una piccola frazione di non eventi (pace). Ciò consente agli studiosi di risparmiare fino al 99% dei costi di raccolta dei dati (non risolti) o di raccogliere variabili esplicative molto più significative. Forniamo metodi che collegano questi due risultati, consentendo a entrambi i tipi di correzioni di funzionare contemporaneamente e software che implementa i metodi sviluppati. e variabili esplicative mal misurate, come nei dati sui conflitti internazionali con oltre un milione di diadi, solo alcune delle quali sono in guerra. A quanto pare, esistono progetti di campionamento più efficienti per fare inferenze valide, come campionare tutti gli eventi variabili (ad es. Guerre) e una piccola frazione di non eventi (pace). Ciò consente agli studiosi di risparmiare fino al 99% dei costi di raccolta dei dati (non risolti) o di raccogliere variabili esplicative molto più significative. Forniamo metodi che collegano questi due risultati, consentendo a entrambi i tipi di correzioni di funzionare contemporaneamente e software che implementa i metodi sviluppati. e variabili esplicative mal misurate, come nei dati sui conflitti internazionali con oltre un milione di diadi, solo alcune delle quali sono in guerra. A quanto pare, esistono progetti di campionamento più efficienti per fare inferenze valide, come campionare tutti gli eventi variabili (ad es. Guerre) e una piccola frazione di non eventi (pace). Ciò consente agli studiosi di risparmiare fino al 99% dei costi di raccolta dei dati (non risolti) o di raccogliere variabili esplicative molto più significative. Forniamo metodi che collegano questi due risultati, consentendo a entrambi i tipi di correzioni di funzionare contemporaneamente e software che implementa i metodi sviluppati. esistono progetti di campionamento più efficienti per fare inferenze valide, come campionare tutti gli eventi variabili (ad es. guerre) e una piccola frazione di non eventi (pace). Ciò consente agli studiosi di risparmiare fino al 99% dei costi di raccolta dei dati (non risolti) o di raccogliere variabili esplicative molto più significative. Forniamo metodi che collegano questi due risultati, consentendo a entrambi i tipi di correzioni di funzionare contemporaneamente e software che implementa i metodi sviluppati. esistono progetti di campionamento più efficienti per fare inferenze valide, come campionare tutti gli eventi variabili (ad es. guerre) e una piccola frazione di non eventi (pace). Ciò consente agli studiosi di risparmiare fino al 99% dei costi di raccolta dei dati (non risolti) o di raccogliere variabili esplicative molto più significative. Forniamo metodi che collegano questi due risultati, consentendo a entrambi i tipi di correzioni di funzionare contemporaneamente e software che implementa i metodi sviluppati.

Ecco un link al documento ... http://gking.harvard.edu/files/abs/0s-abs.shtml


Grazie, - se leggi l'articolo, suggeriscono qualcosa di importante oltre al sottocampionamento suggerito sopra?
LazyCat,

4
Questo è un buon documento, l'ho letto più di una volta! (+1) Penso che dovresti sottolineare che anche il documento è interessato all'inferenza. Ecco perché un GBM sarebbe meno utile per un politologo rispetto a un GLM. Ad esempio, se vengono utilizzate metodologie ad albero: " ... due algoritmi di partizionamento ricorsivo possono ottenere la stessa accuratezza di predizione ma, allo stesso tempo, rappresentare relazioni di regressione strutturalmente diverse, ovvero modelli diversi e quindi portare a conclusioni diverse sull'influenza di alcune covariate sulla risposta. "(Hothorn et al. 2006)
usεr11852 afferma Reinstate Monic il

2

Lo sviluppo di classificatori per set di dati con classi squilibrate è un problema comune nell'apprendimento automatico. I metodi basati sulla densità possono avere meriti significativi rispetto ai "classificatori tradizionali" in tale situazione.

Un metodo basato sulla densità stima la densità sconosciuta , dove è la classe più dominante (nel tuo esempio, ).CC={x:yi=0}p^(x|yC)CC={x:yi=0}

Una volta elaborata una stima della densità, è possibile prevedere la probabilità che un record di test invisibile appartenga o meno a questa stima della densità. Se la probabilità è sufficientemente piccola, inferiore a una soglia specificata (generalmente ottenuta attraverso una fase di validazione), allora , altrimenti* y ( x * ) C y ( x * ) Cxy^(x)Cy^(x)C

È possibile fare riferimento al seguente documento:

"Uno stimabile plug-in stimabile di set minimi di volume per il rilevamento di novità", C. Park, J. Huang e Y. Ding, Operations Research, 58 (5), 2013.


2

Questo è il tipo di problema in cui il rilevamento anomalie è un approccio utile. Questo è fondamentalmente ciò che Rodrigo ha descritto nella sua risposta, in cui si determina il profilo statistico della propria classe di allenamento e si imposta una soglia di probabilità oltre la quale si determina che le misurazioni future non appartengono a quella classe. Ecco un tutorial video , che dovrebbe iniziare. Una volta assorbito ciò, consiglierei di cercare la stima della densità del kernel.

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.