4.1预备知识:分类任务的输入数据是记录的集合。每条记录也称实例或样例,用元组(x,y)表示,其中x是属性的集=集合,而y是一个特殊的属性,指出样例的类标号(也称为分类属性或目标属性)。
分类(classification)分类任务就是通过学习得到一个目标函数(targetfunction)f,把每个属性集x映射到一个预先定义的类别号y。目标函数也称分类模型(classification model)。分类模型可用于以下目的:描述性建模、预测性建模
4.2解决分类问题的一般方法
分类技术(或分类法)是一种根据输入数据集建立分类模型的系统方法。分类法的例子包括决策树分类法、基于规则的分类法、神经网络、支持向量机和朴素贝叶斯分类法。
首先,需要一个训练集(training set),它又类标号一致的记录组成。使用训练集建立分类模型,该模型随后运用于检验集(test set ),检验集由类标号未知的记录组成。
分类模型的性能根据模型正确和错误预的检验记录计数进行评估,这些计数存放在称作混淆矩阵( confusion matrix)的表格中。表4-2描述二元分类问题的混滑矩阵。表中每个表项fij表示实际类标号为i但被预测为类j的记录数,例如,f01代表原本属于类0但被误分为类1的记录数。按照混淆矩阵中的表项,被分类模型正确预测的样本总数是(f11+f00),而被错误预测的样本总数是(f10+f01)。
同样,分类模型的性能可以用错误率(error rate)来表示,其定义如下:
4.3决策树归纳
4.3.1决策树的工作原理
为了解释决策树分类的工作原理,考虑上一节中介绍的脊椎动物分类问题的简化版本。这里我们不把脊椎动物分为五个不同的物种,而只考虑两个类别:哺乳类动物和非哺乳类动物。假设科学家发现了一个新的物种,怎么判断它是哺乳动物还是非哺乳动物呢?一种方法是针对物种的特征提出一系列问题。第一个问题可能是,该物种是冷血动物还是恒温动物。如果它是冷血的,则该物种肯定不是哺乳动物;否则它或者是某种鸟,或者是某种哺乳动物。如果它是恒温的,需要接着问:该物种是由雌性产越进行繁殖的吗?如果是,则它肯定为哺乳动物,否则它有可能是非哺乳动物(鸭嘴兽和针鼹这些产蛋的哺乳动物除外)。
上面的例子表明,通过提出一系列精心构思的关于检验记录属性的问题,可以解决分类问题。每当一个问题得到答案,后续的问题将随之而来,直到我们得到记录的类标号。这一系列的问题和这些问题的可能回答可以组织成决策树的形式,决策树是一种由结点和有向边组成的层次结图4-4显示哺乳类动物分类问题的决策树,树中包含三种结点。
根节点(root node),它没有入边,但有零条或多条出边。
内部节点(internal node),恰有一条入边和两条或多条出边。
叶节点(leaf node)或终结点(terminal node)。恰有一条入边,但没有出边。
在决策树中,毎个叶结点都赋予一个类标号。非终结点(non- terminal node)(包括根结点和内部结点)包含属性测试条件,用以分开具有不同特性的记录。例如,在图44中,在根结点处,使用体温这个属性把冷血脊権动物和恒温脊椎动物区别开来。因为所有的冷血脊椎动物都是非乳动物,所以用一个类称号为非嘴乳动物的叶结点作为根结点的右子女。如果脊椎动物的体温是恒温的,则接下来用胎生这个属性来区分乳动物与其他恒温动物(主要是鸟类)。
一旦构造了决策树,对检验记录进行分类就相当容易了。从树的根结点开始,将测试条件用于检验记录,根据测试结果选择适当的分支,沿着该分支或者到达另一个内部结点,使用新的测试条件,或者到达一个叶结点。到达叶结点之后,叶结点的类称号就被赋值给该检验记录。例如图45显示应用决策树预测火烈鸟的类标号所经过的路径,路径终止于类称号为非哺乳动物的叶结点。
4.3.2建立决策树
1.hunt 算法
在 Hunt算法中,通过将训练记录相继划分成较纯的子集,以递归方式建立决策树。设是与结点t相关联的训练记录集,而y={y1,y2…,yc}是类标号,Humt算法的递归定义如下:
(1)如果中所有记录都属于同一个类,则t是叶结点,用标记。
(2)如果中包含属于多个类的记录,则选择一个属性测试条件( attribute test condition),将记录划分成较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法。为了解释该算法如何执行,考虑如下问题:预测贷款申请者是会按时归还贷款,还是会拖欠贷款。对于这个问题,训练数据集可以通过考察以前货款者的贷放记录来构造。在图4-6所示的例子中,每条记录都包含贷款者的个人信息,以及货款者是否拖欠货款的类标号。
该分类问题的初始决策树只有一个结点,类标号为“拖欠款者=否”(见图4-7a),意味大多数贷款者都按时归还贷款。然而,该树需要进一步的细化,因为根结点包含两个类的记录。根据“有房者”测试条件,这些记录被划分为较小的子集,如图4-7b所示。选取属性测试条件的理由稍后讨论,目前,我们假定此处这样选是划分数据的最优标准。接下来,对根结点的每个子女递归地调用Hunt算法。从图4-6给出的训练数据集可以看出,有房的货款者都按时偿还了贷款,因此,根结点的左子女为叶结点,标记为“抱欠款者=否”(见图4-7b)。对于右子女,我们需要继续递归调用Hunt算法,直到所有的记录都属于同一个类为止。每次递归调用所形成的决策树显示在图4-7c和图4-7d中。
如果属性值的每种组合都在训练数据中出现,并且每种组合都具有算法是有效的。但是对于大多数实际情况,这些假设太苛刻了,因此,需要附加的条件来处理以下的情况。
(1)算法的第二步所创建的子女结点可能为空,即不存在与这些结点相关联的记录。如果没有一个训练记录包含与这样的结点相关联的属性值组合,这种情形就可能发生。这时,该结点成为叶结点,类标号为其父结点上训练记录中的多数类。
(2)在第二步,如果与D相关联的所有记录都具有相同的属性值(目标属性除外),则不可能进一步划分这些记录。在这种情况下,该结点为叶结点,其标号为与该结点相关联的训练记录中的多数类。
2.决策树归纳的设计问题
决策树归纳的学习算法必须解决下面两个问题。
(1)如何分裂训练记最?树增长过程的每个递归步都必须选择一个属性测试条件,将记录划分成较小的子集。为了实现这个步骤,算法必须提供为不同类型的属性指定测试条件的方法,并且提供评估每种测试条件的客观度量。
(2)如何停止分裂过程?需要有结束条件,以终止决策树的生长过程。一个可能的策略是分裂结点,直到所有的记录都属于同一个类,或者所有的记录都具有相同的属性值。尽管两个结東条件对于结束决策树归纳算法都是充分的,但是还可以使用其他的标准提前终止树的生长过程。提前终止的优点将在4.4.5节讨论。
4.3.3表示属性测试条件的方法
决策树归纳算法必须为不同类型的属性提供表示属性测试条件和其对应输出的方法。
二元属性 二元属性的测试条件产生两个可能的输出,如图4-8所示。
标称属性 由于标称属性有多个属性值,它的测试条件可以用两种方法表示,如图4-9所示对于多路划分(图4-9a),其输出数取决于该属性不同属性值的个数。例如,如果属性婚姻状况有三个不同的属性值一单身、已婚、离异,则它的测试条件就会产生一个三路划分。另一方面,某些决策树算法(如CART)只产生二元划分,它们考虑创建k个属性值的二元划分的所有+1种方法。图4-9b显示了把婚姻状况的属性值划分为两个子集的三种不同的分组方法。
序数属性 序数属性也可以产生二元或多路划分,只要不违背序数属性值的有序性,就可以对属性值进行分组。图410显示了技照属性村衣尺吗划分训练记录的不同的方法。图4-10a和图4-10b中的分组保持了属性值间的序关系,而图4-10c所示的分组则违反了这一性质,因为它把小号和大号分为一组,把中号和加大号放在另一组。
连续属性对于连续属性来说,测试条件可以是具有二元输出的比较测试(A 有很多度量可以用来确定划分记录的最佳方法,这些度量用划分前和划分后记录的类分布定义。设p(i|t)表示给定结点t中属于类i的记录所占的比例,有时,我们省略结点t,直接用表示该比例。在两类问题中,任意结点的类分布都可以记作(,),其中=1-。例如,考虑图4-12中的测试条件,划分前的类分布是(0.5,0.5),因为来自每个类的记录数相等。如果使用性属性来划分数据,则子女结点的类分布分别为(0.6,0.4)和(0.4,0.6),虽然划分后两个类的分布不再平衡,但是子女结点仍然包含两个类的记录:按照第二个属性车型进行划分,将得到纯度更高的划分。 选择最佳划分的度量通常是根据划分后子女结点不纯性的程度。不纯的程度越低,类分布就越倾斜。例如,类分布为(0,1)的结点具有零不纯性,而均衡分布(0.5,0.5)的结点具有最高的不纯性。不纯性度量的例子包括: 图4-13显示了二元分类问题不纯性度量值的比较,p表示属于其中一个类的记录所占的比例。从图中可以看出,三种方法都在类分布均衡时(即当p=0.5时)达到最大值,而当所有记录都属于同一个类时(p等于1或0)达到最小值。下面我们给出三种不纯性度量方法的计算实例。 为了确定测试条件的效果,我们需要比较父结点(划分前)的不纯程度和子女结点(划分后)的不纯程度,它们的差越大,测试条件的效果就越好。增益4是一种可以用来确定划分效果的标准: 考虑图4-14中的图表,假设有两种方法将数据划分成较小的子集。划分前,Gimi指标等于0.5,因为属于两个类的记录个数相等。如果选择属性A划分数据,结点N1的Gi指标等于0,.4898,而N2的Gimi指标等于0.480,派生结点的Gini指标的加权平均为(7/12)×0.4898+(5/2)×0.480=0.486。类似的,我们可以计算属性B的Gini指标加权平均是0.371。因为属性B具有更小的Gini指标,它比属性A更可取。 熵和Gini指标等不纯性度量趋向有利于具有大量不同值的属性。图4-12显示了三种可供选择的测试条件,划分本章习题2中的数据集。第一个测试条件性别与第二个测试条件车型相比,容易看出车型似乎提供了更好的划分数据的方法,因为它产生更纯的派生结点。然而,如果将这两个条件与顾客D相比,后者看来产生更纯的划分,但顾客D却不是一个有预测性的属性,因为每个样本在该属性上的值都是唯一的。即使在不太极端情形下,也不会希望产生大量输出的测试条件,因为与每个划分相关联的记录太少,以致不能作出可靠的预测。 解决该问题的策略有两种。第一种策略是限制测试条件只能是二元划分,CART这样的决策树算法采用的就是这种策略:另一种策略是修改评估划分的标准,把属性测试条件产生的输出数也考虑进去,例如,决策树算法C4.5采用称作增益率( gain ratio)的划分标准来评估划分。增益率定义如下: 建立决策树之后,可以进行树剪枝( tree-pruning),以减小决策树的规模。决策树过大容易受所谓过分拟合( overfitting)现象的影响。通过修剪初始决策树的分支,剪枝有助于提高决策树的泛化能力。过分拟合和树剪枝问题将在4.4节更详细地讨论。 Web使用挖据就是利用数据挖据的技术,从Web访问日志中提取有用的模式。这些模式能够揭示站点访问者的一些有趣特性:例如,一个人频繁地访问某个Web站点,并打开介绍同一产品的网页,如果商家提供一些打折或免费运输的优惠,这个人很可能会购买这种商品。 在Web使用挖掘中,重要的是要区分用户访问和Web机器人( Web robot)访问,Web机器人(又称Web爬虫)是一个软件程序,它可以自动跟踪嵌入网页中的超链接,定位和获取 Iinternet上的信息。这些程序安装在搜素引的入口,收集索引网页必须的文档。在应用Web挖掘技术分析人类的测览习惯之前,必须过滤掉Web机器人的访问。 下面是对决策树归纳算法重要特点的总结。 (1)决策树归纳是一种构建分类模型的非参数方法。换句话说,它不要求任何先验假设,不假定类和其他属性服从一定的概率分布(不像第5章介绍的一些技术)。 (2)找到最佳的决策树是NP完全问题。许多决策树算法都采取启发式的方法指导对假设空间的搜索。例如,4.3.5节中介绍的算法就采用了一种贪心的、自顶向下的递归划分策略建立决策树 (3)已开发的构建决策树技术不需要昂贵的计算代价,即使训练集非常大,也可以快速建立模型。此外,决策树一旦建立,未知样本分类非常快,最坏情况下的时间复杂度是O(w),其中w是树的最大深度。 (4)决策树相对容易解释,特别是小型的决策树。在很多简单的数据集上,决策树的准确率也可以与其他分类算法相媲美。 (5)决策树是学习离散值函数的典型代表。然而,它不能很好地推广到某些特定的布尔问题。个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1)。对这样的函数准确建模需要一棵具有2^d个结点的满决策树,其中d是布尔属性的个数(见本章习题1) (6)决策树算法对于噪声的干扰具有相当好的鲁棒性,采用避免过分拟合的方法之后尤其如此。避免过分拟合的方法将在4.4节介绍。 (7)元余属性不会对决策树的准确率造成不利的影响。一个属性如果在数据中它与另一个属性是强相关的,那么它是冗余的。在两个冗余的属性中,如果已经选择其中一个作为用于划分的属性,则另一个将被忽略。然而,如果数据集中含有很多不相关的属性(即对分类任务没有用的属性),则某些不相关属性可能在树的构造过程中偶然被选中,导致决策树过于庞大。通过在预处理阶段删除不相关属性,特征选择技术能够帮助提高决策树的准确率。我们将在4.4.3节考察不相关属性过多的问题。 (8)由于大多数的决策树算法都采用自顶向下的递归划分方法,因此沿着树向下,记录会越来越少。在叶结点,记录可能太少,对于叶结点代表的类,不能做出具有统计意义的判决,这就是所谓的数据碎片( data fragmentation)问题,解决该问题的一种可行的方法是,当样本数小于某个特定值时停止分裂。 (9)子树可能在决策树中重复多次,如图4-19所示,这使得决策树过于复杂,并且可能更难解释。当决策树的每个内部结点都依赖单个属性测试条件时,就会出现这种情形。由于大多数的决策树算法都采用分治划分策略,因此在属性空间的不同部分可以使用相同的测试条件,从而导致子树重复问题。 (10)迄今为止,本章介绍的测试条件每次都只涉及一个属性。这样,可以将决策树的生长过程看成划分属性空间为不相交的区域的过程,直到每个区域都只包含同一类的记录(见图4-20)。两个不同类的相邻区域之间的边界称作决策边界( decision boundary),由于测试条涉及单个属性,因此决策边界是直线,即平行于“坐标轴”,这就限制了决策树对连续属性之间复杂关系建模的表达能力。图4-21显示了一个数据集,使用一次只涉及一个属性的测试条件的决策树算法很难有效地对它进行分类。 斜决策树( oblique decision tree)可以克服以上的局限,因为它允许测试条件涉及多个属性。图4-21中的数据集可以很容易地用斜决策树表示,该斜决策树只有一个结点,其测试条件为: x+y<1 尽管这种技术具有更强的表达能力,并且能够产生更紧凑的决策树,但是为给定的结点找出最佳测试条件的计算可能是相当复杂的。 构造归纳( constructive induction)提供另一种将数据划分成齐次非矩形区域的方法(见2.3.5节),该方法创建复合属性,代表已有属性的算术或逻辑组合。新属性提供了更好的类区分能力,并在决策树归纳之前就增广到数据集中。与斜决策树不同,构造归纳不需要昂贵的花费,因为在构造决策树之前,它只需要一次性地确定属性的所有相关组合。相比之下,在扩展每个内部结点时,斜决策树都需要动态地确定正确的属性组合。然而,构造归纳会产生冗余的属性,因为新创建的属性是已有属性的组合 (11)研究表明不纯性度量方法的选择对决策树算法的性能影响很小,这是因为许多度量方法相互之间都是一致的,如图4-13所示。实际上,树剪枝对最终决策树的影响比不纯性度量的选择的影响更大。
4.3.4选择最佳划分的度量
1.二元属性分划分2.标称属性的划分
3.连续属性的划分
4. 增益率
4.3.5 决策树归纳算法4.3.6例子:Web机器人检测
4.3.7决策树归纳特点