决策树ID3与C4.5
参考极客时间<数据分析实战45讲>17章
决策树的生成
决策树的生成会经历两个阶段:构造和剪枝
构造
构造就是生成一颗完整的决策树.简单来说,构造的过程就是选择什么属性作为节点的过程,在构造过程中会存在三种节点:
- 根节点:决策树最开始的节点
- 内部节点:决策树中间的节点
- 叶节点:决策树最底部的节点
在构造的过程中需要解决三个重要的问题:
- 1.选择哪个属性作为根节点
- 2.选择哪些属性作为子节点
- 3.什么时候停止并得到目标节点状态,即叶节点
剪枝
剪枝就是给决策树瘦身,使不需要太多的判断的同时能得到不错的结果,防止过拟合现象的发生.剪枝又分为预剪枝和后剪枝.
预剪枝是在决策树构造时就进行剪枝.方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点当做叶节点,不对其进行划分.
后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估.如果减掉这个节点子树,与保留该节点子树在分类上准确性差别不大或有所提升,那么就可以把该节点子树进行剪枝.方法是:用这个节点子树的叶子节点来替代该节点,类标记为这个节点子树中最频繁的那个类.
节点选择
给出一个打篮球的数据集如下:
天气 | 温度 | 湿度 | 刮风 | 是否打篮球 |
---|---|---|---|---|
晴 | 高 | 中 | 否 | 否 |
晴 | 高 | 中 | 是 | 否 |
阴 | 高 | 高 | 否 | 是 |
小雨 | 高 | 高 | 否 | 是 |
小雨 | 低 | 高 | 否 | 是 |
晴天 | 中 | 中 | 是 | 是 |
阴天 | 中 | 高 | 是 | 否 |
在这个探讨将那个属性(天气,温度,湿度,刮风)作为根节点的关键问题,这里是根据纯度和信息熵进行选择的,在纯度和信息熵之间有关联关系:纯度越低,信息熵越大;纯度越高,信息熵越小.
关于的纯度和信息熵的具体信息和数学公式在极客时间-数据分析实战45讲-17讲里面有,这里不叙述了,数学公式之类太繁琐,可能会说不清楚,极客时间里面讲的还行,需要的可以去看看.
在构造决策树时会基于纯度来构建,而经典的"不纯度"的指标有三种,分别是信息增益(ID3算法),信息增益率(C4.5算法)以及基尼指数(Cart算法),这篇文件介绍ID3算法.
ID3算法计算的是信息增益,信息增益指的是划分可以带来纯度的提高,信息熵的下降.它的计算公式是父亲节点的信息熵减去所有子节点的信息熵.在计算的过程中,会计算每个子节点的归一化信息熵,即按照每个子节点在父节点中出现的概率,来计算这些子节点的信息熵.
在构造的过程中需要计算两个东西:信息熵,信息增益.下面以打篮球的数据集为例如何计算:
信息熵
根节点信息熵
信息熵的计算公式如下:
E n t ( D ) = − ∑ p k log 2 p k Ent(D) = - \sum p_k \log_2 p_k Ent(D)=−∑pklog2pk
其中的累加次数为结果数量,这个就是2(去打篮球和不去打篮球). p k p_k pk表示的是每个累加情况的概率,在上面的数据集中有7条数据,3个打篮球,4个不打篮球,那么不去打篮球的 p k p_k pk为 4 7 \frac{4}{7} 74,去打篮球为 3 7 \frac{3}{7} 73.则在根节点为空的情况下,根节点信息熵为:
E n t ( D ) = − ∑ p k log 2 p k = − ( 4 7 log 2 4 7 + 3 7 log 2 3 7 ) = 0.985 Ent(D) = - \sum p_k \log_2 p_k = - (\frac{4}{7} \log_2 \frac{4}{7} + \frac{3}{7} \log_2 \frac{3}{7}) = 0.985 Ent(D)=−∑pklog2pk=−(74log274+73log273