作者:chen_h
决策树算法将原始数据转换为基于规则的决策树。这里 ID3 是最常见的决策树算法之一。首先,它于 1986 年推出,它是 Iterative Dichotomiser 的首字母缩写。
首先,二分法意味着,我们会把东西分成两个完全相反的东西。这就是为什么,算法迭代地将属性分为两组,这两组是最主要的属性,另一组是构造树。然后,它计算每个属性的熵和信息增益。通过这种方式,可以建立最主要的属性。在那之后,最主要的一个被放在树上作为决策节点。此后,将在其他属性中再次计算熵和增益分数。因此,找到了下一个最主要的属性。最后,这个过程一直持续到该分支的结束位置,这就是为什么它被称为 Iterative Dichotomiser。所以,我们将在这篇文章中逐步提到算法。
例如,下表通知了在过去 14 天内在外面打网球的决策因素。
Day | Outlook | Temp. | Humidity | Wind | Decision |
1 | Sunny | Hot | High | Weak | No |
2 | Sunny | Hot | High | Strong | No |
3 | Overcast | Hot | High | Weak | Yes |
4 | Rain | Mild | High | Weak | Yes |
5 | Rain | Cool | Normal | Weak | Yes |
6 | Rain | Cool | Normal | Strong | No |
7 | Overcast | Cool | Normal | Strong | Yes |
8 | Sunny | Mild | High | Weak | No |
9 | Sunny | Cool | Normal | Weak | Yes |
10 | Rain | Mild | Normal | Weak | Yes |
11 | Sunny | Mild | Normal | Strong | Yes |
12 | Overcast | Mild | High | Strong | Yes |
13 | Overcast | Hot | Normal | Weak | Yes |
14 | Rain | Mild | High | Strong | No |
我们可以总结 ID3 算法,如下所示:
这些公式可能现在会让你大吃一惊,但是后续我们会让他变得更加简单。
熵(Entropy)
我们需要先计算熵,上面的表中决策列由 14 个实例组成,包括两个标签:yes 和 no。他们有 9 个 yes 和 5 个 no 组成。
现在,我们需要找到决策最主要的因素。
Wind 因素对决定的影响
Wind 属性有两个标签:weak 和 strong。我们会将其反映在公式中。
现在,我们需要分别计算 (Decision|Wind=weak) 和 (Decision|Wind=strong) 。
weak wind因素决定
Day | Outlook | Temp. | Humidity | Wind | Decision |
1 | Sunny | Hot | High | Weak | No |
3 | Overcast | Hot | High | Weak | Yes |
4 | Rain | Mild | High | Weak | Yes |
5 | Rain | Cool | Normal | Weak | Yes |
8 | Sunny | Mild | High | Weak | No |
9 | Sunny | Cool | Normal | Weak | Yes |
10 | Rain | Mild | Normal | Weak | Yes |
13 | Overcast | Hot | Normal | Weak | Yes |
weak 因子有 8 个例子。其中,2个是 no 的决定,6 个是 yes 的决定,如上图所示。
strong wind因素决定
Day | Outlook | Temp. | Humidity | Wind | Decision |
2 | Sunny | Hot | High | Strong | No |
6 | Rain | Cool | Normal | Strong | No |
7 | Overcast | Cool | Normal | Strong | Yes |
11 | Sunny | Mild | Normal | Strong | Yes |
12 | Overcast | Mild | High | Strong | Yes |
14 | Rain | Mild | High | Strong | No |
这里有 6 个 strong 因子,Decision 也被分为了两部分:
现在,我们可以回到
所以 wind 因子的计算结束了,现在,我们可以对其它列进行相同的计算,以找到最主要的因素。
另外因子如下计算
我们可以用相同的方法计算 Outlook,Temperature和Humidity 因子的信息增益。
正如我们所看到的,outlook 因子是拥有最高的分数。这也是为什么,outlook 因子会出现在树的根节点的原因。
现在,我们需要测试 outlook 因子的自定义子集的数据集。
overcast 因子对 outlook 的决策
基本上,如果 outlook = overcast,那么 decision 一直是 yes 。
Day | Outlook | Temp. | Humidity | Wind | Decision |
3 | Overcast | Hot | High | Weak | Yes |
7 | Overcast | Cool | Normal | Strong | Yes |
12 | Overcast | Mild | High | Strong | Yes |
13 | Overcast | Hot | Normal | Weak | Yes |
sunny 因子作为 outlook 的决策
Day | Outlook | Temp. | Humidity | Wind | Decision |
1 | Sunny | Hot | High | Weak | No |
2 | Sunny | Hot | High | Strong | No |
8 | Sunny | Mild | High | Weak | No |
9 | Sunny | Cool | Normal | Weak | Yes |
11 | Sunny | Mild | Normal | Strong | Yes |
这里有 5 个 outlook = sunny 的实例,decision = yes 的概率是2/5,decision=no 的概率是 3/5 。
同理,我们可以计算出:
现在,我们选择 humidity 作为决策因子,因为它拥有最高分,从表中我们可以看出,如果 humidity=High,那么我们一直不会去打网球。
Day | Outlook | Temp. | Humidity | Wind | Decision |
1 | Sunny | Hot | High | Weak | No |
2 | Sunny | Hot | High | Strong | No |
8 | Sunny | Mild | High | Weak | No |
从另一方面说,如果 humidity=Normal,那么我们就一定会去打网球。
Day | Outlook | Temp. | Humidity | Wind | Decision |
9 | Sunny | Cool | Normal | Weak | Yes |
11 | Sunny | Mild | Normal | Strong | Yes |
最后,这意味着,如果 outlook = Sunny,那么我们只需要检查 humidity 就行了。
rain 因子作为 outlook 的决策
Day | Outlook | Temp. | Humidity | Wind | Decision |
4 | Rain | Mild | High | Weak | Yes |
5 | Rain | Cool | Normal | Weak | Yes |
6 | Rain | Cool | Normal | Strong | No |
10 | Rain | Mild | Normal | Weak | Yes |
14 | Rain | Mild | High | Strong | No |
大家可以自己计算一下,如果 outlook=rain,那么 wind 因子将会获得最高的分数,这也是为什么我们需要把 wind 因子作为第二层节点。
因此,如果wind=weak,outlook=rain,那么决策将永远是肯定的。
Day | Outlook | Temp. | Humidity | Wind | Decision |
4 | Rain | Mild | High | Weak | Yes |
5 | Rain | Cool | Normal | Weak | Yes |
10 | Rain | Mild | Normal | Weak | Yes |
更重要的是,如果wind=strong,outlook=rain,那么决策将永远是否定的,即我不会出去打网球。
Day | Outlook | Temp. | Humidity | Wind | Decision |
6 | Rain | Cool | Normal | Strong | No |
14 | Rain | Mild | High | Strong | No |
因此,决策树的构建已经结束了,我们可以使用下图来表示。
结论
因此,决策树算法将原始数据转换为基于规则的机制。在这篇文章中,我们提到了一种最常见的决策树算法,名为 ID3。他们可以直接使用特征属性来进行分类,而大多数常见的机器学习算法都是不能的。但是,需要在 ID3 中将数字特征转换为标量。尽管决策树算法功能强大,但是他们的训练时间很长。另一方面,他们倾向于过度拟合。