目录
- 定义
- 决策树的结构与训练过程
- 决策树的熵与Gini系数
- 总结
- 参考文献
定义
决策树是一机器学习当中经典的算法。通过名字理解,可以分为决策、树。所谓的决策,就类似于一小部分分类,把数据样本分成哪一类。而树,就是这么一堆小的分类器最终组成一个树形结构。最后得到我们今天学习的决策树算法。所以决策树是由多个支点组成的分类算法,而每一个支点都是一个小型的分类器。它属于机器学习中的监督学习,所以这个算法需要带标签的数据才能完成。
稍微举一个例子,假设一个班级学生数据,我们可以通过学习的考试成绩、出勤率、作业上交率、回答问题次数来判断该学生是否为好学生。
然后依据这4个特征,得到最后我们所需要的决策树。
决策树的结构与训练过程
决策树一共由4种结构组成。他们分别是:根部节点、非叶子节点、分支和叶节点。大致解释与结构如下图。
决策树是一个分类算法,所以他需要带标签的数据进行训练才能发挥效果。所以一般决策树模型可以分为如下3步:
- 训练阶段:对给定的带标签的数据集TrainingData进行训练,构造一棵决策树。
- 分类过程:通过训练得到的决策树,对实际数据进行分类。这里每一个数据都必须从树的根节点走到叶节点
- 树的剪枝:一般情况下生成的树是负责且冗余的,所以我们还需要从自身出发,对树进行适当的剪枝
决策树的熵与Gini系数
决策树的形成是一个复杂的过程。复杂主要来源于它要在众多数据中找到分支点来展开树,这是最难的。而当中需要一些数学知识来协助完成。这里注意啦,激动人心的数学推导又来了。
这里我们引入一个新的名词:熵。所谓的熵就是指物体(集合)内部混乱程度,熵越大,混乱之越大,不确定性也就随之变大。一般情况下,我们就通过这个熵来衡量我们生成的决策树是否为最优的。也就是说,整个决策树模型在拓展分支的时候,其实就是不断的计算熵并令其尽可能最小。
假设在一件事物里面,可能发生X和Y两个相互独立事件。发生X事件的概率为P(X),发生Y事件的概率为P(Y)。那么既发生X也发生Y的概率我们可以写为:
这里因为是乘法不方便公式推导,我们一般会引入log使其变成加法,所以可得到:
上面有提到过,决策树是通过熵来决定是否分支的。而熵代表着事件的混乱程度或者不确定性。这里记为H(X),H(Y)。这里可以得到:
- 当P(X)几率越大的时候,H(X)的几率也就越小
- 当P(X)几率越小的时候,H(X)的几率也就越大
这里给定熵值得公式:
这里针对这个公式做一下解释。首先从公式上我们可以看到p * lg(p)。这里脑海里要有一lg的坐标图了,大致是这样的:
这里横坐标是事件发生的概率p。这里标注了红色点(x=0.25)与蓝色点(x=0.25)两个值。我们可以看到经过lg(p)以后,y的值是负数且非常小。而p因为是概率,所以是属于[0,1]的。所以p * lg(p)将会是一个非常小的负数。然后我们将它累加,接着前面加一个符号,这里是不是就得到一个非常大的正数。而这个正数也就代表着熵,熵越大,会乱程度就越高。
还是不明白?没关系,我这里简单的出一道题我们来计算一次。假设我们有两个集合:
从字面上的理解是不是应该是A的熵比较小,而B的熵比较大呀?我们现在通过数学来证明他。
从集合的数值可以知道,A一共有2个独立事件,分别是p(1)=0.5,p(2)=0.5。我们将这个它们套入熵的公式之后可以得到,集合A的熵值为:
如此类推,B一共有4个独立事件,分别是p(1)=0.25,p(2)=0.25,p(3)=0.25,p(4)=0.25。我们可以得到集合B的熵值为:
从这里可以得到熵(B) >熵(A),所以集合B比集合A更混乱。
同步的,我们还有一个名词叫Gini系数。他的作用其实与熵是一样的,也是用于计算集合的混乱程度。我们可以定义:
这里可以稍微解释一下,公式中我们可以看到最重要的就是1减p的平方。也就是说,当一个事他的发生的概率越低,他的Gini系数也就越大。
- Gini系数越大,样本约清澈
- Gini系数越小,样本约浑浊
同样以A、B两个集合作为计算目标:
显然Gini(A) > Gini(B)。所以这里A比B更清澈。
总结
由于决策树的知识点比较多,所以我准备分2篇文章给大家讲解。稍微回顾一下,这里我们主要学习
- 什么是决策树
- 决策树的训练过程
- 熵和Gini系数的计算