2. 决策树分类原理

1 熵

1.1 概念

物理学上,熵 Entropy 是“混乱”程度的量度。

系统越有序,熵值越低;系统越混乱或者分散,熵值越高

  • 信息理论

1、从信息的完整性上进行的描述:

系统的有序状态一致时,**数据越集中的地方熵值越小,数据越分散的地方熵值越大。

2、从信息的有序性上进行的描述:

数据量一致时系统越有序,熵值越低;系统越混乱或者分散,熵值越高

1948年香农提出了信息熵(Entropy)的概念。

假如事件A的分类划分是(A1,A2,...,An),每部分发生的概率是(p1,p2,...,pn),那信息熵定义为公式如下:(log是以2为底,lg是以10为底)

Ent(A)=k=1npklog2pk=p1log2p1p2log2p2pnlog2pn\begin{aligned} & \operatorname{Ent}(A)=-\sum_{k=1}^n p_k \log _2 p_k \\ & =-p_1 \log _2 p_1-p_2 \log _2 p_2-\ldots-p_n \log _2 p_n \end{aligned}

1.2 案例

2 决策树的划分依据一------信息增益

2.1 概念

信息增益:以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏

信息增益 = entroy(前) - entroy(后)

  • 定义与公式

特征A对训练数据集D的信息增益g(D,A),定义为集合D的信息熵H(D)与特征A给定条件下D的信息条件熵H(D|A)之差,即公式为:

g(D,A)=H(D)H(DA)g(D, A)=H(D)-H(D \mid A)

公式的详细解释:

信息熵的计算:

H(D)=k=1KCkDlogCkDH(D)=-\sum_{k=1}^K \frac{\left|C_k\right|}{|D|} \log \frac{\left|C_k\right|}{|D|}

条件熵的计算:

H(DA)=i=1nDiDH(Di)=i=1nDiDk=1KDikDilogDikDiH(D \mid A)=\sum_{i=1}^n \frac{\left|D_i\right|}{|D|} H\left(D_i\right)=-\sum_{i=1}^n \frac{\left|D_i\right|}{|D|} \sum_{k=1}^K \frac{\left|D_{i k}\right|}{\left|D_i\right|} \log \frac{\left|D_{i k}\right|}{\left|D_i\right|}

注: CkC_k表示属于某个类别的样本数

注:信息增益表示得知特征X的信息而使得类Y的信息熵减少的程度

2.2 案例:

如下左图,第一列为论坛号码,第二列为性别,第三列为活跃度,最后一列用户是否流失。

我们要解决一个问题:性别和活跃度两个特征,哪个对用户流失影响更大

通过计算信息增益可以解决这个问题,统计上右表信息

其中Positive为正样本(已流失),Negative为负样本(未流失),下面的数值为不同划分下对应的人数。

可得到三个熵:

整体熵:

E(S)=515log2(515)1015log2(1015)=0.9182\begin{aligned} & E(S) \\ & =-\frac{5}{15} \log _2\left(\frac{5}{15}\right)-\frac{10}{15} \log _2\left(\frac{10}{15}\right) \\ & =0.9182 \end{aligned}

性别熵:

E( g1)=38log2(38)58log2(58)=0.9543E( g2)=27log2(27)57log2(57)=0.8631\begin{aligned} & E\left(\mathrm{~g}_1\right)=-\frac{3}{8} \log _2\left(\frac{3}{8}\right)-\frac{5}{8} \log _2\left(\frac{5}{8}\right)=0.9543 \\ & E\left(\mathrm{~g}_2\right)=-\frac{2}{7} \log _2\left(\frac{2}{7}\right)-\frac{5}{7} \log _2\left(\frac{5}{7}\right)=0.8631 \end{aligned}

性别信息增益:

IGain(S,g)=E(S)815E(g1)715E(g2)=0.0064\begin{aligned} & \operatorname{IGain}(S, g) \\ & =E(S)-\frac{8}{15} E\left(g_1\right)-\frac{7}{15} E\left(g_2\right) \\ & =0.0064 \end{aligned}

活跃度熵:

