决策树的实际案例
决策树作为一种直观、易解释的机器学习算法,在金融、医疗、电商、风控等多个领域都有广泛的实际应用。以下将讲解1个典型案例:贷款违约预测。
对于贷款违约预测,即在贷款人员在贷款之前对其进行预测,通过他的众多特征情况判别是否可以为其办理贷款业务及其可以办多少额度的贷款项目。
场景背景:
银行或金融机构在发放个人贷款时,需要评估申请人的还款能力和违约风险,避免因借款人违约导致的资金损失。传统风控依赖人工审核,效率低且主观性强,而决策树可通过历史数据自动构建风险评估模型。
核心需求:
基于申请人的基本信息(年龄、收入、职业)、信用记录(征信逾期次数、信用卡负债)、贷款信息(贷款金额、期限)等特征,预测其未来是否会违约(二分类问题:违约 / 不违约)。
决策树应用过程
数据收集与预处理
收集历史贷款用户数据,包括特征变量(如年龄、月收入、征信逾期次数、贷款金额、是否有房贷等)和目标变量(是否违约:1 = 违约,0 = 不违约)。处理缺失值(如用中位数填充收入缺失)、异常值(如剔除极端高收入样本)。
模型构建
用决策树算法对数据进行训练,通过递归划分特征空间:
第一层可能以 “征信逾期次数> 3 次” 为划分节点,将高逾期用户分到高风险分支;
低逾期分支再以 “月收入 < 5000 元” 划分,收入较低者进入次高风险分支;
最终叶子节点输出 “违约概率 80%” 或 “不违约概率 95%” 等结果。
实际价值
自动筛选高风险申请人,降低坏账率;
规则可视化,便于风控人员理解和调整策略。
代码实现:
import pandas as pd
import numpy as np
from sklearn import tree
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
data = pd.read_excel('客户数据.xlsx')
X = data.iloc[:,:-1]
y = data.iloc[:,-1]
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y ,test_size=0.2, random_state=42)
scores = []
sc = 0
dp = [5,6,7,8,9,10,11] # min_samples_leaf min_samples_split
msl = [5,8,9,10,11,12]
mss = [7,8,9,10,11,12]
mln = [5,6,7,8,9,10,11]
for a in dp:for b in msl:for c in mss:for d in mln:dtr = tree.DecisionTreeClassifier(criterion='gini', max_depth=a,min_samples_leaf=b,min_samples_split=c,max_leaf_nodes=d,random_state=42)score = cross_val_score(dtr, X_train, y_train, cv=3, scoring='recall')score_mean = sum(score) / len(score)if score_mean > sc:sc = score_meanscore_mean = score_meanbest = [a,b,c,d]
print(best)
# best_C = dp[np.argmax(scores)]
# print('最优深度为:{}'.format(best_C))
dtr = tree.DecisionTreeClassifier(criterion='gini', max_depth=best[0],min_samples_leaf=best[1],min_samples_split=best[2],max_leaf_nodes=best[3],random_state=42)
dtr.fit(X_train,y_train)
train_predicted = dtr.predict(X_train)
print(metrics.classification_report(y_train,train_predicted))
test_predicted = dtr.predict(X_test)
print(metrics.classification_report(y_test,test_predicted))
上述代码就是一个将数据带入一个简单的决策树模型进行对贷款人员的信息进行筛选评判获取可贷款人员,其中对决策树的模型进行了参数的交叉验证选出最优参数。
决策树凭借直观的规则、易解释性和广泛的适用性,在风控、医疗、营销等领域成为经典的 “开箱即用” 算法。实际应用中需结合业务场景选择合适的特征,通过剪枝、集成(如随机森林、GBDT)等方法优化性能,充分发挥其在 “将复杂问题转化为可执行规则” 上的优势。