4.1 基本流程
决策树
- 也称为"判定树"
- 基于树结构进行决策
- 有时指学习方法,有时指学得的树
结构
- 根结点
- 内部结点
- 对应属性测试
- 叶结点
- 决策结果
每个结点包含的样本集合根据属性测试的结果划分到子结点中
根结点包含样本全集
从根结点到每个叶节结点的路径对应一个判定测试序列
核心策略
分而治之
目的
产生一棵泛化能力强,可以处理未见示例能力强的决策树
现在决策树中最主流的是用在集成学习里构成森林的模型
算法流程
- 递归返回的情况
- (1)代表当前结点包含的样本全属于同一类别,无需话费呢
- (2)当前属性集为空,或是所有样本再所有属性上取值相同,无法划分
- 当前结点设置为叶结点,类别设置为该结点所含样本最多的类别
- 利用当前结点的后验分布
- (3)当前结点包含的样本集合为空,不能划分
- 当前结点设置为叶节点,类别设置为其父结点所包含样本最多的类别
- 把父结点的样本分布作为当前结点的先验分布
算法原理的理解
从逻辑角度,一堆if else 语句的组合
从几何角度,根据某种准则划分特征空间
最终目的:将样本越分越纯
4.2 划分选择
决策树学习的关键
选择最优划分属性
- 希望划分过程中,决策树的分支结点所包含的样本尽可能属于同一类别
- 结点的纯度越来越高
4.2.1 信息增益
信息熵
度量样本集合纯度常用的一种指标
样本集合 D D D中一共有 Y \mathcal{Y} Y类样本,其中第 k k k类样本所占的比例为 p k ( k = 1 , 2 , … , ∣ Y ∣ ) p_{k}(k=1,2, \ldots,|\mathcal{Y}|) pk(k=1,2,…,∣Y∣)
则样本 D D D的信息熵定义为
Ent ( D ) = − ∑ k = 1 ∣ Y ∣ p k log 2 p k \operatorname{Ent}(D)=-\sum_{k=1}^{|Y|} p_{k} \log _{2} p_{k} Ent(D)=−k=1∑∣Y∣pklog2pk
- E n t ( D ) Ent(D) Ent(D)的值越小,代表 D D D的纯度越高
- E n t ( D ) Ent(D) Ent(D)的最小值为0,最大值为 log 2 ∣ Y ∣ \log _{2}|\mathcal{Y}| log2∣Y∣
在计算信息熵的时候约定,$p=0 \text {, 则 } p \log _{2} p=0 $
条件熵
H ( Y ∣ X ) = ∑ x p ( x ) H ( Y ∣ X = x ) H(Y \mid X)=\sum_{x} p(x) H(Y \mid X=x) H(Y∣X)=x∑p(x)H(Y∣X=x)
本质是Y的信息熵关于概率分布X的期望
从单个属性a的角度来看,针对样本集合D的条件熵为
∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ( D v ) \sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) v=1∑V∣D∣∣Dv∣Ent(Dv)
属性 a a a对样本集 D D D进行划分所获得的"信息增益":
Gain ( D , a ) = Ent ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ( D v ) \operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
- 其中离散属性
a
a
a有
V
V
V个可能的取值
{
a
1
,
a
2
,
…
,
a
V
}
\left\{a^{1}, a^{2}, \ldots, a^{V}\right\}
{a1,a2,…,aV}
- 若使用 a a a来对样本集合进行划分,会产生 V V V个分支结点
- 其中第 v v v个分支结点包含了 D D D中所有在属性 a a a上取值 a v a^v av的样本,记为 D v D^v Dv
本质就是信息熵和条件熵之差
信息增益越大,意味着使用属性 a a a来进行划分所获得的"纯度提升"越大
ID3决策树学习算法
Iterative Dichotomiser(迭代二分器)
用信息增益来进行决策树的属性选择
a ∗ = arg max a ∈ A Gain ( D , a ) a_{*}=\underset{a \in A}{\arg \max } \operatorname{Gain}(D, a) a∗=a∈AargmaxGain(D,a)
缺点
对可取值数目较多的属性有所偏好
增益率
Gain_ratio ( D , a ) = Gain ( D , a ) IV ( a ) \text{Gain\_ratio}(D, a)=\frac{\operatorname{Gain}(D, a)}{\operatorname{IV}(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
其中
IV ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log 2 ∣ D v ∣ ∣ D ∣ \operatorname{IV}(a)=-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \log _{2} \frac{\left|D^{v}\right|}{|D|} IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
称之为属性 a a a的"固有值"
- 属性 a a a的可能取值数目越多(即 V V V越大),通常 I V ( a ) IV(a) IV(a)的值也会越大
C4.5决策树算法
使用"增益率"来选择最优划分属性
- 直接使用增益率准则对可取值数目较少的属性有所偏好
- 所以在算法的实现过程中,使用启发式算法
- 先从候选划分属性中找出信息增益高于平均水平的属性
- 再从中选择增益率最高的
基尼指数
基尼值
Gini ( D ) = ∑ k = 1 ∣ Y ∣ ∑ k ′ ≠ k p k p k ′ = ∑ k = 1 ∣ Y ∣ p k ( 1 − p k ) = 1 − ∑ k = 1 ∣ Y ∣ p k 2 \begin{aligned} \operatorname{Gini}(D) &=\sum_{k=1}^{|\mathcal{Y}|} \sum_{k^{\prime} \neq k} p_{k} p_{k^{\prime}} \\ &=\sum_{k=1}^{|\mathcal{Y}|} p_{k}\left(1-p_{k}\right) \\ &=1-\sum_{k=1}^{|\mathcal{Y}|} p_{k}^{2} \end{aligned} Gini(D)=k=1∑∣Y∣k′=k∑pkpk′=k=1∑∣Y∣pk(1−pk)=1−k=1∑∣Y∣pk2
基尼指数
Gini index反映了从数据集 D D D中随机抽取两个样本,其类别标记不一致的概率,通常 G i n i ( D ) Gini(D) Gini(D)越小,数据集 D D D的纯度越高
Gini i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Gini ( D v ) \operatorname{Gini} i n d e x(D, a)=\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Gini}\left(D^{v}\right) Giniindex(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)
其中基尼值和基尼指数可以类比为信息熵和条件熵
CART决策树
Classification and Regression Tree
是一种著名的决策树学习算法,分类和回归任务都可用
利用基尼指数来进行属性选择
a ∗ = arg min a ∈ A Gini_index ( D , a ) a_{*}=\underset{a \in A}{\arg \min } \text { Gini\_index }(D, a) a∗=a∈Aargmin Gini_index (D,a)
CART决策树构造的一定是二叉树,所以在进行划分的时候,不仅要考虑最优划分属性,还要考虑最优划分点
CART决策树的实际构造算法如下:
- 首先, 对每个属性 a 的每个可能取值 v , 将数据集 D 分为 a = v a=v a=v 和 a ≠ v a \neq v a=v 两部分来计 算基尼指数, 即
Gini index ( D , a ) = ∣ D a = v ∣ ∣ D ∣ Gini ( D a = v ) + ∣ D a ≠ v ∣ ∣ D ∣ Gini ( D a ≠ v ) \operatorname{Gini} \text { index }(D, a)=\frac{\left|D^{a=v}\right|}{|D|} \operatorname{Gini}\left(D^{a=v}\right)+\frac{\left|D^{a \neq v}\right|}{|D|} \operatorname{Gini}\left(D^{a \neq v}\right) Gini index (D,a)=∣D∣∣Da=v∣Gini(Da=v)+∣D∣∣Da=v∣Gini(Da=v)
- 然后, 选择基尼指数最小的属性及其对应取值作为最优划分属性和最优划分点;
- 最后, 重复以上两步, 直至满足停止条件。