Classi squilibrate - Come ridurre al minimo i falsi negativi?


11

Ho un set di dati che ha un attributo di classe binaria. Ci sono 623 casi con classe +1 (positivo al cancro) e 101.671 casi con classe -1 (negativo al cancro).

Ho provato vari algoritmi (Naive Bayes, Random Forest, AODE, C4.5) e tutti hanno inaccettabili rapporti di falsi negativi. Random Forest ha la massima precisione di previsione complessiva (99,5%) e il più basso rapporto di falsi negativi, ma manca ancora il 79% delle classi positive (cioè non riesce a rilevare il 79% dei tumori maligni).

Qualche idea su come posso migliorare questa situazione?

Grazie!


Puoi dare un'occhiata a questa domanda in cui ho ricevuto risposte interessanti per questo problema. Cordiali saluti
Michael Hooreman,

Risposte:


9

Lo squilibrio di classe è un problema molto comune. È possibile sovracampionare la classe positiva (o sottocampionare il negativo) o aggiungere pesi di classe.

Un'altra cosa da ricordare in questo caso è che la precisione non è una metrica molto utile qui. Potresti considerare il punteggio AUC o F1 .

Modificare la soglia di decisione può sembrare interessante, ma ovviamente porterà (in questo caso probabilmente drasticamente) a un aumento dei falsi positivi (anche se forse i PF non sono così dannosi come gli FN nel caso della diagnosi medica, se i test non sono proibitivi).

Un'analisi più approfondita delle opzioni nel caso di classe di squilibrio è fornito qui .


3

Anche se la risposta nella realtà è sempre trueo false, puoi rendere gli attributi della tua classe non etichette ma numeri in virgola mobile, ovvero 1.0 e 0.0 (o 100 e 0). Cioè, puoi inquadrarlo è un problema di regressione , non un problema di classificazione.

Quindi anche l'output previsto sarà costituito da numeri su quello spettro, vale a dire probabilità non etichette. L'implementazione attuale equivale essenzialmente a un modello di regressione con una soglia di 0,5.

Con tale output, tu o il tuo cliente potete definire una soglia accettabile (ad es. 0,3). Naturalmente ci saranno più falsi positivi allora, ma per alcune applicazioni, come la rilevazione del cancro, questo è ottimale.

Il sovracampionamento (gli aspetti positivi) o il sottocampionamento (gli aspetti negativi) sono anche modi per risolvere questo problema, ma devono essere eseguiti in modo ponderato, possono sacrificare l'accuratezza e sacrificare ancora il controllo per spostare la soglia dopo aver creato i dati e la formazione.


0

Il sottocampionamento e il sovracampionamento come tecnica sono già stati menzionati, ma ho pensato di indicare una variante comunemente usata:

SMOTE : tecnica di sovracampionamento di minoranza sintetica

È stato presentato in questo documento nel 2002 . Ecco un frammento dell'abstract:

Questo documento mostra che una combinazione del nostro metodo di sovracampionamento della classe di minoranza (anormale) e di sottocampionamento della classe di maggioranza (normale) può ottenere prestazioni di classificazione migliori (nello spazio ROC) rispetto al sottocampionamento della classe di maggioranza.


Puoi usarlo facilmente in Python, usando il imbalanced-learnpacchetto , che è contenuto nel modulo contrib di Scikit-Learn e deve essere installato separatamente.

imbalanced-learn è un pacchetto python che offre una serie di tecniche di ricampionamento comunemente utilizzate nei set di dati che mostrano un forte squilibrio tra le classi.

Tale pacchetto include metodi per combinare il campionamento eccessivo / insufficiente, nonché una serie di utilità per generare lotti di dati che possono fluire in Keras / Tensorflow.

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.