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!
Antworten:
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 .
quelle
Obwohl die Antwort in der Realität immer
true
oder istfalse
, 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.
quelle
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:
Sie können es leicht in Python verwenden, mit dem
imbalanced-learn
Paket , das in dem enthalten ist contrib Modul von Scikit-Learn und muss separat installiert werden.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.
quelle