一、决策树算法
- ID3 算法
- 核心概念:使用信息增益选择划分属性,信息增益是某个属性带来的熵增,其值越大,使用该属性划分获得的 “纯度提升” 越大。
- 缺点:对可取值数目较多的属性有所偏好,例如最优划分为 “编号” 这类属性。
- 示例数据:包含 7 条记录,涉及天气、温度、湿度、是否多云及是否出去玩等属性,用于演示算法应用。
- C4.5 算法
- 核心概念:采用信息增益率(信息增益 ÷ 自身熵)来选择划分属性,以改进 ID3 算法的不足。
- 示例数据:与 ID3 算法使用相同的 7 条记录数据。
- CART 算法
- 核心概念:通过基尼指数衡量数据集纯度,基尼指数 Gini (D) 反映从数据集 D 中随机抽取两个样本,其类别标记不一致的概率,p 越大,Gini (D) 越小,数据集纯度越高。
二、连续值处理
- 方法:采用贪婪算法,先对连续值进行排序,然后确定可能的分界点进行二分,这一过程实质是 “离散化”。
- 示例:对于 Taxable Income 的连续值 60、70、75、85、90、95、100、120、125、220,有 9 个可能的分界点,可分割为如 TaxIn<=80 和 TaxIn>80,或 TaxIn<=97.5 和 TaxIn>97.5 等情况。
三、决策树剪枝策略
- 剪枝原因:决策树过拟合风险大,理论上可完全分开数据,需通过剪枝避免过拟合。
- 预剪枝
- 定义:边建立决策树边进行剪枝的操作,更实用。
- 方式:可通过限制深度、叶子节点个数、叶子节点样本数、信息增益量等进行剪枝。
- 后剪枝
- 定义:建立完决策树后进行剪枝操作。
- 衡量标准:最终损失 = 自身的 GINI 系数值 +α× 叶子节点数量。
- α 越大,越不易过拟合,但结果可能欠佳。
- α 越小,更注重结果好坏,过拟合可能较严重。
- 示例:原分支 “色泽 =?” 剪枝前验证集精度 57.1%,剪枝后 71.4%,决策为剪枝;原分支 “纹理 =?” 剪枝前 42.9%,剪枝后 57.1%,决策为剪枝。
四、决策树代码实现
- 函数:
DecisionTreeClassifier()
用于创建决策树模型。 - 主要参数:
参数 | 说明 |
---|---|
criterion | 可选择 gini(基尼系数)或者 entropy(信息熵) |
splitter | 可选择 best(在所有特征中找最好的切分点)或者 random(在部分特征中找) |
max_features | 可设为 None(所有)、log2、sqrt、N |
max_depth | int or None, optional (default=None),设置决策树的最大深度,深度越大越易过拟合,推荐 5-20 之间 |
五、课堂练习
- 任务:使用决策树对泰坦尼克号幸存者进行预测。
关键问题
- 问题:ID3、C4.5、CART 三种决策树算法在划分属性选择上有何不同?
答案:ID3 算法使用信息增益选择划分属性,信息增益越大,纯度提升越大,但偏好可取值多的属性;C4.5 算法采用信息增益率(信息增益 ÷ 自身熵)来选择,以改进 ID3 的不足;CART 算法则通过基尼指数衡量数据集纯度,基尼指数越小,数据集纯度越高,以此选择划分属性。 - 问题:决策树为何需要剪枝?预剪枝和后剪枝有何区别?
答案:决策树过拟合风险很大,理论上可完全分开数据,剪枝是为了避免过拟合。预剪枝是边建立决策树边进行剪枝,更实用,可通过限制深度等方式实现;后剪枝是建立完决策树后进行剪枝,以最终损失(自身的 GINI 系数值 +α× 叶子节点数量)为衡量标准,α 大小影响过拟合和结果好坏。 - 问题:在决策树中,如何处理连续值属性?
答案:处理连续值属性采用贪婪算法,首先对连续值进行排序,然后确定可能的分界点进行二分,这一过程实质是 “离散化”。例如对于 Taxable Income 的连续值,排序后可找到多个分界点,将其分割为不同的区间。