为了更好的理解决策树算法,我们先来看个小例子:
假设我们知道一个人特征「黑色皮肤,头发鬈曲,身高175cm」,现在需要去判断这个人是来自非洲还是亚洲。 根据我们经验来说,这个人大概率是来自于非洲,为什么呢,因为首先他是黑色皮肤,这个基本就能确定是来自非洲了,而且他还是卷发,我们知道头发鬈曲也是黑色人种的一大特征,所以我们判断这个人是来自于非洲。
这其实也就是决策树算法在训练过程中需要完成的,在多个特征中,我们需要找出最能区分结果的特征,区分结果差的直接丢掉。
目前决策树算法中分为ID3,C4.5和CART三种,区别在于ID3在使用信息增益来选则分类属性,C4.5使用信息增益比,CART使用基尼系数,整体逻辑都一样,公式如下:
其中D为数据集,i为数据集D的可能分类标签,
为该标签的概率
其中A表示约束特征,k表示A特征的种类
我们本篇将以ID3为例,我们需要理解三个概念:
通俗理解:首先我们整个数据集的复杂度可能是0.9,然后我们在知道特征A之后复杂度变为了0.2,在知道特征B的时候复杂度性变成了0.5,特征A和特征B的信息增益分别是0.7和0.4,那这样我们就能判断特征A是比特征B更能区分结果的特征,所以我在判断的时候会优先看特征A。
我们现在有如下数据,需要通过声音,头发和体重三个特征去判断性别。

获取决策树步骤如下:
b.声音细:
c. 条件熵:
计算头发和体重的也一样,就不重复了,直接放结果
停止条件:关于停止条件我们可以简单分为被动停止和主动停止。
最后我们会得到一个如下的树:

整个决策树的生成逻辑也就是这样,还是挺简单的,相对于其他算法,决策树计算简单,而且输出结果解释性很强,你可以很直观的看到这么一棵「树?」,但缺点也很明显,就是当特征或者特征值过多的时候很容易出现过拟合现象。