决策树分类和预测算法的原理及实现

  • Post author:
  • Post category:其他


0.引言

决策树是一种通过对历史数据进行测算实现对新数据进行分类和预测的算法。简单来说决策树算法就是通过对已有明确结果的历史数据进行分析,寻找数据中的

特征

。并以此为依据对新产生的数据结果进行

预测

1.决策树组成

决策树由3个主要部分组成,分别为决策节点,分支和叶子节点。其中决策树最

顶部

的决策节点是

根决策节点

,每一个分支都有一个新的决策节点。决策节点下面是叶子节点。每个决策节点表示一个待分类的数据类别或属性,每个叶子节点表示一种结果,整个决策的过程从根决策节点开始,从上到下。根据数据的分类在每个决策节点给出不同的结果。

构造决策树是一个复杂的工作。下面我们将介绍决策树中的ID3算法和“信息熵”概念,并手工创建一个简单的决策树,用以说明整个构建的过程和思路。

2.ID3算法

构造决策树的方法有很多种, ID3是其中的一种算法。ID3算法最早是由罗斯昆(J.Ross Quinlan)1975年在悉尼大学提出的一种分类预测算法,

核心

是“信息熵”。ID3算法认为

“互信息”

高的属性是好属性,通过计算历史数据中每个类别或属性的“信息熵”获得“互信息”,并选择“互信息”最高的类别或属性作为决策树中的

决策节点

,将类别或属性的值做为分支继续进行分裂。不断重复这个过程,直到生成一棵完整的决策树。

3.信息熵的含义及分类

信息熵是信息论中的一个重要指标,由香农在1948年提出。香农借用了热力学中熵的概念来描述信息的不确定性。因此信息学中的熵和热力学的熵是有联系的。根据Charles H. Bennett对

Maxwell’s Demon

的重新解释,对信息的销毁是一个不可逆过程,所以

销毁

信息是符合热力学第二定律的。而

产生

信息,则是为系统引入负(热力学)熵的过程。所以信息熵的符号与热力学熵应该是相反的。

简单的说信息熵是衡量信息的指标,更确切的说是衡量信息的

不确定性或混乱程度

的指标。信息的不确定性越大,熵越大。决定信息的不确定性或者说复杂程度主要因素是概率。决策树中使用的与熵有关的概念有三个:

信息熵,条件熵和互信息

。下面分别来介绍这三个概念的含义和计算方法。

3.1信息熵

信息熵是用来衡量

一元模型

中信息不确定性的指标。信息的

不确定性越大

,熵的值也就越大,而影响熵值的主要因素是

概率

。这里所说的

一元模型

就是指

单一事件

,而不确定性是一个事件出现不同结果的可能性。例如抛硬币,可能出现的结果有两个,分别是正面和反面。而每次抛硬币的结果是一个非常不确定的信息。因为根据我们的经验或者历史数据来看,一个均匀的硬币出现正面和反面的概率相等,都是50%。因此很难判断下一次出现的是正面还是反面。这时抛硬币这个事件的

熵值

也很高。而如果历史数据告诉我们这枚硬币在过去的100次试验中99次都是正面,这就是说这枚硬币的质量不均匀,出现正面结果的概率很高。那么我们就很容易盘点下一次的结果了,此时的熵值很低,只有0.08。

我们把抛硬币这个事件看做一个随机变量S,它可能的取值有2种,分别是正面x1和反面x2。每一种取值的概率分别为
P_{1}

P_{2}


我们要获得随机变量S的取值结果至少要进行1次试验,试验次数与随机变量S可能的取值数量(2种)的对数函数Log有联系

。Log2=1(以2为底)。因此熵的计算公式是:

E(S)=\sum_{i=1}^{c}-p_{i}log_{2}p_{i}

在抛硬币的例子中,我们借助一元模型自身的概率,也就是前100次的历史数据来消除了判断结果的

不确定性

。而对于很多现实生活中的问题,则无法仅仅通过自身概率来判断。例如:对于天气情况,我们无法像抛硬币一样通过晴天、雨天和雾霾在

历史数据

中出现的概率来判断明天的天气,因为天气的种类很多,并且影响天气的因素也有很多。同理,对于网站的用户我们也无法通过他们的历史购买行为/频率来判断这个用户在下一次访问时是否会完成购买。因为用户是的购买行为存在着

