参考:《机器学习》周志华
想对决策树做一个简单的回顾和总结,因为发现在Random Forest, GBDT和XGBoost中的基分类器中起到重要的作用。
决策树是非线性的。
定义
一般的,一颗决策树包含一个根节点,若干个内部节点和若干个叶子节点;叶节点对应于决策结果,根节点和内部节点对应一个属性。
叶节点的三种情况
- 当前节点包含的所有样本属于同一类别C。将该节点标记为C类叶节点
- 属性集为空,或者是所有样本在属性集上取值相同。将该节点标记为叶节点,其类别标记是该节点所含样本中类别数最多的类。
- 当前节点包含的样本集合为空。将该节点标记为叶节点,其类别标记是父节点中所含样本中类别数最多的类。
划分选择
决策树中关键的一步是:如何选择划分属性,即内部节点。我们希望落入叶子节点的样本尽可能地属于同一个类别,即叶子节点的纯度越高越好。
下面,我们介绍选择划分属性的不同方式:
-
ID3决策树使用的划分准则是信息增益(information gain)
首先介绍什么是熵:熵衡量事物的不确定性。熵越小,越确定,即样本纯度越高。信息熵:
Ent(D)=−∑i=1kpilog2(pi)Ent(D) = -\sum_{i=1}^{k}p_ilog_2(p_i)Ent(D)=−∑i=1kpilog2(pi),其中 kkk 表示类别总数,pip_ipi 表示样本 DDD 中第 iii 类别的样本所占的比例。
信息增益:
选择属性a进行划分带来的信息增益是:
Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a) = Ent(D) - \sum_{v=1}^V \frac{ |D_v|}{ |D|}Ent(D_v)Gain(D,a)=Ent(D)−∑v=1V∣D∣∣Dv∣Ent(Dv),其中 VVV 是属性 aaa 的取值个数, DvD_vDv是属性 aaa 的取值为 vvv 的样本个数。信息增益越大,意味着该属性进行划分之后,样本纯度更高一些。因此,在ID3中,划分属性选择方法为: a∗=argmaxa∈AGain(D,a)a_* = \arg max_{a \in A} Gain(D, a)a∗=argmaxa∈AGain(D,a)。其中AAA 为所有属性。
信息增益准则对可取值数目较多的属性有所偏好。
-
C4.5决策树使用的划分准则是增益率(gain ratio)
Gain_ratio(D,a)=Gain(D,a)IV(a)Gain\_ratio(D, a) = \frac{Gain(D, a)}{IV(a)}Gain_ratio(D,a)=IV(a)Gain(D,a)
其中IV(a)=−∑v=1V∣Dv∣∣D∣log2∣Dv∣∣D∣IV(a) = -\sum_{v=1}^V \frac{|D_v|}{|D|}log_2 \frac{|D_v|}{|D|}IV(a)=−∑v=1V∣D∣∣Dv∣log2∣D∣∣Dv∣。 属性 aaa 的可能取值数目越多, IV(a)IV(a)IV(a) 的值通常会越大。
增益率准则对可取值数目较少的属性有所偏好。
!!!C4.5算法并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中选出信息增益高于平均水平的属性,再从中选择增益率最高的。
- CART树使用基尼指数(Gini index)
Gini(D)=1−∑i=1kpi2Gini(D) = 1- \sum_{i=1}^k p_i^2Gini(D)=1−∑i=1kpi2,其中 kkk是样本类别数。
Gini(D)Gini(D)Gini(D) 反映了从样本集 DDD 中抽取两个样本,它们类别不同的概率。因此, Gini(D)Gini(D)Gini(D) 越小,样本集 DDD 的纯度越高。
Gini_index(D,a)=∑v=1V∣Dv∣∣D∣Gini(Dv)Gini\_index (D, a) = \sum_{v=1}^V \frac{|D_v|}{|D|} Gini(D_v)Gini_index(D,a)=∑v=1V∣D∣∣Dv∣Gini(Dv) , 选择 Gini_indexGini\_indexGini_index 最小的属性作为划分属性。
CART解决回归问题
在上面的划分选择一节里,我们重点关注的是针对分类问题,如何选择最优划分属性。CART(Classification and regression tree), 正如它的名字,可以看出,CART可以解决分类和回归问题。