E(a1)=0E(a2)=0.7219E(a3)=0E\left(\mathrm{a}_1\right)=0 \quad E\left(\mathrm{a}_2\right)=0.7219 \quad E\left(\mathrm{a}_3\right)=0

活跃度信息增益:

IGain(S,a)=E(S)615E(a1)515E(a2)415E(a3)=0.6776\begin{aligned} & \operatorname{IGain}(S, a) \\ & =E(S)-\frac{6}{15} E\left(a_1\right)-\frac{5}{15} E\left(a_2\right)-\frac{4}{15} E\left(a_3\right) \\ & =0.6776 \end{aligned}

活跃度的信息增益比性别的信息增益大,也就是说,活跃度对用户流失的影响比性别大。

在做特征选择或者数据分析的时候,我们应该重点考察活跃度这个指标。

3 决策树的划分依据二----信息增益率

增益率:增益比率度量是用前面的增益度量Gain(S,A)和所分离信息度量SplitInformation(如上例的性别,活跃度等)的比值来共同定义的。

GainRatio(SA,A)=Gain(SA,A)SplitInformation(SA,A)SplitInformation(SA,A)=mMSAmSAlogSAmSA\begin{aligned} & \operatorname{GainRatio}\left(S_A, A\right)=\frac{\operatorname{Gain}\left(S_A, A\right)}{\operatorname{SplitInformation}\left(S_A, A\right)} \\ & \operatorname{SplitInformation}\left(S_A, A\right)=-\sum_{m \in M} \frac{\left|S_{A m}\right|}{\left|S_A\right|} \log \frac{\left|S_{A m}\right|}{\left|S_A\right|} \end{aligned}

4 决策树的划分依据三——基尼值和基尼指数

4.1 概念

基尼值Gini(D):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,Gini(D)值越小,数据集D的纯度越高。

Gini(D)=k=1ykkpkpk=1k=1ypk2\operatorname{Gini}(D)=\sum_{k=1}^{|y|} \sum_{k^{\prime} \neq k} p_k p_{k^{\prime}}=1-\sum_{k=1}^{|y|} p_k^2

基尼指数Gini_index(D):一般,选择使划分后基尼系数最小的属性作为最优化分属性。

Gini_index(D,a)=v=1VDvDGini(Dv)\operatorname{Gini\_index }(D, a)=\sum_{v=1}^V \frac{\left|D^v\right|}{|D|} \operatorname{Gini}\left(D^v\right)

4.2 案例

请根据下图列表,按照基尼指数的划分依据,做出决策树。

1,对数据集非类标号属性{是否有房,婚姻状况,年收入}分别计算它们的Gini系数增益,取Gini系数增益值最大的属性作为决策树的根节点属性。

2,根节点的Gini系数为:

 Gini(是否拖欠贷款) =1(310)2(710)2=0.42\text { Gini(是否拖欠贷款) }=1-\left(\frac{3}{10}\right)^2-\left(\frac{7}{10}\right)^2=0.42

3,当根据是否有房来进行划分时,Gini系数增益计算过程为:

4,若按婚姻状况属性来划分,属性婚姻状况有三个可能的取值{married,single,divorced},分别计算划分后的Gini系数增益。

{married} | {single,divorced}

{single} | {married,divorced}

{divorced} | {single,married}

分组为{married} | {single,divorced}时:

{婚姻状况}=0.42410×0610×[1(36)2(36)2]=0.12\{婚姻状况\} \\ \begin{aligned} & =0.42-\frac{4}{10} \times 0-\frac{6}{10} \times\left[1-\left(\frac{3}{6}\right)^2-\left(\frac{3}{6}\right)^2\right] \\ & =0.12 \end{aligned}

当分组为{single} | {married,divorced}时:

{婚姻状况}=0.42410×0.5610×[1(16)2(56)2]=0.053\{婚姻状况\} \\ \begin{aligned} & =0.42-\frac{4}{10} \times 0.5-\frac{6}{10} \times\left[1-\left(\frac{1}{6}\right)^2-\left(\frac{5}{6}\right)^2\right] \\ & =0.053 \end{aligned}

