机器学习二:决策树构建
基于 ID3 与 C4.5 算法的贷款决策树实现与分析
问题引入:如何科学地进行贷款审批决策?
在金融信贷领域,贷款审批是一项关键业务。传统审批流程往往依赖人工经验,存在效率低、主观性强等问题。例如,信贷员需要综合考虑申请人的年龄、职业稳定性、资产状况和信用记录等多方面因素,最终判断是否批准贷款。
这种人工决策模式可能导致:
- 标准不统一,不同信贷员对同一申请人可能做出不同判断
- 效率低下,无法快速处理大量申请
- 经验难以传承,新员工需要长期培训才能胜任
决策树算法为解决这类问题提供了理想方案。它能从历史审批数据中自动学习决策规则,形成可视化的决策流程,既保留了决策的可解释性,又能实现快速一致的判断。本文将通过实现 ID3 和 C4.5 两种经典决策树算法,构建一个自动化贷款审批模型。
图一:是否贷款的身份信息
基本原理:决策树的核心思想
决策树是一种基于树状结构的分类模型,它通过一系列判断条件(特征)将数据逐步划分,最终得到分类结果。其核心思想包括:
- 树结构组成:由根节点(初始特征)、内部节点(中间判断条件)、叶节点(最终决策)和分支(特征取值)组成
- 划分依据:通过计算 "不纯度" 相关指标(如熵、信息增益)选择最优划分特征
- 递归构建:从根节点开始,每次选择最佳特征划分数据,直到满足终止条件(如所有样本属于同一类别或无特征可分)
决策树的优势在于:
- 可解释性强,决策过程直观可见
- 无需复杂的数据预处理
- 能处理混合类型数据
- 训练速度快,预测效率高
算法讲解:ID3 与 C4.5 的实现细节
1. 信息熵与信息增益(ID3 算法)
ID3 算法使用信息增益作为特征选择的标准,其核心概念包括:
-
信息熵:衡量数据集纯度的指标,熵值越低表示数据越纯\(Entropy(D) = -\sum_{k=1}^{|y|} p_k \log_2 p_k\)其中\(p_k\)是第 k 类样本在数据集 D 中的比例
-
条件熵:已知某特征取值情况下的熵\(H(D|A) = \sum_{v=1}^V \frac{|D^v|}{|D|} Entropy(D^v)\)
-
信息增益:特征 A 对数据集 D 的信息增益为熵与条件熵的差值\(Gain(D,A) = Entropy(D) - H(D|A)\)
ID3 算法选择信息增益最大的特征作为当前节点的划分特征。
2. 信息增益比(C4.5 算法)
C4.5 算法是 ID3 的改进版,主要解决 ID3 对取值较多特征的偏好问题,使用信息增益比作为选择标准:
\(Gain\_ratio(D,A) = \frac{Gain(D,A)}{IV(A)}\)
其中\(IV(A)\)是特征 A 的固有值(Intrinsic Value):\(IV(A) = -\sum_{v=1}^V \frac{|D^v|}{|D|} \log_2 \frac{|D^v|}{|D|}\)
固有值会随着特征取值数目的增加而增大,从而抵消了多取值特征的优势。
3. 算法实现关键步骤
python
运行
# 核心代码结构解析
class DecisionTree:
def __init__(self, algorithm='ID3'):
self.algorithm = algorithm # 选择ID3或C4.5
self.tree = None # 存储构建的决策树
# 计算信息熵
def calc_entropy(self, y):
# 实现熵计算公式,处理空数据集情况
# 计算条件熵
def calc_conditional_entropy(self, X, y, feature_idx):
# 按特征取值划分数据并计算条件熵
# 选择最优特征
def select_best_feature(self, X, y):
if self.algorithm == 'ID3':
# 使用信息增益选择特征
else:
# 使用信息增益比选择特征
# 递归构建决策树
def build_tree(self, X, y, feature_indices):
# 实现递归树构建,包含终止条件判断
结果演示:贷款决策树的可视化与分析
1. 数据集说明
实验使用的贷款申请数据集包含 4 个特征和 1 个标签:
- 年龄段(0: 青年,1: 中年,2: 老年)
- 有工作(0: 否,1: 是)
- 有自己的房子(0: 否,1: 是)
- 信贷情况(0: 一般,1: 好,2: 非常好)
- 标签(0: 不给贷款,1: 给贷款)
2. ID3 决策树结果
ID3 算法构建的决策树结构如下:
python
运行
{
'有自己的房子': {
'是': 1,
'否': {
'有工作': {
'是': 1,
'否': 0
}
}
}
}

图二:可视化结果显示,ID3 算法首先选择 "有自己的房子" 作为根节点:
- 有房者直接批准贷款
- 无房者进一步判断是否有工作:有工作则批准,无工作则拒绝
3. C4.5 决策树结果
C4.5 算法构建的决策树与 ID3 完全相同,这是因为在本数据集上,信息增益和信息增益比选择的最优特征一致。对于更复杂的数据集,两者可能会产生不同的树结构。

图三:C4.5决策树可视化
4. 决策树分析
从构建的决策树可以得出贷款审批的核心规则:
- 房产是最重要的判断依据(信息增益最大)
- 在没有房产的情况下,稳定工作成为关键因素
- 年龄和信贷情况在本数据集中未成为决策节点(对贷款审批影响较小)
这一结果符合实际信贷业务逻辑 —— 抵押资产(房产)和还款能力(工作)是贷款审批的核心考量因素。
总结与展望
主要结论
- 决策树算法能有效从数据中学习贷款审批规则,形成可解释的决策模型
- ID3 和 C4.5 算法在简单数据集上可能产生相同结果,但 C4.5 在处理多取值特征时更稳健
- 可视化的决策树可直接作为业务指南,帮助信贷员快速做出判断
算法局限
- 决策树容易过拟合,对噪声数据敏感
- 倾向于选择多取值特征(ID3 尤为明显)
- 为贪心算法,可能无法找到全局最优解
改进方向
- 引入剪枝技术(预剪枝、后剪枝)防止过拟合
- 使用 CART 算法处理回归问题,扩展应用场景
- 结合集成学习(随机森林、梯度提升树)提高模型性能
决策树作为一种经典的机器学习算法,在信贷风控、医疗诊断、客户分类等领域具有广泛应用。通过理解其原理并掌握实现方法,我们可以构建出既高效又易于解释的智能决策系统。
更多推荐
所有评论(0)