不确定性

,要消除这些不确定性需要更多的信息。例如用户历史行为中的

广告创意,促销活动,商品价格,配送时间等信息

。因此这里我们不能只借助一元模型来进行判断和预测了,需要获得更多的信息并通过

二元模型



更高阶的模型

了解用户的购买行为与其他因素间的关系来消除不确定性。衡量这种关系的指标叫做

条件熵

3.2条件熵

条件熵是通过获得更多的信息来消除一元模型中的不确定性,也就是通过二元或多元模型来降低一元模型的熵。我们知道的信息越多,信息的不确定性越小。例如,只使用一元模型时我们无法根据用户历史数据中的购买频率来判断这个用户本次是否也会购买。因为不确定性太大。在加入了促销活动,商品价格等信息后,在

二元模型

中我们可以发现用户购买与促销活动,或者商品价格变化之间的联系。并通过购买与促销活动一起出现的概率,和不同促销活动时购买出现的概率来降低不确定性。

计算条件熵时使用到了两种概率,分别是购买与促销活动的

联合概率
P(c)

,和不同促销活动出现时购买也发生的

条件概率
E(c)

。以下是

条件熵
E(T,X)

的计算公式。条件熵的值越低说明二元模型的不确定越小。

E(T,X)=\sum_{c\epsilon X}^{}P(c)E(c)

3.3互信息

互信息是用来衡量信息之间相关性的指标。当两个信息完全相关时,互信息为1,不相关时为0。在前面的例子中用户购买与促销活动这两个信息间的相关性究竟有多高,我们可以通过互信息这个指标来度量,具体的计算方法就熵与条件熵之间的差。用户购买的熵
E(T)
减去促销活动出现时用户购买的熵
E(T,X)
,以下为计算公式:

Gain(T,X)=Entropy(T)-Entropy(T,X)

熵,条件熵和互信息是构建决策树的三个关键指标。下面我们将通过一个维基百科中的实例说明创建决策树的过程。

4.构建决策树实例

这是一家高尔夫球俱乐部的历史数据,里面记录了不同天气状况用户来打高尔夫球的历史记录。我们要做的是通过

构建决策树来预测

用户是否会来打高尔夫球。这里用户是否来打球是一个

一元模型

,具有不确定性,熵值很高。我们无法仅通过Yes和No的频率来判断用户明天是否会来。因此,需要借助天气的信息来减少不确定性。下面分别记录到了4种天气情况,我们通过计算条件熵和互信息来开始构建决策树的第一步:


构建根决策点


4.1构建根决策节点

构建根决策节点的方法就是寻找4种天气情况中与打高尔夫球⛳️

相关性最高

的一个。首先我们来看Play Golf这个

一元模型的熵

,来看看这件事的不确定性有多高。

4.1.1一元模型的熵

在一元模型中,仅通过历史数据的概率来预测Play Golf是一件非常不确定的事情,在14条历史数据中,打球的概率为64%,不打球的概率为36%。熵值达到了0.940。这与之前抛硬币的例子很像。在无法改变历史数据的概率时,我们需要借助更多的信息来降低不确定性。也就是计算条件熵。

E(S)=\sum_{i=1}^{c}-p_{i}log_{2}p_{i}

4.1.2二元模型条件熵

计算二元模型的条件熵需要知道Play Golf与4种天气情况一起出现的联合概率,以及在不同天气情况下Play Golf出现的条件概率。下面我们分别来计算这两类概率。

联合概率

以上是经过分别计算后4种天气情况与Play Golf同时出现的

联合概率值

条件概率

同时我么也分别计算出了4种天气情况下,不同取值时Play Golf的

条件概率值

。 并通过联合概率与条件概率求得4种天气情况与Play Golf间的

条件熵

E(T,X)=\sum_{c\epsilon X}^{}P(c)E(c)

互信息

在已知Play Golf的一元模型熵和不同天气条件下的二元模型熵后。我们就可以通过互信息来度量哪种天气与Play Golf的相关性最高了。

Gain(T,X)=Entropy(T)-Entroy(T,X)

通过互信息的值可以发现,4种天气中Outlook的值最大。说明Outlook与Play Golf的相关性最高。因此我们选择Outlook作为决策树的根节点来构建决策树。

【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“

蓝鲸网站分析博客

”】



版权声明:本文为m0_57656758原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。