西瓜书笔记(三)—— 第四章

149 阅读4分钟

第四章

基本流程

  • 决策树(判断树)
    • 一棵决策树包含
      • 一个根节点(样本全集)
      • 若干个内部节点
      • 若干个叶节点(决策结果)
    • 每个节点包含的样本集合根据属性测试的结果被划分到子结点中
    • 目的:为了产生一棵泛化能力强,即处理未见示例能力强的决策树,基本流程遵循“分而治之”策略
    • 特例
      • 决策树桩:仅有一层划分的决策树
    • 生成
      • 递归过程
      • 递归返回的三种情况
        1. 当前节点包含的样本集合为空
        2. 当前属性集为空,或是所有样本在所有属性上取值相同
        3. 当前节点包含的样本全属于同一类别

划分选择

目标:决策树的分支节点所包含的样本尽可能属于同一类别(提高“纯度”)

  1. 信息增益

    • 信息熵
      • 度量样本集合纯度最常用的一种指标
      • 熵值越小,纯度越高
    • 定义
      • 考虑到不同的分支节点所包含的样本数不同,在计算完信息熵后,给分支节点赋予权重,即样本数越多的分支结点的影响越大
      • 信息增益越大,表示使用该属性来进行划分所获得的纯度越大
    • 缺点:
      • 对可取值数目较多的属性有所偏好
  2. 增益率

    • 针对信息增益的缺点提出的
    • 缺点:对可取值数目较少的属性有所偏好
  3. 基尼指数

    • 从数据集中随机抽取两个样本,其类别标记不一致的概率
    • 基尼指数越小,纯度越高
    • 选择那个使得划分后基尼指数最小的属性,作为最优划分属性

剪枝处理

剪枝是决策树学习算法对付“过拟合”的主要手段

  • 预剪枝 vs 后剪枝(叶节点的选择)
    • 预剪枝
      • 在决策树生成过程中,对每个节点在划分前先进行预估,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点
      • 优点: 因为减少了分支的展开
        1. 降低了过拟合的风险
        2. 减少了决策树的训练时间开销和测试时间开销
      • 缺点: 由于本质是贪心,带来了欠拟合风险
    • 后剪枝
      • 先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点
      • 优点:欠拟合风险小,泛化性能往往优于预剪枝
      • 缺点:由于是在生成完全决策树之后,要再自底向上对树中的所有非叶节点进行逐一考察,导致训练时间开销要比预剪枝大得多

连续与缺失值

  • 连续值处理
    • 由于可取值数目不再有限,采用连续属性离散化技术
    • 需注意的是,与离散属性不同,若当前节点划分属性为连续属性,该属性还可作为其后代节点的划分属性
  • 缺失值处理
    • 不完整的样本,即样本的某些属性值缺失
    • 问题
      1. 如何在属性值缺失的情况下,进行划分属性选择?
        • 在该属性上没有缺失值的样本子集来判断
      2. 给定划分属性,若样本在该属性上的值缺失,如何对样本进行划分?
        • 让同一个样本以不同的概率划入到不同的子节点中去

多变量决策树

  • 单变量决策树

    把每个属性视为坐标空间中的一个坐标轴,对样本分类则意味着在这个坐标空间中寻找不同类样本之间的分类边界。决策树所形成的分类边界有一个明显的特点:轴平行(即它的分类边界由若干个与坐标轴平行的分段组成)

    • 优点:较好的可解释性(每一段划分都直接对应了某个属性的取值)
    • 缺点: 真实分类边界比较复杂时,必须使用很多段划分才能获得较好的近似
      • 决策树变得相当复杂
      • 进行大量的属性测试,预测时间开销也会很大
  • 多变量决策树(斜划分

    • 非叶节点不再是仅对某个属性,而是对属性的线性组合进行测试
    • 最优划分属性也不是对每一个非叶节点,而是试图建立一个合适的线性分器