2015-12-28 8 views
5

Sto utilizzando TensorFlow LinearClassifier e anche DNN per classificare un set di dati di due classi.Classificazione Tensorflow con serie di dati estremamente sbilanciata

Tuttavia, il problema è che il set di dati contiene il 96% di output positivo e il 4% di output negativo e il mio programma restituisce sempre la previsione come positiva. Naturalmente, in questo caso otterrò l'accuratezza del 96%, ma non ha alcun senso.

Qual è il modo migliore per gestire questo tipo di situazione?

+0

Utilizzare il sovracampionamento di minoranza. – Riyaz

risposta

4

Si potrebbe provare a modificare la funzione di costo in modo che un risultato positivo falso sarebbe penalizzato più pesantemente di un falso negativo.

+0

Ciao, in DNN, che tipo di funzione di attivazione mi fornirà questa funzione? Grazie – mamatv

+1

@mamatv Non è una funzione di attivazione. La funzione di costo è il tuo obiettivo di ottimizzazione. La maggior parte delle volte si tratta di cross-entropy (CE) o errore medio quadrato (MSE) –

+0

Quando si ottiene un numero sufficiente di rappresentanti, è possibile eliminare questa risposta e renderla un commento. Ti ho dato un upvote per farti avvicinare a 50 rep, ma non voglio che la gente pensi che ti ho dato un upvote perché considero questa la risposta migliore. –

3

Ecco cosa si può fare, con le soluzioni più semplici primi:

  1. È possibile costruire minibatches che assaggiare le classi altrettanto e poi ri-calibrare il modello in fase di test.
  2. È possibile reweight gli esempi per favorire i negativi
  3. È possibile utilizzare una perdita cerniera al posto di una perdita di registro che potrebbe essere più robusta per i dati sbilanciati in quanto sarebbe ottenere nessun gradiente quando un esempio è corretta al di là del margine di
  4. è possibile esplorare qualche altra funzione di perdita che tratta i diversi tipi di errori asimmetrico
+0

Ciao, penso che inizierò con le classi ponderate. Sai come potrei iniziare con tensorflow? – mamatv

2

si può imparare un auto-encoder sugli esempi negativi che avete (se il loro numero è una specie di grandi dimensioni) e quindi generare esempi utilizzando una tecnica di deduzione come variational Bayes o Markov Chain Monte Carlo. In questo modo è possibile aumentare il numero di campioni per gli esempi negativi e il tipo di spostamento verso un set di dati più equilibrato.

Problemi correlati