4.1基本流程
4.1.1 定义
一般的,一颗决策树包含一个根节点、若干个内部节点和若干个叶节点;
叶节点:对应决策结果,即样本的label
根 + 内部节点:对应一个分割数据集方法,根据该方法将节点对应的数据集划分到子节点中。
根到叶节点的路径:对应一个判定序列
4.1.2 流程
和递归算法类似,先确定退出条件(设置叶节点):
- 该节点中数据集的label相同
- 属性集为空集,或者数据集的属性值相同
- 该节点的数据集为空集
条件1:label都相同了,直接将叶节点标记为该label即可
条件2:有数据,但无法根据属性继续划分。该叶节点label少数服从多数
条件3:无数据,根据父节点的样本label 少数服从多数
每次递归最核心的问题是 选取怎样划分规则,来划分当前节点对应的数据集
4.2划分选择
4.2.1 信息增益
信息熵:
本质:越混乱(随机事件越不确定),信息量越大
: label的集合
: 在数据集中label为k的样本占的比例
信息增益:
本质:划分前后,信息熵的减少值
红框为划分后子节点的信息熵的期望。
4.2.2 信息增率
存在一个badcase: 若每个样本在属性A上取值都不同,此时,根据该属性A划分,信息增益最大。但这样泛化性太差。
IV(a) :属性a的固有值(信息熵)。 a的属性值越多,IV(a)越大。
4.2.3 基尼指数
Gini(D) 反映了从数据集中随机抽取两个样本,其类label不同的概率.因此, Gini(D) 越小,则数据集的纯度越高.
4.3 剪枝处理
目标:降低过拟合,提高泛化性。
方式:根据在验证集上表现判断是否剪枝。
4.3.1 预剪枝
思想:在处理非叶节点时,判断划分该节点能否带来性能提升,有提升则划分,没有则不划分。
优点:只用一次建树,速度快
缺点:存在欠拟合风险
4.3.2 后剪枝
思想:先生成决策树,从底向上判断是否要将非叶节点替换为叶节点。
优点:相比预剪枝,会保留更多枝,学习更充分
缺点:训练开销大
4.4 连续与缺失
4.4.1 连续值处理
思想:
公式:
4.4.2 缺失值处理
4.5 多变量决策树
4.6 总结与个人理解:
选取怎样划分规则,来划分当前节点对应的数据集。为了解决这一问题4.2 - 4.5进行了分析。
个人理解,该问题可以分解为:
-
本层选取哪个(或哪几个)属性来划分数据集?
-
根据问题1中属性,划分几个子节点,怎么划分?
4.6.1针对问题1:
- 4.2节给出一层选一个属性的方案;
- 4.5节给出一层选多个属性的方案;
在4.2具体选择哪个一个属性,核心在于提升子节点的纯度。有三种判断方式
- 信息增益:信息熵下降的绝对值。
- 信息率:信息增益偏好属性值多的属性,增加了属性值的惩罚
- 基尼系数: 任选两个样本,label不相同的概率
4.6.2针对问题2:
- 4.2节处理属性都是离散的情况,认为每个属性值是一个子节点。
- 4.3节给出减少子节点个数的方式,从而提升泛化性。
- 4.4节处理的属性存在连续值,需要将连续值离散化,方法是根据数据集中该属性下的属性值做二分,选取信息增益最大的二分方法。个人理解也可以考虑n分,然后根据验证集上表现确定n的具体值。