一、学习背景与目的
在机器学习的众多算法中,决策树因结构直观、可解释性强,成为处理分类与回归问题的重要基础模型。本次学习围绕决策树的核心算法(ID3、C4.5、CART)、连续值处理方法及剪枝策略展开,旨在掌握决策树的原理与应用逻辑,为后续实践(如泰坦尼克号幸存者预测)奠定基础。
二、核心知识点总结
(一)三大经典决策树算法
三种算法的核心差异在于划分属性的选择标准,具体对比如下:
| 算法 | 核心划分准则 | 关键特点 | 局限性 / 改进点 |
|---|---|---|---|
| ID3 | 信息增益 | 信息增益越大,属性划分带来的 “纯度提升” 越高 | 对可取值多的属性(如 “编号”)有偏好,易导致过拟合 |
| C4.5 | 信息增益率 | 通过 “信息增益 ÷ 属性自身熵” 修正 ID3 的偏好问题,更平衡 | 计算复杂度高于 ID3,仍需处理连续值等场景 |
| CART | 基尼指数 | 反映数据集纯度:\(Gini(D)=1-\sum_{k=1}^{n}p_k^2\)(\(p_k\)为类k的概率),基尼指数越小,纯度越高 | 可同时处理分类与回归问题,划分时采用 “二分法” |
(二)连续值的处理方法
决策树默认处理离散属性,对连续属性(如 “收入”“温度”)需通过离散化转换,核心步骤基于 “贪婪算法”:
- 排序:将连续属性的所有取值按升序排列(如示例中 “Taxable Income” 排序为:60K、70K、75K、…、220K);
- 确定分界点:若有m个不同取值,可生成\(m-1\)个二分分界点(如 10 个取值对应 9 个分界点);
- 选择最优分界点:计算每个分界点的划分效果(如信息增益、基尼指数),选择最优者作为最终分割点(如示例中 “TaxIn≤97.5” 与 “TaxIn>97.5”)。
(三)剪枝策略:解决过拟合问题
决策树若不剪枝,理论上可完全拟合训练数据,但易因 “过度复杂” 导致泛化能力下降(过拟合)。剪枝分为预剪枝与后剪枝两类:
| 剪枝类型 | 操作时机 | 核心方法 | 优缺点 |
|---|---|---|---|
| 预剪枝 | 边构建决策树边剪枝 | 通过限制条件终止树的生长,如: - 限制树的最大深度; - 限制叶子节点的最少样本数; - 限制划分的最小信息增益 | 优点:操作简单、计算成本低; 缺点:可能因 “提前终止” 导致欠拟合 |
| 后剪枝 | 构建完决策树后剪枝 | 计算 “损失函数” 判断是否剪枝,公式为: 最终损失 = 自身基尼系数 +α× 叶子节点数量 (α 为正则化系数,α 越大越抑制过拟合,α 越小越注重模型精度) | 优点:泛化能力更强,不易欠拟合; 缺点:需遍历完整决策树,计算复杂度高 |
示例:对 “色泽 =?” 分支剪枝前,验证集精度为 57.1%,剪枝后提升至 71.4%,说明剪枝有效提升了模型泛化能力。
(四)决策树代码实现(基于 Python)
核心调用sklearn.tree.DecisionTreeClassifier(),关键参数含义如下:
| 参数 | 取值范围 | 作用 |
|---|---|---|
| criterion | gini(默认)、entropy | 指定划分准则:gini 对应 CART 算法,entropy 对应 ID3/C4.5 |
| splitter | best(默认)、random | 选择切分点的策略:best 遍历所有特征找最优,random 随机选部分特征 |
| max_depth | int/None | 限制树的最大深度,推荐 5-20(深度过大易过拟合) |
| max_features | None、log2、sqrt、N | 划分时考虑的最大特征数,None 表示使用所有特征 |
三、课堂练习思考:泰坦尼克号幸存者预测
(一)问题分析
预测目标为 “乘客是否幸存”(分类问题),需先确定特征变量(如乘客年龄、性别、船票等级、是否有亲属等),再通过决策树模型学习特征与 “幸存” 标签的关联。
(二)实现思路
- 数据预处理:处理缺失值(如年龄缺失可填充均值 / 中位数)、将离散特征(如性别、船票等级)编码,对连续特征(如年龄、票价)进行离散化;
- 模型训练:使用
DecisionTreeClassifier(),设置合适参数(如max_depth=10、criterion='gini'); - 模型优化:通过预剪枝(限制深度)或后剪枝(调整 α)降低过拟合风险,对比验证集精度选择最优模型;
- 结果分析:可视化决策树结构,观察关键决策节点(如 “性别是否为女性” 可能是影响幸存的重要因素)。
四、学习总结与疑问
(一)总结
- 决策树的核心是 “选择最优划分属性”,不同算法(ID3、C4.5、CART)通过不同准则(信息增益、信息增益率、基尼指数)实现这一目标;
- 连续值处理的本质是 “离散化”,需通过贪婪算法选择最优分界点;
- 剪枝是解决过拟合的关键,预剪枝侧重 “预防”,后剪枝侧重 “修正”,需根据场景选择;
- 代码实现中,参数调优(如
max_depth、criterion)对模型效果影响显著,需结合实践验证。
决策树算法学习与泰坦尼克号预测
1014

被折叠的 条评论
为什么被折叠?



