Pemodelan Risiko Kredit dengan Python
Michael Crabtree
Data Scientist, Ford Motor Company
loan_status adalah kelas01y_train['loan_status'].value_counts()
| loan_status | Jumlah Data Latih | Persentase dari Total |
|---|---|---|
| 0 | 13,798 | 78% |
| 1 | 3,877 | 22% |
xgboost memakai fungsi rugi log-loss| Status pinjaman benar | Probabilitas prediksi | Log Loss |
|---|---|---|
| 1 | 0.1 | 2.3 |
| 0 | 0.9 | 2.3 |
| Orang | Jumlah Pinjaman | Potensi Laba | Status Prediksi | Status Aktual | Kerugian |
|---|---|---|---|---|---|
| A | $1,000 | $10 | Gagal Bayar | Tidak Gagal Bayar | -$10 |
| B | $1,000 | $10 | Tidak Gagal Bayar | Gagal Bayar | -$1,000 |
| Metode | Kelebihan | Kekurangan |
|---|---|---|
| Kumpulkan lebih banyak data | Menambah jumlah gagal bayar | Persentase gagal bayar bisa tidak berubah |
| Penalti pada model | Meningkatkan recall untuk gagal bayar | Perlu tuning dan pemeliharaan lebih |
| Sampling data berbeda | Penyesuaian paling sederhana | Lebih sedikit gagal bayar dalam data |
loan_status aktual# 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 non-defaults menggunakan sample() di pandas
nondefaults_under = nondefaults.sample(count_default)
# Concat non-default yang di-undersample dengan default
X_y_train_under = pd.concat([nondefaults_under.reset_index(drop = True),
defaults.reset_index(drop = True)], axis=0)
Pemodelan Risiko Kredit dengan Python