本章介绍关于决策树的知识,理论部分来自周老师的西瓜书,代码部分来自《机器学习实战》,有位作者对代码实现已经做了很好的介绍,有兴趣的朋友可以看一下,感谢作者。(https://www.cnblogs.com/dennis-liucd/p/7905793.html)。
一、基本流程
顾名思义,决策树是基于树结构来进行决策的,这也是人类在面临决策问题时一种很自然的处理机制。决策过程中提出的每一个问题都是对某个属性的“测试”,每个测试或是导出最终结论(分类结果),或是导出进一步需要判定的问题,其考虑范围是在上次决策结果的限定范围内进行的。
一般地,一棵决策树包含一个根结点、若干内部结点和若干叶结点;叶结点对应决策结果(样本最终的分类),其他每个结点则对应一个属性测试;每个结点包含的样本集合依据所选属性的取值被划分到相应的叶结点中去;根结点包含全部的样本。从根结点到每个叶结点的路径对应了一个判定测试序列。决策树的学习算法是一个递归算法:
在决策树算法中,有三中情况会导致递归返回:(1)当前结点包含的样本全属于一个类别,无需划分;(2)当前属性集为空,或者所有样本在所选属性上的取值都相同,无法划分(解决思路:把当前结点标记为叶结点,将其类别设定为所含样本类别最多的类别);(3)当前结点包含的样本集合为空(解决思路:把当前结点标记为叶结点,将其类别设置为其父结点中所含样本数目最多的类别)。
二、划分选择
由上面的决策树算法知,决策树学习的关键是第8行,即如何选取最优的划分属性。一般而言,随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。
2.1信息增益
“信息熵”是度量样本集合纯度最常用的一种指标。假定当前集合中第类样本所占的比例为,则的信息熵定义为:
的值越小,则的纯度越高。
假定离散属性有个可能的取值{ },若使用来对集合进行划分,则会产生个分支结点,其中第个分支结点包含了集合中所有属性上取值为