Modélisation du risque de crédit en Python
Michael Crabtree
Data Scientist, Ford Motor Company
loan_status sont les classes01y_train['loan_status'].value_counts()
| loan_status | Nombre (apprentissage) | Pourcentage du total |
|---|---|---|
| 0 | 13 798 | 78% |
| 1 | 3 877 | 22% |
xgboost utilisent la log-perte| Statut réel du prêt | Probabilité prédite | Log-perte |
|---|---|---|
| 1 | 0,1 | 2,3 |
| 0 | 0,9 | 2,3 |
| Personne | Montant du prêt | Profit potentiel | Statut prédit | Statut réel | Pertes |
|---|---|---|---|---|---|
| A | 1 000 $ | 10 $ | Défaut | Non-défaut | -10 $ |
| B | 1 000 $ | 10 $ | Non-défaut | Défaut | -1 000 $ |
| Méthode | Avantages | Inconvénients |
|---|---|---|
| Collecter plus de données | Augmente le nombre de défauts | Le pourcentage de défauts peut ne pas changer |
| Penaliser les modèles | Augmente le rappel pour les défauts | Modèle plus complexe à régler et maintenir |
| Échantillonner différemment | Ajustement le moins technique | Moins de défauts dans les données |
loan_status réel# Concat the training sets
X_y_train = pd.concat([X_train.reset_index(drop = True),
y_train.reset_index(drop = True)], axis = 1)
# Get the counts of defaults and non-defaults
count_nondefault, count_default = X_y_train['loan_status'].value_counts()
# Separate nondefaults and defaults
nondefaults = X_y_train[X_y_train['loan_status'] == 0]
defaults = X_y_train[X_y_train['loan_status'] == 1]
# Undersample the non-defaults using sample() in pandas
nondefaults_under = nondefaults.sample(count_default)
# Concat the undersampled non-defaults with the defaults
X_y_train_under = pd.concat([nondefaults_under.reset_index(drop = True),
defaults.reset_index(drop = True)], axis=0)
Modélisation du risque de crédit en Python