机器学习西瓜书&南瓜书 决策树
1. 基本流程
决策树是一类常见的机器学习方法。以二分类为例,希望从给定训练集学得一个模型用以对新示例进行分类。决策树在决策过程中提出的每个判定问题都是对某个属性的“测试”,每个测试的结果或是导出最终结论,或是导出进一步的判定问题,其考虑范围是在上次决策结果的限定范围之内。
决策树学习的目的是为了产生一颗泛化能力强,即处理未见示例能力强的决策树,及基本流程遵循简单且直观的“分而治之”策略,如下图:
在决策树基本算法中,有三种情况会导致递归返回:
- 当前结点包含的样本全属于同一类别,无需划分
- 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分
- 把当前结点标记为叶子结点,并将其类别设定为该结点所含样本最多的类别
- 当前结点包含的样本集合为空,不能划分
- 把当前结点标记为叶子结点,但其类别设为父结点所言样本最多的类别
2. 划分选择
在前面讲到,决策树算法的关键点是从当前属性集中选取最优化分属性,一般而言,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的”纯度“越来越高。
2.1 信息增益
”信息熵“(information entropy)是度量样本集合纯度最常用的一种指标。假设当前样本集合D中第k类样本所占的比例为 p k ( k = 1 , 2 , . . . ∣ Y ∣ ) p_k (k=1, 2, ... |\mathcal{Y}|) pk(k=1,2,...∣Y∣),则D的信息熵定义为:
E n t ( D ) = − ∑ k = 1 ∣ Y ∣ p k log 2 p k Ent(D) = -\sum_{k=1}^{\left|\mathcal{Y}\right|}p_k\log_2p_k Ent(D)=−k=1∑∣Y∣pklog2pk
计算信息熵时约定:若p=0,则 p log 2 p = 0 p\log_2p=0 plog2p=0,Ent(D)的最小值为0,最大值为 log 2 ∣ Y ∣ \log_2\left|\mathcal{Y}\right| log2∣Y∣,Ent(D)的值越小,则D的纯度越高。
属性a对样本集D进行划分所获得的”信息增益“(information gain)如下:
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D V ∣ ∣ D ∣ E n t ( D V ) Gain(D, a) = Ent(D) - \sum_{v=1}^{V}\frac{\left|D^V\right|}{\left|D\right|}Ent(D^V) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣∣DV∣∣Ent(DV)
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的”纯度提升“越大。因此可用信息增益来进行决策树的划分属性选择,即选择 a ∗ = arg a ∈ A m a x G a i n ( D , a ) a_*=\arg_{a \in A}maxGain(D, a) a∗=arga∈AmaxGain(D,a),著名的ID3(Iterative Dichotomiser 迭代二分器)决策树学习算法就是以信息增益为准则来选择划分属性。
2.2 增益率
信息增益会对取值数目较多的属性有所偏好,如使用编号作为划分属性,则编号划分产生的每一个分治仅包含一个样本,这时分支结点的纯度已达最大,但这时决策树不具有泛化能力。
为减少偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用”增益率“(gain ratio)来选择最优化分属性,其定义如下:
G a i n r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain_ratio(D, a) = \frac{Gain(D, a)}{IV(a)} Gainratio(D,a)