机器学习_决策树计算原理
一. 计算所需知识引入
1、各类信息熵的定义
2、概念引入
虽然有这么多的定义,但我们平时很多情况下用的都是香农信息熵,所以接下来我也采用香农信息熵对下面的其他定义进行表述。
1)信息熵
信息熵概念:
假设抛掷硬币,正反面概率都接近50%,那么我们不能很确定的判定银币下次抛掷是正面还是反面
,此时信息熵就可以认为是1
假设扔铁球,铁球受重力影响一定会像下坠落,我们就很容易的判定铁球的方向是向下坠落
,那么此时的信息熵就可以认为是0
当我们有了信息上的表达式,可以得出一个二分类的信息熵图像,如图所示:
我们可以看到,这个图像所表达出来的和上面所举的例子完全对应,
当一件事情很容易判断(也就是X=1 or 0)的时候
,信息熵Y就偏向0,
当一件事情很难判断(X=0.5)的时候
,信息熵 Y就偏向1
2)条件信息熵(条件熵)
当有了信息熵后,我们可以引入条件信息熵的概念。
信息熵:预测变量的难度
条件信息熵:已知一个变量的条件后,预测另一个变量的难度
"即:在随机变量X的前提下,预测随机变量Y的难度"
例如:
变量X为是否要迟到,变量Y为上班方式:
X=是 ,Y都为打车,此时条件信息熵为0
计算公式为
3)信息增益
当有了条件信息熵后,我们可以引入信息增益的概念。
H(Y):信息熵——数据集整体的熵值(即为当我们一无所知是时,判断一件事情Y的难度)
H(Y|X):条件信息熵——当我们知道X条件后,判断该事情Y的难度
Gain(X,Y):信息增益——X条件对判断这件事情Y的难度的减小了多少
3、数据计算
1)寻找对目标Y信息增益最大的一个属性作为根节点
因为一个数据集的信息熵是固定的,并且,信息增益 = 信息熵 - 条件熵。所以这个问题就转化为条件熵最小的属性
根据2.2的条件信息熵公式,计算各个属性的条件信息熵:
通过计算,可以得到是否迟到这个属性的条件信息熵最小,那么我们将这个属性作为条件信息熵的跟节点:
2)寻找第二个条件信息熵最小的属性
当知道根节点的放置方法,那么第二个问题也就迎刃而解了,下面的节点防止哪个属性。
我们仅需将已经得到的节点看作一个新的根节点,利用最小化条件信息熵的方法即可。
去掉是否快迟到属性列,并只保留迟到为否的行得到如下表格:
然后再次计算条件熵:
可以看到天气因素的条件熵最小(为0),那么我们下一个节点就是天气因素。
此时我们就可以结束决策书的生长了:
因为我们在一直最小化条件熵,所以当我们发现所有特征的信息增益军很小,或者没有什么特征可以选择的时候就可以停止了。
至此该数据集的决策树便构建完毕,如图: