Hồi quy logistic cho 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

Xác suất vỡ nợ

  • Khả năng ai đó vỡ nợ khoản vay là xác suất vỡ nợ
  • Giá trị xác suất giữa 0 và 1, như 0.86
  • loan_status bằng 1 là vỡ nợ, 0 là không vỡ nợ
Mô hình hóa Rủi ro Tín dụng bằng Python

Xác suất vỡ nợ

  • Khả năng ai đó vỡ nợ khoản vay là xác suất vỡ nợ
  • Giá trị xác suất giữa 0 và 1, như 0.86
  • loan_status bằng 1 là vỡ nợ, 0 là không vỡ nợ
Xác suất vỡ nợ Diễn giải Trạng thái vay dự đoán
0.4 Ít có khả năng vỡ nợ 0
0.90 Rất có khả năng vỡ nợ 1
0.1 Rất ít có khả năng vỡ nợ 0
Mô hình hóa Rủi ro Tín dụng bằng Python

Dự đoán xác suất

  • Xác suất vỡ nợ là đầu ra của máy học
    • Học từ các cột dữ liệu (đặc trưng)
  • Mô hình phân loại (vỡ nợ, không vỡ nợ)
  • Hai mô hình phổ biến:
    • Hồi quy logistic
    • Cây quyết định

Ví dụ về hồi quy logistic và cây quyết định

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

Hồi quy logistic

  • Tương tự hồi quy tuyến tính, nhưng chỉ cho giá trị giữa 01

Công thức cho hồi quy tuyến tính và logistic

Ví dụ đồ thị hồi quy tuyến tính và logistic

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

Huấn luyện hồi quy logistic

  • Hồi quy logistic có trong gói scikit-learn
from sklearn.linear_model import LogisticRegression
  • Gọi như một hàm, có hoặc không tham số
clf_logistic = LogisticRegression(solver='lbfgs')
  • Dùng phương thức .fit() để huấn luyện
clf_logistic.fit(training_columns, np.ravel(training_labels))
  • Cột huấn luyện: tất cả cột trừ loan_status
  • Nhãn: loan_status (0,1)
Mô hình hóa Rủi ro Tín dụng bằng Python

Huấn luyện và kiểm thử

  • Toàn bộ dữ liệu thường được chia thành hai phần
Mô hình hóa Rủi ro Tín dụng bằng Python

Huấn luyện và kiểm thử

  • Toàn bộ dữ liệu thường được chia thành hai phần
Tập con dữ liệu Mục đích Tỷ lệ
Train Học từ dữ liệu để tạo dự đoán 60%
Test Kiểm thử trên dữ liệu mới, chưa thấy 40%
Mô hình hóa Rủi ro Tín dụng bằng Python

Tạo tập train và test

  • Tách dữ liệu thành cột huấn luyện và nhãn
X = cr_loan.drop('loan_status', axis = 1)
y = cr_loan[['loan_status']]
  • Dùng hàm train_test_split() có sẵn trong scikit-learn
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=123)
  • test_size: tỷ lệ dữ liệu cho tập test
  • random_state: seed ngẫu nhiên để tái lập
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...