决策树算法概述
- 介绍了三种决策树算法:ID3、C4.5、CART。
- ID3算法:通过信息增益评估特征选择,信息增益越大,特征划分效果越好。
- C4.5算法:引入信息增益率(信息增益除以自身熵),缓解ID3对稀疏矩阵的偏好问题。
- CART算法:基于基尼系数评估特征,基尼系数越小,纯度越高,适用于连续值和分类问题。
连续值处理
- 连续值可通过设定阈值转换为分类问题(如大于/小于某值),类似逻辑回归的思想。
- 示例:成绩阈值设为60分,将回归问题转换为分类问题(及格/不及格)。
决策树剪枝策略
- 预剪枝:边构建树边剪枝,通过限制深度、叶子节点数、信息增益量等防止过拟合。
- 后剪枝:先完整构建树,再通过损失函数(如基尼系数+叶子节点数×α)剪枝,α为可调参数,控制剪枝强度。
过拟合与泛化能力
- 决策树易过拟合,需通过剪枝平衡模型复杂度。
- 泛化能力指模型适应新数据的能力,决策树泛化能力较弱,需结合业务场景调整。
代码实现与参数
- 使用基尼系数或信息熵作为分裂标准。
- 特征选择策略:
best
(全局最优切分点)或random
(随机子集最优切分点)。
讨论与答疑
- 解释了稀疏矩阵下ID3算法的局限性及C4.5的改进。
- 强调α(剪枝参数)需根据实际数据调整,通常取适中值以平衡过拟合与准确率。
随机森林与决策树铺垫
- 讨论随机森林中寻找最佳切分点的重要性,强调若使用相同数据集和切分点会导致决策树完全相同,失去集成学习意义。
- 关键参数包括:最大特征数(参考特征数量)、最大深度(预剪枝策略一致)。
泰坦尼克号数据集预测
- 数据集内容:乘客ID、年龄、性别、存活标签(1为幸存,0为死亡)。
- 数据预处理:
- 删除无关列(如姓名、票号)及缺失值过多的列(如船舱号)。
- 填充年龄缺失值(均值填充),删除港口缺失行(仅2条)。
- 分类变量(如性别、港口)转换为数值型(如性别:0/1,港口:0/1/2)。
模型训练与评估
- 数据切分:训练集70%、测试集30%,分离特征与标签。
- 决策树分类器:
- 初始准确率73.4%,十折交叉验证略高(因数据重复使用导致虚高)。
- 网格搜索法优化超参数(最大深度、切分策略、最小样本数等),最优参数组合:
- 最大深度=6、信息增益切分、最小混乱度下降=0、最小叶子样本数=5。
- 最终模型准确率82%,存在过拟合(训练集91% vs 测试集82%)。
## **关键概念与注意事项**
* **过拟合处理**:通过预剪枝(限制深度)或后剪枝调整。
* **网格搜索法**:替代多重循环,高效遍历超参数组合。
* **鲁棒性**:Python因封装函数多、调用便捷,适合快速开发。
* **离散特征处理**:稀疏特征(如姓名)需删除或转换,避免干扰模型。
## **代码实现要点**
* 使用`pandas`处理数据,`sklearn`调用决策树分类器。
* 绘图展示深度与准确率关系,验证过拟合现象。
* 强调特征工程重要性(如性别、年龄对存活率的影响)。
总结:
文档围绕决策树算法 展开,介绍了 ID3、C4.5、CART 三种算法,ID3 用信息增益 选划分属性,却偏好可取值多的属性;C4.5 采用信息增益率 (信息增益 ÷ 自身熵)改进;CART 以基尼指数衡量数据集纯度。还涉及连续值处理(用贪婪算法离散化)、剪枝策略(预剪枝和后剪枝,预剪枝边建边剪,后剪枝基于损失函数等衡量)、代码实现参数及课堂练习。