用 Logistic regression 預測違約機率

以 Python 進行信用風險建模

Michael Crabtree

Data Scientist, Ford Motor Company

違約機率

  • 借款人違約的可能性稱為違約機率。
  • 機率介於 0 到 1,如 0.86
  • loan_status1 表違約,0 表未違約。
以 Python 進行信用風險建模

違約機率

  • 借款人是否違約的可能性稱為違約機率。
  • 機率介於 0 到 1,如 0.86
  • loan_status1 表違約,0 表未違約。
違約機率 解讀 預測 loan status
0.4 不太可能違約 0
0.90 很可能違約 1
0.1 幾乎不會違約 0
以 Python 進行信用風險建模

機率預測

  • 機器學習可輸出違約機率作為結果。
    • 從欄位(特徵)中的資料學習。
  • 分類模型(違約、未違約)。
  • 兩種最常見模型:
    • Logistic regression
    • Decision tree

Logistic regression 與 decision tree 範例

以 Python 進行信用風險建模

Logistic regression

  • 與線性迴歸相似,但輸出僅介於 01 之間。

線性迴歸與邏輯斯迴歸的公式

線性迴歸與邏輯斯迴歸的圖例

以 Python 進行信用風險建模

訓練邏輯斯迴歸

  • scikit-learn 套件中提供 Logistic regression。
from sklearn.linear_model import LogisticRegression
  • 以函式方式呼叫,可帶參數或不帶參數。
clf_logistic = LogisticRegression(solver='lbfgs')
  • 使用 .fit() 方法進行訓練。
clf_logistic.fit(training_columns, np.ravel(training_labels))
  • 訓練欄位:資料中除 loan_status 之外的所有欄位。
  • 標籤:loan_status(0,1)。
以 Python 進行信用風險建模

訓練與測試

  • 通常會把整個資料集切成兩部分。
以 Python 進行信用風險建模

訓練與測試

  • 通常會把整個資料集切成兩部分。
子集合 用途 比例
Train 從資料學習以產生預測 60%
Test 用未見過的新資料測試學習成效 40%
以 Python 進行信用風險建模

建立訓練集與測試集

  • 將資料分成訓練用欄位與標籤。
X = cr_loan.drop('loan_status', axis = 1)
y = cr_loan[['loan_status']]
  • 使用 scikit-learn 內建的 train_test_split() 函式。
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=123)
  • test_size:測試集所占比例。
  • random_state:隨機種子,確保可重現。
以 Python 進行信用風險建模

一起來練習吧!

以 Python 進行信用風險建模

Preparing Video For Download...