当分组为{divorced} | {single,married}时:

=0.42210×0.5810×[1(28)2(68)2]=0.02\begin{aligned} & =0.42-\frac{2}{10} \times 0.5-\frac{8}{10} \times\left[1-\left(\frac{2}{8}\right)^2-\left(\frac{6}{8}\right)^2\right] \\ & =0.02 \end{aligned}

对比计算结果,根据婚姻状况属性来划分根节点时取Gini系数增益最大的分组作为划分结果,即:{married} | {single,divorced}

5,同理可得年收入Gini:

对于年收入属性为数值型属性,首先需要对数据按升序排序,然后从小到大依次用相邻值的中间值作为分隔将样本划分为两组。例如当面对年收入为60和70这两个值时,我们算得其中间值为65。以中间值65作为分割点求出Gini系数增益。

最大化增益等价于最小化子女结点的不纯性度量(Gini系数)的加权平均值,现在我们希望最大化Gini系数的增益。根据计算知道,三个属性划分根节点的增益最大的有两个:年收入属性和婚姻状况,他们的增益都为0.12。此时,选取首先出现的属性作为第一次划分。

6,接下来,采用同样的方法,分别计算剩下属性,其中根节点的Gini系数为(此时是否拖欠贷款的各有3个records)

7,对于是否有房属性,可得:

8,对于年收入属性则有:

4.3 小结

一,决策树构建的基本步骤如下

  1. 开始将所有记录看作一个节点

  2. 遍历每个变量的每一种分割方式,找到最好的分割点

  3. 分割成两个节点N1和N2

  4. 对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。

二,决策树的变量可以有两种

  1. 数字型(Numeric):变量类型是整数或浮点数,如前面例子中的“年收入”。用“>=”,“>”,“<”或“<=”作为分割条件(排序后,利用已有的分割情况,可以优化分割算法的时间复杂度)。

  2. 名称型(Nominal):类似编程语言中的枚举类型,变量只能从有限的选项中选取,比如前面例子中的“婚姻情况”,只能是“单身”,“已婚”或“离婚”,使用“=”来分割。

三,如何评估分割点的好坏?

​ 如果一个分割点可以将当前的所有节点分为两类,使得每一类都很“纯”,也就是同一类的记录较多,那么就是一个好分割点。

​ 比如上面的例子,“拥有房产”,可以将记录分成了两类,“是”的节点全部都可以偿还债务,非常“纯”;“否”的节点,可以偿还贷款和无法偿还贷款的人都有,不是很“纯”,但是两个节点加起来的纯度之和与原始节点的纯度之差最大,所以按照这种方法分割。构建决策树采用贪心算法,只考虑当前纯度差最大的情况作为分割点。

5 总结:常见决策树类型比较

5.1 ID3 算法

存在的缺点

​ (1) ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息.

​ (2) ID3算法只能对描述属性为离散型属性的数据集构造决策树

5.2 C4.5算法

做出的改进(为什么使用C4.5要好)

​ (1) 用信息增益率来选择属性

​ (2) 可以处理连续数值型属性

​ (3)采用了一种后剪枝方法

​ (4)对于缺失值的处理

C4.5算法的优缺点

​ 优点:

​ 产生的分类规则易于理解,准确率较高。

​ 缺点:

​ 在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。

​ 此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

5.3 CART算法

CART算法相比C4.5算法的分类方法,采用了简化的二叉树模型,同时特征选择采用了近似的基尼系数来简化计算。

C4.5不一定是二叉树,但CART一定是二叉树。

同时,无论是ID3, C4.5还是CART,在做特征选择的时候都是选择最优的一个特征来做分类决策,但是大多数,分类决策不应该是由某一个特征决定的,而是应该由一组特征决定的。这样决策得到的决策树更加准确。这个决策树叫做多变量决策树(multi-variate decision tree)。在选择最优特征的时候,多变量决策树不是选择某一个最优特征,而是选择最优的一个特征线性组合来做决策。这个算法的代表是OC1,这里不多介绍。

如果样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习里面的随机森林之类的方法解决。

Last updated