Dự đoán xác suất vỡ nợ

Mô hình hóa Rủi ro Tín dụng bằng Python

Michael Crabtree

Data Scientist, Ford Motor Company

Hệ số hồi quy logistic

# Hệ số chặn của mô hình
array([-3.30582292e-10])
# Hệ số cho ['loan_int_rate','person_emp_length','person_income']
array([[ 1.28517496e-09, -2.27622202e-09, -2.17211991e-05]])

Công thức xác suất vỡ nợ với hồi quy logistic

# Tính xác suất vỡ nợ
int_coef_sum = -3.3e-10 +
    (1.29e-09 * loan_int_rate) + (-2.28e-09 * person_emp_length) + (-2.17e-05 * person_income)
prob_default = 1 / (1 + np.exp(-int_coef_sum))
prob_nondefault = 1 - (1 / (1 + np.exp(-int_coef_sum)))
Mô hình hóa Rủi ro Tín dụng bằng Python

Diễn giải hệ số

# Hệ số chặn
intercept = -1.02
# Hệ số cho độ dài làm việc
person_emp_length_coef = -0.056
  • Mỗi khi person_emp_length tăng 1 năm, khả năng vỡ nợ giảm
Mô hình hóa Rủi ro Tín dụng bằng Python

Diễn giải hệ số

# Hệ số chặn
intercept = -1.02
# Hệ số cho độ dài làm việc
person_emp_length_coef = -0.056
  • Mỗi khi person_emp_length tăng 1 năm, khả năng vỡ nợ giảm
intercept person_emp_length value * coef probability of default
-1.02 10 (10 * -0.06) .17
-1.02 11 (11 * -0.06) .16
-1.02 12 (12 * -0.06) .15
Mô hình hóa Rủi ro Tín dụng bằng Python

Dùng cột không phải số

  • Số: loan_int_rate, person_emp_length, person_income

  • Không phải số:

    cr_loan_clean['loan_intent']
    
EDUCATION            
MEDICAL              
VENTURE              
PERSONAL             
DEBTCONSOLIDATION   
HOMEIMPROVEMENT
  • Sẽ gây lỗi với mô hình ML trong Python nếu không xử lý
Mô hình hóa Rủi ro Tín dụng bằng Python

One-hot encoding

  • Biểu diễn chuỗi bằng số

Ví dụ về loan intent trong dữ liệu

Mô hình hóa Rủi ro Tín dụng bằng Python

One-hot encoding

  • Biểu diễn chuỗi bằng số
  • 0 hoặc 1 trong cột mới column_VALUE

Ví dụ one-hot encoding cho cột loan intent

Mô hình hóa Rủi ro Tín dụng bằng Python

Get dummies

  • Dùng get_dummies() trong pandas
# Tách cột số
cred_num = cr_loan.select_dtypes(exclude=['object'])
# Tách cột không phải số
cred_cat = cr_loan.select_dtypes(include=['object'])
# One-hot encode cho các cột không phải số
cred_cat_onehot = pd.get_dummies(cred_cat)
# Ghép cột số với các cột đã one-hot
cr_loan = pd.concat([cred_num, cred_cat_onehot], axis=1)
Mô hình hóa Rủi ro Tín dụng bằng Python

Dự đoán tương lai, theo xác suất

  • Dùng phương thức .predict_proba() trong scikit-learn
# Huấn luyện mô hình
clf_logistic.fit(X_train, np.ravel(y_train))
# Dự đoán bằng mô hình
clf_logistic.predict_proba(X_test)
  • Trả về mảng xác suất vỡ nợ
# Xác suất: [[không vỡ nợ, vỡ nợ]]
array([[0.55, 0.45]])
Mô hình hóa Rủi ro Tín dụng bằng Python

Ayo berlatih!

Mô hình hóa Rủi ro Tín dụng bằng Python

Preparing Video For Download...