使用 XGBoost 的梯度提升树

Python 信用风险建模

Michael Crabtree

Data Scientist, Ford Motor Company

决策树

  • 生成与逻辑回归相似的预测
  • 结构不同于回归

决策树示例

Python 信用风险建模

用于贷款状态的决策树

  • 用于预测 loan_status 违约概率的简单决策树

决策树预测示例

Python 信用风险建模

决策树的影响

决策树预测示例

Loan True loan status Pred. Loan Status Loan payoff value Selling Value Gain/Loss
1 0 1 $1,500 $250 -$1,250
2 0 1 $1,200 $250 -$950
Python 信用风险建模

一片森林

  • XGBoost 使用许多简单的树(集成)
  • 每棵树都只比抛硬币略好

树模型集成示例

Python 信用风险建模

创建与训练树

  • 属于 xgboost Python 包,此处简称 xgb
  • 与逻辑回归一样用 .fit() 训练
# 创建逻辑回归模型
clf_logistic = LogisticRegression()
# 训练逻辑回归
clf_logistic.fit(X_train, np.ravel(y_train))
# 创建梯度提升树模型
clf_gbt = xgb.XGBClassifier()
# 训练梯度提升树
clf_gbt.fit(X_train,np.ravel(y_train))
Python 信用风险建模

用 XGBoost 做违约预测

  • 可用 .predict().predict_proba() 预测
    • .predict_proba() 输出 01 之间的值
    • .predict()loan_status 输出 10
# 预测违约概率
gbt_preds_prob = clf_gbt.predict_proba(X_test)
# 将 loan_status 预测为 1 或 0
gbt_preds = clf_gbt.predict(X_test)
# gbt_preds_prob
array([[0.059, 0.940], [0.121, 0.989]])
# gbt_preds
array([1, 1, 0...])
Python 信用风险建模

梯度提升树的超参数

  • 超参数:无法从数据中学习到的模型设置
  • 梯度提升树常见超参数
    • learning_rate:更小使每步更保守
    • max_depth:限制每棵树的深度,越大越复杂
xgb.XGBClassifier(learning_rate = 0.2,
                  max_depth = 4)
Python 信用风险建模

Passons à la pratique !

Python 信用风险建模

Preparing Video For Download...