2014-10-06 20 views
14

Ecco una breve descrizione del mio problema:Trattare con lo squilibrio di classe nella classificazione binaria

  1. Sto lavorando su un sorvegliato imparare compito di formare un binario classificatore .
  2. Ho un set di dati con una grande classe squilibrio distribuzione: 8 istanze negative ciascuna positiva.
  3. Uso la f-measure, ovvero la media armonica tra specificità e sensibilità, per valutare le prestazioni di un classificatore.

I grafico ROC di diversi classificatori e tutti presentano una grande AUC, il che significa che la classificazione è buona. Tuttavia, quando provo il classificatore e computo la f-measure, ottengo un valore veramente basso. So che questo problema è causato dalla asimmetria classe del set di dati e, ormai, scopro due opzioni per affrontarla:

  1. l'adozione di un approccio economicamente sensibili assegnando pesi alle istanze del set di dati (vedere questo post)
  2. Thresholding le probabilità previste restituite dai classificatori, per ridurre il numero di falsi positivi e falsi negativi.

Sono andato per la prima opzione e questo ha risolto il mio problema (f-misura è soddisfacente). MA, ora, la mia domanda è: quale di questi metodi è preferibile? E quali sono le differenze?

P.S: Sto usando Python con la libreria di scikit-learn.

+1

Questo è più di una questione statistica piuttosto che di programmazione. Inoltre, non è chiaro come siano stati costruiti questi modelli. Quanto è grande il tuo set di dati? Hai usato il curriculum stratificato o sei sicuro di non sovrasfruttare i tuoi modelli (quindi bassi valori di F)? Detto questo, in genere mi piacerebbe rimandare al ** sensibile al costo ** in quanto il metodo ** thresholding ** è più soggettivo per l'utente che specifica il cuttoff (IMHO). – cdeterman

+0

Ho 3000 istanze e sì, io uso un CV stratificato 10 volte per evitare il sovradattamento. – blueSurfer

+0

Ho avuto problemi di classificazione binaria in cui c'era un'asimmetria del 97%/3%. Il bilanciamento del numero di casi per la formazione ha migliorato notevolmente la previsione del 3%. Non avevo ancora provato le soglie nei miei classificatori. –

risposta

26

Sia la ponderazione (sensibile ai costi) che la soglia sono forme valide di apprendimento sensibile ai costi. Nei termini più brevi, si può pensare due come segue:

ponderazione

In sostanza si sta affermando che il ‘costo’ dovuto all'errata classificazione della classe rara è peggiore dovuto all'errata classificazione della classe comune. Questo è applicato a livello algoritmico in algoritmi come SVM, ANN e Foresta casuale. Le limitazioni qui consistono nel determinare se l'algoritmo può gestire i pesi. Inoltre, molte applicazioni di questo stanno cercando di affrontare l'idea di fare una classificazione errata più seria (ad esempio, classificando qualcuno che ha il cancro al pancreas come non avendo il cancro). In tali circostanze, è conoscere perché si desidera assicurarsi di classificare classi specifiche anche in impostazioni sbilanciate. Idealmente, si desidera ottimizzare i parametri di costo come si farebbe con qualsiasi altro parametro del modello.

Thresholding

Se l'algoritmo restituisce probabilità (o qualche altro punteggio), della soglia può essere applicato dopo un modello è stato costruito. In sostanza si modifica la soglia di classificazione da 50-50 a un livello di trade-off appropriato. Questo può essere in genere ottimizzato generando una curva della metrica di valutazione (ad esempio F-measure). La limitazione qui è che stai facendo dei compromessi assoluti. Qualsiasi modifica nel taglio ridurrà a sua volta la precisione di previsione dell'altra classe.Se si dispone di probabilità eccessivamente elevate per la maggior parte delle classi comuni (ad es. Più sopra 0.85) è più probabile che si abbia successo con questo metodo. È anche indipendente dall'algoritmo (a condizione che l'algoritmo restituisca probabilità).

campionamento

campionamento è un'altra opzione comune applicato a insiemi di dati squilibrate per portare un certo equilibrio per le distribuzioni di classe. Esistono essenzialmente due approcci fondamentali.

Sotto-campionamento

estrarre un insieme ridotto di istanze maggioranza e mantenere la minoranza. Ciò si tradurrà in un set di dati più piccolo in cui la distribuzione tra le classi è più vicina; tuttavia, hai scartato i dati che potrebbero essere stati preziosi. Questo potrebbe anche essere utile se hai una grande quantità di dati.

Over-campionamento

aumentare il numero di casi di minoranza da loro replicando. Ciò si tradurrà in un set di dati più grande che conserva tutti i dati originali ma può introdurre pregiudizi. Man mano che si aumenta la dimensione, tuttavia, si può iniziare a influire anche sulle prestazioni computazionali.

Metodi avanzati

Ci sono altri metodi che sono più ‘sofisticate’ per aiutare ad affrontare potenziali bias. Questi includono metodi come SMOTE, SMOTEBoost e EasyEnsemble come indicato in questo prior question per i set di dati sbilanciati e CSL.

costruzione di modello

Un altro nota per quanto riguarda la costruzione di modelli con dati squilibrata è che si dovrebbe tenere a mente il vostro modello di metrica. Ad esempio, le metriche come le F-misure non tengono conto del vero tasso negativo. Pertanto, è spesso consigliabile che nelle impostazioni sbilanciate vengano utilizzate metriche come Cohen’s kappa metric.

+0

Vorrei anche aggiungere che down/up-sampling è una terza opzione. Buttare via la classe di maggioranza fino a quando non si ha uno split 50/50 (o una divisione uniforme nel caso multi-classe). Questo è meno attraente teoricamente del peso, ma ha vantaggi pragmatici se si hanno molti dati. –

+0

@BenAllison, sei corretto, il sopra/sotto-campionamento sono altre opzioni. Ho omesso dato che la domanda riguardava solo la ponderazione e la soglia. Ho aggiunto una parte relativa al campionamento per essere più approfondita. – cdeterman

Problemi correlati