Ich führe eine Analyse der Wahrscheinlichkeit eines Kreditausfalls unter Verwendung logistischer Regression und zufälliger Wälder durch.
Wenn ich logistische Regression verwende, ist die Vorhersage immer '1' (was ein gutes Darlehen bedeutet). Ich habe das noch nie gesehen und weiß nicht, wo ich anfangen soll, um das Problem zu lösen. Es gibt 22 Spalten mit 600 KB Zeilen. Wenn ich die Anzahl der Spalten verringere, erhalte ich das gleiche Ergebnis mit logistischer Regression.
Warum könnte die logistische Regression so falsch sein?
**Actual from the data**
0 : 41932
1 : 573426
**Logistic regression output**
prediction for 1 when actually 0: 41932
prediction for 1 when actually 1:573426
A**s you can see, it always predicts a 1**
**Random forests does better:**
actual 0, pred 0 : 38800
actual 1, pred 0 : 27
actual 0, pred 1 : 3132
actual 1, pred 1 : 573399
predict
in sklearn auf einem Wahrscheinlichkeitsmodell, es ist nutzlos. IMMER verwendenpredict_proba
.Antworten:
Nun, es ist sinnvoll, dass Ihr Modell immer voraussagt. 1. Sehen Sie sich Ihren Datensatz an: Er ist zugunsten Ihrer positiven Klasse stark unausgewogen. Die negative Klasse macht nur ~ 7% Ihrer Daten aus. Versuchen Sie, Ihr Trainingsset neu auszugleichen, oder verwenden Sie einen kostensensitiven Algorithmus.
quelle
Die kurze Antwort lautet: Die logistische Regression dient der Schätzung von Wahrscheinlichkeiten , nicht mehr oder weniger. Sie können Wahrscheinlichkeiten schätzen, egal wie unausgeglichen ist. ROC-Kurven und einige der anderen in der Diskussion angegebenen Maßnahmen helfen nicht weiter. Wenn Sie eine Entscheidung treffen oder eine Aktion ausführen müssen, wenden Sie die Verlust- / Nutzen- / Kostenfunktion auf das vorhergesagte Risiko an und wählen die Aktion aus, die den erwarteten Nutzen optimiert. Es scheint, dass viele Benutzer des maschinellen Lernens Risiken und optimale Entscheidungen nicht wirklich verstehen.Y
quelle
Wenn Sie mit logit klassifizieren, geschieht Folgendes.
Das Protokoll sagt die Ausfallwahrscheinlichkeit (PD) eines Kredits voraus, die eine Zahl zwischen 0 und 1 ist. Als Nächstes legen Sie einen Schwellenwert D fest, sodass Sie einen Kredit als Standard markieren, wenn PD> D, und ihn als Nicht-Kredit markieren. Standard wenn PD
Natürlich in einer typischen Kreditpopulation PD << 1. In Ihrem Fall ist 7% also eine ziemlich hohe Wahrscheinlichkeit für Daten für ein Jahr (PDs werden normalerweise jährlich gemeldet). Wenn es sich um mehrjährige Daten handelt, handelt es sich um eine sogenannte kumulative PD. In diesem Fall ist cumPD = 7% beispielsweise für 10-jährige Daten keine hohe Zahl. Daher würde ich nach allen Maßstäben nicht sagen, dass Ihr Datensatz problematisch ist. Ich würde es zumindest typisch für Kreditausfalldaten beschreiben, wenn auch nicht großartig (in dem Sinne, dass Sie eine relativ große Anzahl von Ausfällen haben).
Angenommen, Ihr Modell sagt die folgenden drei PD-Ebenen voraus:
Angenommen, die tatsächlichen Standardeinstellungen für diese Gruppen waren:
Jetzt können Sie D auf verschiedene Werte setzen und sehen, wie sich die Matrix ändert. Verwenden wir zuerst D = 0,4:
Wenn Sie D = 0,6 einstellen:
Wenn Sie D = 0,99 einstellen:
Der letzte Fall ist das, was Sie in Ihren Modellergebnissen sehen. In diesem Fall betone ich den Schwellenwert D für einen Klassifikator. Eine einfache Änderung von D kann bestimmte Eigenschaften Ihrer Prognose verbessern. Es ist zu beachten, dass in allen drei Fällen die vorhergesagte PD gleich blieb, nur der Schwellenwert D hat sich geändert.
Es ist natürlich auch möglich, dass Ihre Logit-Regression selbst beschissen ist. In diesem Fall haben Sie also mindestens zwei Variablen: die Protokollspezifikation und den Schwellenwert. Beides wirkt sich auf Ihre Prognoseleistung aus.
quelle
Wenn das Problem tatsächlich das Ungleichgewicht zwischen den Klassen ist, würde ich einfach damit beginnen, die Klassengewichte auszugleichen:
Diese Parametereinstellung bedeutet, dass die Strafen für falsche Vorhersagen in der Verlustfunktion mit umgekehrten Proportionen zu den Häufigkeiten der Klassen gewichtet werden. Dies kann das von Ihnen beschriebene Problem lösen.
quelle
Nun, ohne weitere Informationen ist es schwer zu sagen, aber durch die Definition der logistischen Regression sättigen Sie basierend auf den angepassten Daten. In der Gleichung geht der e ^ -t-Term also auf 0. Der erste Ort, an dem man nachsehen muss, ist, zu sehen, wie die tatsächlichen Koeffizienten sind.
Dies könnte auch auf schlecht skalierte Variablen zurückzuführen sein. Möglicherweise liegt ein Problem vor, bei dem eine der Spalten im Vergleich zu anderen Spalten einen enormen numerischen Wert aufweist, was zu einem Durcheinander führt.
quelle
Sie können SMOTE verwenden, um den unausgeglichenen Datensatz auszugleichen. Ein gutes Referenzpapier ist:
Lifeng Zhou, Hong Wang, Kreditausfallvorhersage für große unausgeglichene Daten unter Verwendung zufälliger Wälder, TELKOMNIKA Indonesian Journal of Electrical Engineering, Band 10, Nr. 6, Oktober 2012, S. 1519–1525, Link .
quelle