J'exécute une analyse sur la probabilité de défaut de paiement en utilisant une régression logistique et des forêts aléatoires.
Lorsque j'utilise la régression logistique, la prédiction est toujours «1» (ce qui signifie un bon prêt). Je n'ai jamais vu cela auparavant et je ne sais pas par où commencer pour essayer de régler le problème. Il y a 22 colonnes avec 600K lignes. Lorsque je diminue le nombre de colonnes, j'obtiens le même résultat avec la régression logistique.
Pourquoi la régression logistique pourrait-elle être si mauvaise?
**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
en sklearn sur un modèle de probabilité, c'est inutile. TOUJOURS utiliserpredict_proba
.Réponses:
Eh bien, il est logique que votre modèle prédit toujours 1. Jetez un œil à votre ensemble de données: il est gravement déséquilibré en faveur de votre classe positive. La classe négative ne représente que ~ 7% de vos données. Essayez de rééquilibrer votre ensemble d'entraînement ou utilisez un algorithme sensible aux coûts.
la source
La réponse courte est que la régression logistique sert à estimer les probabilités , ni plus ni moins. Vous pouvez estimer les probabilités quel que soit le déséquilibreOui est. Les courbes ROC et certaines des autres mesures données dans la discussion n'aident pas. Si vous devez prendre une décision ou entreprendre une action, vous appliquez la fonction perte / utilité / coût au risque prévu et choisissez l'action qui optimise l'utilité attendue. Il semble que beaucoup d'utilisateurs de machine learning ne comprennent pas vraiment les risques et les décisions optimales.
la source
Lorsque vous classifiez à l'aide de logit, c'est ce qui se produit.
Le logit prédit la probabilité de défaut (PD) d'un prêt, qui est un nombre compris entre 0 et 1. Ensuite, vous définissez un seuil D, de sorte que vous marquez un prêt par défaut si PD> D, et le marquez comme non par défaut si PD
Naturellement, dans une population de prêt typique PD << 1. Donc, dans votre cas, 7% est une probabilité plutôt élevée de données sur un an (les PD sont normalement déclarés sur une base annuelle). S'il s'agit de données pluriannuelles, nous parlons alors de la PD dite cumulative, dans ce cas cumPD = 7% n'est pas un chiffre élevé pour 10 ans de données, par exemple. Par conséquent, selon aucune norme, je ne dirais pas que votre ensemble de données est problématique. Je le décrirais au moins typique pour les données de défaut de prêt, sinon génial (dans le sens où vous avez un nombre relativement élevé de défauts).
Supposons maintenant que votre modèle prédit les trois niveaux de DP suivants:
Supposons également que les valeurs par défaut réelles pour ces groupes soient:
Vous pouvez maintenant définir D sur différentes valeurs et voir comment la matrice change. Utilisons d'abord D = 0,4:
Si vous définissez D = 0,6:
Si vous définissez D = 0,99:
Le dernier cas est ce que vous voyez dans les résultats de votre modèle. Dans ce cas, je souligne le seuil D pour un classificateur. Un simple changement de D peut améliorer certaines caractéristiques de votre prévision. Notez que dans les trois cas, la PD prédite est restée la même, seul le seuil D a changé.
Il est également possible que votre régression logit elle-même soit merdique, bien sûr. Donc, dans ce cas, vous avez au moins deux variables: la spécification logit et le seuil. Les deux ont un impact sur votre puissance de prévision.
la source
Si le problème est bien le déséquilibre entre les classes, je commencerais simplement par équilibrer les poids des classes:
Ce paramétrage signifie que les pénalités pour les fausses prédictions dans la fonction de perte seront pondérées avec des proportions inverses aux fréquences des classes. Cela peut résoudre le problème que vous décrivez.
la source
Eh bien, sans plus d'informations, c'est difficile à dire, mais par la définition de la régression logistique, vous êtes saturé sur la base des données ajustées. Donc, dans l'équation, le terme e ^ -t va à 0. Donc, le premier endroit à regarder serait de voir quels sont les coefficients réels.
Cela pourrait également être dû à des variables mal mises à l'échelle. Il peut y avoir un problème où l'une des colonnes a une valeur numérique énorme par rapport à d'autres, ce qui la fait gâcher.
la source
Vous pouvez utiliser SMOTE pour équilibrer l'ensemble de données déséquilibré. Un bon document de référence est:
Lifeng Zhou, Hong Wang, Loan Default Prediction on Large Imbalanced Data Using Random Forests, TELKOMNIKA Indonesian Journal of Electrical Engineering, Vol.10, No.6, octobre 2012, pp. 1519 ~ 1525, lien .
la source