分类——决策树归纳

Hunt算法

概念

Hunt算法是一种采用局部最优策略的决策树构建算法,它同时也是许多决策树算法的基础,包括ID3,C4.5和CART等。

在Hunt算法中,通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。设Dt是与结点t相关联的训练记录集,而y={y1,y2,⋯,yc}是类标号,Hunt算法的递归定义如下:
(1) 如果 Dt 中所有记录都属于同一个类 yt,则 t 是叶结点,用 yt 标记。
(2) 如果 Dt 中包含属于多个类的记录,则选择一个属性测试条件(attribute test condition),将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将 Dt 中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法。

根结点:没有入边,零条或多条出边
内部结点:一条入边,两条或多条出边
叶结点(终结点):一条入边,没有出边
在这里插入图片描述

举例说明

题目:预测贷款申请者是会按时归还贷款,还是会拖欠贷款。

对于这个问题,训练数据集可以通过考察以前贷款者的贷款记录来构造。在下图所示的例子中,每条记录都包含贷款者的个人信息,以及贷款者是否拖欠贷款的类标号。
在这里插入图片描述
1.该分类问题的初始决策树只有一个结点,类标号为“拖欠货款者=否”(见图a),意味大多数贷款者都按时归还贷款。
2.该树需要进一步的细化,因为根结点包含两个类的记录。根据“有房者”测试条件,这些记录被划分为较小的子集,如图b所示。
3.对根结点的每个子女递归地调用Hunt算法。从上图给出的训练数据集可以看出,有房的贷款者都按时偿还了贷款,因此,根结点的左子女为叶结点,标记为“拖欠货款者=否”(见图b)。对于右子女,我们需要继续递归调用Hunt算法,直到所有的记录都属于同一个类为止。每次递归调用所形成的决策树显示在图c和图d中。
在这里插入图片描述

注意事项

如果属性值的每种组合都在训练数据中出现,并且每种组合都具有唯一的类标号,则Hunt 算法是有效的。但是对于大多数实际情况,这些假设太苛刻了,因此,需要附加的条件来处理以下的情况:

  1. 算法的第二步所创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含与这样的结点相关联的属性值组合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父结点上训练记录中的多数类。
  2. 第二步,如果与 Dt 相关联的所有记录都具有相同的属性值(目标属性除外),则不可能进一步划分这些记录。在这种情况下,该结点为叶结点,其标号为与该结点相关联的训练记录中的多数类。

猜你喜欢

转载自blog.csdn.net/qq_32486393/article/details/87881953