Unausgeglichene Klassen - Wie kann man falsch negative Ergebnisse minimieren?

11

Ich habe einen Datensatz, der ein binäres Klassenattribut hat. Es gibt 623 Fälle mit Klasse +1 (krebspositiv) und 101.671 Fälle mit Klasse -1 (krebsnegativ).

Ich habe verschiedene Algorithmen ausprobiert (Naive Bayes, Random Forest, AODE, C4.5) und alle haben inakzeptable falsch negative Verhältnisse. Random Forest hat die höchste Gesamtprognosegenauigkeit (99,5%) und das niedrigste falsch-negative Verhältnis, verfehlt jedoch immer noch 79% der positiven Klassen (dh es werden 79% der bösartigen Tumoren nicht erkannt).

Irgendwelche Ideen, wie ich diese Situation verbessern kann?

Vielen Dank!

user798275
quelle
Sie können sich diese Frage ansehen, bei der ich interessante Antworten auf dieses Problem erhalten habe. Mit
freundlichen

Antworten:

9

Klassenungleichgewicht ist ein sehr häufiges Problem. Sie können entweder die positive Klasse über- (oder die negative unter-) oder Klassengewichte hinzufügen.

Eine andere Sache, an die Sie sich in diesem Fall erinnern sollten, ist, dass Genauigkeit hier keine sehr nützliche Metrik ist. Sie könnten AUC oder F1 Score berücksichtigen .

Das Ändern Ihrer Entscheidungsschwelle mag ansprechend erscheinen, führt jedoch offensichtlich (in diesem Fall wahrscheinlich drastisch) zu erhöhten Fehlalarmen (obwohl FPs bei medizinischen Diagnosen möglicherweise nicht so schlecht sind wie FNs, wenn Tests nicht unerschwinglich teuer sind).

Eine tiefer gehende Analyse der Optionen im Falle der Klasse Ungleichgewicht vorgesehen ist hier .

jamesmf
quelle
3

Obwohl die Antwort in der Realität immer trueoder ist false, können Sie Ihre Klassenattribute nicht als Beschriftungen, sondern als Gleitkommazahlen festlegen, dh 1,0 und 0,0 (oder 100 und 0). Das heißt, Sie können festlegen, dass es sich um ein Regressionsproblem handelt , nicht um ein Klassifizierungsproblem.

Dann wird die vorhergesagte Ausgabe ebenfalls Zahlen in diesem Spektrum sein, dh Wahrscheinlichkeiten, keine Bezeichnungen. Ihre aktuelle Implementierung entspricht im Wesentlichen einem Regressionsmodell mit einem Schwellenwert von 0,5.

Mit einer solchen Ausgabe können Sie oder Ihr Kunde einen akzeptablen Schwellenwert definieren (z. B. 0,3). Natürlich wird es dann mehr Fehlalarme geben, aber für einige Anwendungen, wie die Erkennung von Krebs, ist dies optimal.

Überabtastung (die positiven) oder Unterabtastung (die negativen) sind ebenfalls Möglichkeiten, dies zu beheben, müssen jedoch sorgfältig durchgeführt werden, können die Genauigkeit beeinträchtigen und opfern dennoch die Steuerung, um den Schwellenwert nach dem Erstellen der Daten und dem Training zu verschieben.

Adam Bittlingmayer
quelle
0

Unter- und Überabtastung als Technik wurden bereits erwähnt, aber ich dachte, ich würde auf eine häufig verwendete Variante verweisen:

SMOTE : Synthetic Minority Over-Sampling-Technik

Es wurde in diesem Papier im Jahr 2002 vorgestellt . Hier ist ein Ausschnitt aus der Zusammenfassung:

Dieses Papier zeigt, dass eine Kombination unserer Methode der Überabtastung der Minderheitsklasse (abnormal) und der Unterabtastung der Mehrheitsklasse (normal) eine bessere Klassifikatorleistung (im ROC-Raum) erzielen kann als nur eine Unterabtastung der Mehrheitsklasse.


Sie können es leicht in Python verwenden, mit dem imbalanced-learnPaket , das in dem enthalten ist contrib Modul von Scikit-Learn und muss separat installiert werden.

Imbalanced-Learn ist ein Python-Paket, das eine Reihe von Re-Sampling-Techniken bietet, die häufig in Datensätzen verwendet werden, die ein starkes Ungleichgewicht zwischen den Klassen aufweisen.

Dieses Paket enthält Methoden zum Kombinieren von Über- / Unterabtastung sowie eine Reihe von Dienstprogrammen zum Generieren von Datenstapeln, die in Keras / Tensorflow fließen können.

n1k31t4
quelle