违约概率的逻辑回归

Python 信用风险建模

Michael Crabtree

Data Scientist, Ford Motor Company

违约概率

  • 某人违约的可能性即违约概率
  • 介于 0 到 1 的概率值,如 0.86
  • loan_status1 表示违约,0 表示未违约
Python 信用风险建模

违约概率

  • 某人违约的可能性即违约概率
  • 介于 0 到 1 的概率值,如 0.86
  • loan_status1 表示违约,0 表示未违约
违约概率 解释 预测贷款状态
0.4 不太可能违约 0
0.90 很可能违约 1
0.1 极不可能违约 0
Python 信用风险建模

预测概率

  • 违约概率可由机器学习输出
    • 从各列(特征)学习
  • 分类模型(违约/未违约)
  • 两个最常用模型:
    • 逻辑回归
    • 决策树

逻辑回归与决策树示例

Python 信用风险建模

逻辑回归

  • 类似线性回归,但输出仅在 01 之间

线性回归与逻辑回归公式

线性回归与逻辑回归示例图

Python 信用风险建模

训练逻辑回归

  • 逻辑回归在 scikit-learn 包中可用
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 信用风险建模

训练与测试

  • 通常将完整数据集拆分为两部分
数据子集 用途 比例
训练集 从数据学习以生成预测 60%
测试集 在未见过的新数据上检验学习效果 40%
Python 信用风险建模

创建训练集与测试集

  • 将数据分为训练特征与标签
X = cr_loan.drop('loan_status', axis = 1)
y = cr_loan[['loan_status']]
  • 使用 sci-kit 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 信用风险建模

Ayo berlatih!

Python 信用风险建模

Preparing Video For Download...