决策树学习总结

一、决策树主要算法

  1. ID3 算法
    • 核心依据是信息增益,信息增益越大,使用该属性划分获得的 "纯度提升" 越大,故以此选择划分属性。
    • 存在局限性,信息增益准则对可取值数目较多的属性有所偏好,例如在某些情况下可能会将 "编号" 作为最优划分。
  2. C4.5 算法
    • 采用信息增益率来选择划分属性,信息增益率为信息增益除以该属性自身的熵,一定程度上弥补了 ID3 算法的不足。
    • 信息增益率:信息增益/自身熵
  3. CART 算法
    • 以基尼指数作为划分依据,基尼指数 Gini (D) 反映了从数据集 D 中随机抽取两个样本,其类别标记不一致的概率。
    • 数据集的纯度与基尼指数成反比,即 p 越大,Gini (D) 越小,数据集 D 的纯度越高。

二、特殊情况处理

对于连续值,可采用贪婪算法进行处理,具体步骤如下:

  1. 先对连续值进行排序。
  2. 若进行 "二分",可得到多个分界点,通过选择合适的分界点将连续值进行离散化,从而应用于决策树的划分。

三、剪枝策略

  1. 剪枝原因:决策树过拟合风险很大,理论上可以完全分离开数据,通过剪枝可降低过拟合风险。
  2. 预剪枝 :边建立决策树边进行剪枝,更具实用性。可通过限制深度、叶子节点个数、叶子节点样本数、信息增益量等方式实现。
  3. 后剪枝 :建立完决策树后进行剪枝操作。衡量标准为最终损失 = 自身的 GINI 系数值 +α× 叶子节点数量,其中 α 的大小影响剪枝效果:α 越大,越不易过拟合,但结果可能欠佳;α 越小,更注重结果好坏,过拟合可能较难控制。

四、决策树代码实现相关参数

DecisionTreeClassifier()中,主要参数包括:

  • criterion:可选择 gini(基尼系数)或者 entropy(信息熵)。
  • splitter:可选择 best(在所有特征中找最好的切分点)或者 random(在部分特征中找切分点)。
  • max_features:可设置为 None(所有)、log2、sqrt、N 等。
  • max_depth:为 int 或 None,默认 None,用于设置决策树的最大深度,深度越大越容易过拟合,推荐深度在 5-20 之间。

五、练习

今天的课堂练习,使用决策树对泰坦尼克号幸存者进行预测

通过本次学习,对决策树的主要算法、特殊情况处理、剪枝策略、代码实现参数及实践应用有了较为全面的认识,为后续进一步深入学习和应用决策树奠定了基础。