Tỷ lệ chấp nhận tín dụng

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

Michael Crabtree

Data Scientist, Ford Motor Company

Ngưỡng và trạng thái khoản vay

  • Trước đó ta đặt ngưỡng cho dải giá trị prob_default
    • Dùng để đổi loan_status dự đoán của khoản vay
preds_df['loan_status'] = preds_df['prob_default'].apply(lambda x: 1 if x > 0.4 else 0)
Loan prob_default threshold loan_status
1 0.25 0.4 0
2 0.42 0.4 1
3 0.75 0.4 1
Mô hình hóa Rủi ro Tín dụng bằng Python

Ngưỡng và tỷ lệ chấp nhận

  • Dùng dự đoán của mô hình để đặt ngưỡng tốt hơn
    • Cũng dùng để duyệt hay từ chối khoản vay mới
  • Với mọi khoản vay mới, ta muốn từ chối các trường hợp có khả năng vỡ nợ cao
    • Dùng dữ liệu kiểm tra như ví dụ về khoản vay mới
  • Tỷ lệ chấp nhận: phần trăm khoản vay mới được chấp nhận để giữ số vụ vỡ nợ trong danh mục ở mức thấp
    • Khoản vay được chấp nhận nhưng vỡ nợ có tác động tương tự false negative
Mô hình hóa Rủi ro Tín dụng bằng Python

Hiểu tỷ lệ chấp nhận

  • Ví dụ: Chấp nhận 85% khoản vay có prob_default thấp nhất

Biểu đồ tần suất của phân phối xác suất dự đoán

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

Tính ngưỡng

  • Tính giá trị ngưỡng cho tỷ lệ chấp nhận 85%
import numpy as np
# Compute the threshold for 85% acceptance rate
threshold = np.quantile(prob_default, 0.85)
0.804
Loan prob_default Threshold Predicted loan_status Accept or Reject
1 0.65 0.804 0 Accept
2 0.85 0.804 1 Reject
Mô hình hóa Rủi ro Tín dụng bằng Python

Áp dụng ngưỡng đã tính

  • Gán lại loan_status theo ngưỡng mới
# Compute the quantile on the probabilities of default
preds_df['loan_status'] = preds_df['prob_default'].apply(lambda x: 1 if x > 0.804 else 0)
Mô hình hóa Rủi ro Tín dụng bằng Python

Tỷ lệ xấu (Bad Rate)

  • Dù đã có ngưỡng, một số khoản vay được chấp nhận vẫn sẽ vỡ nợ
  • Đây là các khoản có prob_default gần vùng mô hình hiệu chỉnh kém

Biểu đồ cột các khoản vay được chấp nhận với phần có tỷ lệ xấu được tô sáng

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

Tính bad rate

Công thức tính bad rate

#Calculate the bad rate
np.sum(accepted_loans['true_loan_status']) / accepted_loans['true_loan_status'].count()
  • Nếu không vỡ nợ là 0, vỡ nợ là 1 thì sum() chính là số khoản vỡ nợ
  • .count() của một cột bằng số hàng của data frame
Mô hình hóa Rủi ro Tín dụng bằng Python

Vamos praticar!

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

Preparing Video For Download...