Modelarea Riscului de Credit în Python
Michael Crabtree
Data Scientist, Ford Motor Company
loan_status reprezintă clasele01y_train['loan_status'].value_counts()
| loan_status | Număr în datele de antrenare | Procent din total |
|---|---|---|
| 0 | 13.798 | 78% |
| 1 | 3.877 | 22% |
xgboost utilizează log-loss ca funcție de pierdere| Statut real al creditului | Probabilitate prezisă | Log Loss |
|---|---|---|
| 1 | 0.1 | 2.3 |
| 0 | 0.9 | 2.3 |
| Persoană | Suma creditului | Profit potențial | Statut prezis | Statut real | Pierderi |
|---|---|---|---|---|---|
| A | 1.000 $ | 10 $ | Default | Non-Default | -10 $ |
| B | 1.000 $ | 10 $ | Non-Default | Default | -1.000 $ |
| Metodă | Avantaje | Dezavantaje |
|---|---|---|
| Colectare de date suplimentare | Crește numărul de default-uri | Procentul poate rămâne neschimbat |
| Penalizarea modelelor | Crește recall-ul pentru default-uri | Necesită ajustare și întreținere suplimentară |
| Eșantionare diferită | Ajustare tehnică minimă | Mai puține default-uri în date |
loan_status actual# 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)
Modelarea Riscului de Credit în Python