1 简介
决策树是一种树形结构,由决策树的根结点到叶结点的每一条路径构建一条规则;路径上的内部结点的特征对应着规则的条件,而叶结点对应着分类的结论。
2 算法
2.1 树的构建
在构造决策树时,第一个需要解决的问题就是,如何确定出哪个特征在划分数据分类是起决定性作用,或者说使用哪个特征分类能实现最好的分类效果。这样,为了找到决定性的特征,划分川最好的结果,我们就需要评估每个特征。当找到最优特征后,依此特征,数据集就被划分为几个数据子集,这些数据自己会分布在该决策点的所有分支中。此时,如果某个分支下的数据属于同一类型,则该分支下的数据分类已经完成,无需进行下一步的数据集分类;如果分支下的数据子集内数据不属于同一类型,那么就要重复划分该数据集的过程,按照划分原始数据集相同的原则,确定出该数据子集中的最优特征,继续对数据子集进行分类,直到所有的特征已经遍历完成,或者所有叶结点分支下的数据具有相同的分类。
创建分支的伪代码函数createBranch()如下:
检测数据集中的每一个子项是否属于同一分类:
if so return 类标签;
else
寻找划分数据集的最好特征
划分数据集
创建分支结点
for 每个分支结点
调用函数createBranch并增加返回结点到分支结点中
return 分支结点
下面我们给出使用决策树的一般流程:
(1)收集数据
(2)准备数据:构造树算法只适用于标称型数据,因此数值型数据必须离散化
(3)分析数据
(4)训练数据:上述的构造树过程构造决策树的数据结构
(5)测试算法:使用经验树计算错误率
(6)使用算法:在实际中更好地理解数据内在含义
2.2 划分数据集的原则:信息增益
划分数据集的大原则是:使得无序的数据变得更加有序。
我们可以使用多种方法划分数据集,每种方法都有各自的优缺点,这里我们使用信息增益来度量划分数据前后信息发生的变化,进而指导我们划分数据。
这里我们先引出信息熵的概念:
对于可能被划分在多个分类中的待分类的事务,符号的信息被定义为: