基本概念
决策树(decision tree)是一种常见的机器学习方法,它是基于树结构来进行决策的,这恰是人类在面临决策问题时一种很自然的处理机制。人类在对一个问题进行决策时,通常会进行一系列的“子决策”,最后得出最终决策。
它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。
先来了解一下决策树的基本流程:
这个例子中要根据房产、婚姻情况、年收入这三个特征(属性)对10个样本数据进行决策,判断一个人是否能够偿还债务,可以构建如下的决策树:
一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点对应于最终决策结果(该例中为“可以偿还”和“无法偿还”),其他每个结点则对应于一个属性测试,根结点包含样本全集(该例中为“拥有房产”)。
决策树学习的目的是为了产生一颗泛化能力强,即处理未见事例能力强的决策树。
划分选择
决策树学习的难点,就是如何选择最优划分属性,特别是当特征比较多的时候,到底应该拿哪个特征当根结点呢?这就要求我们选取一个衡量标准。
热力学熵
熵最早来原于物理学,用于度量一个热力学系统的无序程度,可以测量一个粒子移动的自由程度。拿水的三态举例:
- 固态冰中的粒子活动空间较小,其结构比较稳固,粒子大都固定不动。
- 液态水的粒子结构稳固程度次之,粒子有一定的活动空间。
- 水蒸气的结构则处于另一个极端,一个粒子的去向有多种可能性,可经常移动。
因此,固态冰的熵很低,液态水的熵居中,水蒸气的熵最高。
信息熵
熵的概念也可以用概率解释,看下面这个例子:
上图的三个水桶中各有四个球,这些球除了颜色不一样,其它完全无法进行区分,因此,如果将这些小球全部放成一条直线,熵就是这些球移动的自由程度。
- 第一个桶的结构较为固定,无论如何摆放小球,它们总是处于同一状态,因此它的熵最低。
- 第二个桶中,我们有4种方式摆放小球,因此它的熵居中。
- 第三个桶中,有6中重组球的方法,因此其熵最高。
以上并不是熵最准确的定义,但它给我我们这样一个观点:集合越稳固或越具有同类性,其熵越低,反之亦然。
另一种看待熵的方式是依据知识,再来看水桶这个例子:
如果我们要从水桶中随机选出一个球,我们有多大可能知道球的颜色?
- 第一个桶中,我们知道该球的颜色必然是红色的,所以其知识较高。
- 第二个桶中,该球为红色的可能性很大,而为蓝色的可能性较小,若我们认定该球为红色,那绝大多数情况下,结果是对的,因此我们对该球的颜色的知识居中。
- 第三个桶中,该球颜色为红色和蓝色的可能性一样大,因此其知识较低。
结果显示,熵和知识相反,一个集合的知识越高,其熵越低,反之亦然。
现在还是回到上面这三个水桶,我们来玩个游戏,游戏规则是:我们重复地从桶中取出四个球,每次将球放回,尽量使取出的四个球的颜色与桶中起初的四个球的颜色一致。
举个例子,对第二个三红一蓝的水桶来说,若左边取出的四个小球的颜色和顺序与原来桶中一模一样,则该桶赢得比赛,反之,则输了比赛。
现在的问题是,若我们要赢得这个比赛,以上三个水桶哪个是最佳选择?
我们来计算一下每个水桶赢得比赛的概率,由于每次取小球都是相互独立的,我们可以计算出:
因此,第一个水桶赢得比赛的概率最高,第二个次之,第三个最低。
当有1000个小球时,概率的计算结果有可能会非常小,而且稍微改变其中一个因素,就会对最后的积产生极大的影响,为了使得结果更加可控,我们采用 log函数将积转换为和(信息论中采用底数为2的对数函数)。
使用熵的定义为以我们赢得游戏的方式取出球的概率的对数的平均值,因此,第一个水桶的熵为0,第二个水桶的熵为0.81,第三个水桶的熵为1。
假设第4个水桶中有5个红球和3个篮球:
![image](https://i-blog.csdnimg.cn/blog_migrate/65f5646807db865269cd78ed5ee433ba.webp?x-image-process=image/format,png)
计算这个水桶的熵:
当有m个红球和n个蓝球:
![](https://i-blog.csdnimg.cn/blog_migrate/90962d7b0ebbec97df6eb35c5f55ce1d.webp?x-image-process=image/format,png)
信息熵(information entropy)是度量样本集合纯度最常用的一种指标,假定当前样本集合 D D 中第