When you classify using logit, this is what happens.
The logit predicts the probability of default (PD) of a loan, which is a number between 0 and 1. Next, you set a threshold D, such that you mark a loan to default if PD>D, and mark it as non-default if PD
Naturally, in a typical loan population PD<<1. So, in your case 7% is rather high probability of it's one year data (PDs are normally reported on annual basis). If this is multi year data, then we're talking about so called cumulative PD, in this case cumPD=7% is not a high number for 10 years of data, for instance. Hence, by any standards, I wouldn't say that your data set is problematic. I'd describe it at least typical for loan default data, if not great (in the sense that you have relative large number of defaults).
Now, suppose that your model predicting the following three levels of PD:
- 0.1 (563,426)
- 0.5 (20,000)
- 0.9 (31,932)
Suppose also that the actual defaults for these groups were:
Now you can set D to different values and see how the matrix changes. Let's use D = 0.4 first:
- Actual default, predict non-default: 0
- Actual default, predict default: 41,932
- Actual non-default, predict non-default: 563,426
- Actual non-default, predict default: 10,000
If you set D = 0.6:
- Actual default, predict non-default: 31,932
- Actual default, predict default: 10,000
- Actual non-default, predict non-default: 573,426
- Actual non-default, predict default: 0
If you set D = 0.99:
- Actual default, predict non-default: 41,932
- Actual default, predict default: 0
- Actual non-default, predict non-default: 573,426
- Actual non-default, predict default: 0
The last case is what you see in your model results. In this case I'm emphasizing the threshold D for a classifier. A simple in change in D may improve certain characteristics of your forecast. Note, that in all three cases the predicted PD remained the same, only the threshold D has changed.
It is also possible that your logit regression itself is crappy, of course. So, in this case you have at least two variables: the logit spec and the threshold. Both impact your forecast power.
predict
in sklearn on a probability model, it's useless. ALWAYS usepredict_proba
. $\endgroup$