决策树的工作原理
从树的根节点开始,将测试条件用于检验记录,根据测试结果选择适当的分支。沿着该分支或者到达另一个内部结点,使用新的测试条件,或者到达一个叶结点。到达叶结点以后,叶节点的类称号就被赋值给该检验记录。
如何建立决策树
原则来讲,对于给定的属性集,可以构造的决策树的数目达到指数级。尽管某些决策树比其他决策树更准确,但是由于搜索空间是指数规模的,找出最佳决策树在计算上是不可行的。
尽管如此,人们还是开发了一些有效的算法,能够在合理的时间内构造出具有一定准确率的次最优决策树。这些算法通常都采用贪心策略,在选择划分数据的属性时,采用一系列局部最优决策来构造决策树,Hunt算法就是一种这样的算法。
Hunt算法
Hunt算法是许多决策树算法的基础,包括ID3、C4.5和CART。
在Hunt算法中,通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。设 Dt 是与结点t相关联的训练记录集,而y = { y1 , y2 , …, yc }是类标号,Hunt算法的递归定义如下:
- 如果 Dt 中所有记录都属于同一个类 yt ,则t是叶结点,用 yt 标记。
- 如果 Dt 中包含属于多个类的记录,则选择一个属性测试条件,将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结构将 Dt 中的记录分布到子女绩点中。然后对每个子女结点,递归地调用该算法。
如果属性值的每种组合都在训练数据中出现,并且每种组合都具有唯一的类标号,则Hunt算法是有效的。但是对于大多数实际情况,这些假设太苛刻了,因此,需要附加的条件来处理一下的情况。
- 算法的第二部所创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含与这样的结点相关联的属性值组合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父结点上训练记录中的多数类。
- 在第二步,如果与