Ich habe Lerndaten, die aus ~ 45.000 Stichproben bestehen, jede hat 21 Funktionen. Ich versuche, einen zufälligen Gesamtstrukturklassifizierer für diese Daten zu trainieren, der mit 3 Klassen (-1, 0 und 1) gekennzeichnet ist. Die Klassen sind in ihrer Größe mehr oder weniger gleich.
Mein zufälliges Waldklassifikatormodell verwendet gini
als Split-Qualitätskriterium, die Anzahl der Bäume beträgt 10, und ich habe die Tiefe eines Baums nicht begrenzt.
Die meisten Merkmale haben eine vernachlässigbare Bedeutung gezeigt - der Mittelwert liegt bei etwa 5%, ein Drittel von ihnen ist von Bedeutung 0, ein Drittel von ihnen ist von Bedeutung über dem Mittelwert.
Die vielleicht auffälligste Tatsache ist jedoch die oob-Punktzahl (out-of-bag): etwas weniger als 1%. Ich dachte, das Modell versagt, und als ich das Modell an einem neuen unabhängigen Satz mit einer Größe von ~ 40k testete, erhielt ich eine Punktzahl von 63% (klingt bisher gut), aber eine genauere Betrachtung der Verwirrungsmatrix hat mir gezeigt, dass die Das Modell ist nur für die Klasse 0 erfolgreich und schlägt in etwa 50% der Fälle fehl, wenn zwischen 1 und -1 entschieden wird.
Pythons Ausgabe im Anhang:
array([[ 7732, 185, 6259],
[ 390, 11506, 256],
[ 7442, 161, 6378]])
Dies liegt natürlich daran, dass die 0-Klasse spezielle Eigenschaften hat, die die Vorhersage erheblich erleichtern. Stimmt es jedoch, dass die von mir gefundene oob-Punktzahl bereits ein Zeichen dafür ist, dass das Modell nicht gut ist? Was ist ein guter oob Score für zufällige Wälder ? Gibt es ein Faustgesetz, mit dessen Hilfe festgestellt werden kann, ob ein Modell "gut" ist, allein anhand des OOB-Scores oder in Kombination mit anderen Ergebnissen des Modells?
Bearbeiten: Nach dem Entfernen fehlerhafter Daten (etwa ein Drittel der Daten) betrugen die Beschriftungen mehr oder weniger 2% für 0 und 49% für jeweils -1 / + 1. Der oob-Wert betrug 0,011 und der Wert für die Testdaten betrug 0,49, wobei die Verwirrungsmatrix kaum auf Klasse 1 ausgerichtet war (etwa 3/4 der Vorhersagen).
scikit
, es oob_score
ist eine Punktzahl, das heißt ein Maß für die Übereinstimmung. Ich konnte es jedoch nicht dokumentiert finden.