[返回]
计算机世界1999年第20期
清华大学计算机系 田金兰 李 奔
一、分类器的基本概念
分类是数据挖掘的一种非常重要的方法。分类的概念是在已有数据的基础上学会一个分类函数或构造出一个分类模型(即我们通常所说的分类器(Classifier))。该函数或模型能够把数据库中的数据纪录映射到给定类别中的某一个,从而可以应用于数据预测。要构造分类器,需要有一个训练样本数据集作为输入。训练集(Training
set)
由一组数据库纪录或元组构成,每个纪录是一个由有关字段值组成的特征向量,我们把这些字段称做属性(Attribute),把用于分类的属性叫做标签(Label),标签属性也就是训练集的类别标记。一个具体的样本的形式可以表示为(v1,
v2...... vn; c), 其中vi 表示字段值,c 表示类别。
训练集是构造分类器的基础。训练集是包含一些属性的一个数据库表格,其中的一个属性被制定为分类标签。标签属性的类型必须是离散的,且标签属性的可能值的数目越少越好(最好是两或三个值)。标签值的数目越少,构造出来的分类器的错误率越低。
从训练集中自动地构造出分类器的算法叫做生成器(Inducer)。在生成分类器后,可以利用它来对数据集中不包含标签属性的记录进行分类,标签属性的值也可以用分类器来预测。
二、几种基本的分类器
1. 决策树分类器
提供一个属性集合,决策树通过在属性集的基础上作出一系列的决策,将数据分类。这个过程类似于通过一个植物的特征来辨认植物。可以应用这样的分类器来判定某人的信用程度,比如,一个决策树可能会断定“一个有家、拥有一辆价值在1.5
万到2.3
万美元之间的轿车、有两个孩子的人”拥有良好的信用。决策树生成器从一个“训练集”中生成决策树。SGI
公司的数据挖掘工具MineSet
所提供的可视化工具使用树图来显示决策树分类器的结构,在图中,每一个决策用树的一个节点来表示。图形化的表示方法可以帮助用户理解分类算法,提供对数据的有价值的观察视角。生成的分类器可用于对数据的分类。
2. 选择树分类器
选择树分类器使用与决策树分类器相似的技术对数据进行分类。与决策树不同的是,选择树中包含特殊的选择节点,选择节点有多个分支。比如,在一棵用于区分汽车产地的选择树中的一个选择节点可以选择马力、汽缸数目或汽车重量等作为信息属性。在决策树中,一个节点一次最多可以选取一个属性作为考虑对象。在选择树中进行分类时,可以综合考虑多种情况。选择树通常比决策树更准确,但是也大得多。
选择树生成器使用与决策树生成器生成决策树同样的算法从训练集中生成选择树。MineSet
的可视化工具使用选择树图来显示选择树。树图可以帮助用户理解分类器,发现哪个属性在决定标签属性值时更重要。同样可以用于对数据进行分类。
3. 证据分类器
证据分类器通过检查在给定一个属性的基础上某个特定的结果发生的可能性来对数据进行分类。比如,它可能作出判断,一个拥有一辆价值在1.5
万到2.3 万美元之间的轿车的人有70 %的可能是信用良好的,而有30
%的可能是信用很差。分类器在一个简单的概率模型的基础上,使用最大的概率值来对数据进行分类预测。
与决策树分类器类似,生成器从训练集中生成证据分类器。MineSet
的可视化工具使用证据图来显示分类器,证据图由一系列描述不同的概率值的饼图组成。证据图可以帮助用户理解分类算法,提供对数据的深入洞察,帮助用户回答像“如果...
怎么样" 一类的问题。同样可以用于对数据进行分类。
三、分类器的准确度评估方法
1. 影响一个分类器错误率的因素
1、训练集的记录数量。生成器要利用训练集进行学习,因而训练集越大,分类器也就越可靠。然而,训练集越大,生成器构造分类器的时间也就越长。错误率改善情况随训练集规模的增大而降低。
2、属性的数目。更多的属性数目对于生成器而言意味着要计算更多的组合,使得生成器难度增大,需要的时间也更长。有时随机的关系会将生成器引入歧途,结果可能构造出不够准确的分类器(这在技术上被称为过分拟合)。因此,如果我们通过常识可以确认某个属性与目标无关,则将它从训练集中移走。
3、属性中的信息。有时生成器不能从属性中获取足够的信息来正确、低错误率地预测标签(如试图根据某人眼睛的颜色来决定他的收入)。加入其他的属性(如职业、每周工作小时数和年龄),可以降低错误率。
4、待预测记录的分布。如果待预测记录来自不同于训练集中记录的分布,那么错误率有可能很高。比如如果你从包含家用轿车数据的训练集中构造出分类器,那么试图用它来对包含许多运动用车辆的记录进行分类可能没多大用途,因为数据属性值的分布可能是有很大差别的。
2. 评估方法
有两种方法可以用于对分类器的错误率进行评估,它们都假定待预测记录和训练集取自同样的样本分布。
(1) 保留方法(Holdout):记录集中的一部分(通常是2/3)作为训练集,保留剩余的部分用作测试集。生成器使用2/3
的数据来构造分类器,然后使用这个分类器来对测试集进行分类,得出的错误率就是评估错误率。
虽然这种方法速度快,但由于仅使用2/3
的数据来构造分类器,因此它没有充分利用所有的数据来进行学习。如果使用所有的数据,那么可能构造出更精确的分类器。
(2) 交叉纠错方法(Cross validation):数据集被分成k
个没有交叉数据的子集,所有子集的大小大致相同。生成器训练和测试共k
次;每一次,生成器使用去除一个子集的剩余数据作为训练集,然后在被去除的子集上进行测试。把所有得到的错误率的平均值作为评估错误率。
交叉纠错法可以被重复多次(t),对于一个t 次k
分的交叉纠错法,k *t
个分类器被构造并被评估,这意味着交叉纠错法的时间是分类器构造时间的k
*t
倍。增加重复的次数意味着运行时间的增长和错误率评估的改善。我们可以对k
的值进行调整,将它减少到3 或5,这样可以缩短运行时间。然而,减小训练集有可能使评估产生更大的偏差。
通常Holdout 评估方法被用在最初试验性的场合,或者多于5000
条记录的数据集;交叉纠错法被用于建立最终的分类器,或者很小的数据集。
四、MineSet 中的分类器
1. 决策树分类器
决策树分类器把数据表中的每条记录归入一类,用于分类的结构是一棵决策树。对于MineSet
工具来说,生成决策树分类器需要使用的训练集是一个ASCII
码或二进制的文件,或者Oracle、Informix、Sybase
数据库中的一张表。要使用分类器,就必须提供一组记录,这些记录具有被分类器使用的那些属性,而不必提供分类属性。

下面我们以一个汽车数据集为例来说明如何产生决策树分类器,以及决策树分类器可视化树图的含义。汽车数据集结构如表所示。
汽车数据集包括70 年代到80
年代早期不同模式的汽车的详细信息。我们挑选出Weight、Acceleration
和Mpg
等字段作为属性字段,将产地标为标签字段。在得到这样一个数据集以后,你可能想知道不同产地的汽车的特征是什么。然后如果再提供给你新的汽车数据,那么你可以尝试根据它的特征判断出其产地。
在MineSet 工具中我们可以构造一棵决策树来完成上面的工作。
打开数据集以后,MineSet 自动将唯一的离散属性Origin
属性作为标签属性。所谓离散属性是指具有有限数目值的属性。应当选择具有比较少值的属性作为标签属性,两个或者三个。如果数据集中没有离散属性,则必须使用工具管理器中的数据转换功能来生成离散属性。
在MineSet 工具箱中选择决策树生成器,选取Classifrie &Error
模式,并且对决策树生成器的一些选项进行配置后,就可以产生决策树分类器。MineSet
的可视化工具将自动显示生成的决策树,如图1 所示。
决策树由连线连接的节点组成。存在两种类型的节点:决策节点和叶子节点。决策节点指定在该节点被检验的属性的属性值(或范围)在线条上被显示出来,每一种可能的值和一条线一一对应。叶子节点指定一个类别。
每个节点上的垂直条显示类在该节点上的分布。每个节点的基石具有自己的高度和颜色。高度对应到达这个节点的训练集的权重。权重越高,在每个节点上的类分布就越可靠。基石上的颜色指示其子树的错误率评估,红色代表高错误率,黄色表示中等,绿色表示低错误率。如果没有测试集到达该节点,则用黑色来表示,这样就没有错误率评估。
指向一个节点,屏幕上将显示下列信息:
1、子树权重该节点子树训练集的权重。这些值在图中被映射为基石的高度。
2、测试集错误率子树错误率的评估。标准的背离越高,错误率评估越不精确。
3、测试集权重测试集中到达该节点的记录的权重。
4、纯度0 到100
之间的一个数字,用于表示标签属性在该节点的分布结构。如果某个节点包含的记录都属于一个类,则该节点纯度为100;如果在该节点所有标签属性具有相同的权重,则纯度为0。
每条线条标出节点属性被测试的值(或值的范围)。
从图1 中的决策树我们可以看出,Cubic Inches
可以作为辨别美国产汽车的一个很好的特征。大引擎(>169.5 Cubic
inches)的汽车都产自美国,而小引擎的则产自各地。根节点(它表示整个训练集)拥有更多的美国产汽车(62.5
%),而在以Cubic inches
为基准作一次划分后,对于小引擎的汽车则较难预测出它们的产地,根节点的纯度为16.2,表明一个类(这儿是美国产)占主要地位。右节点(Cubic
inches >169.5)的纯度为96.81,表明我们找出了一个纯度很高的子分布(几乎所有的大引擎汽车都产自美国)。事实上,右节点的错误率估计为0
%,显示为绿色基石;而左节点的纯度为0.23,错误率也要高得多,为31.25
%,基石为橙色。小引擎汽车的分类比原始数据集要困难得多,几乎每一类的数量都是一样的。
2. 选择树分类器
选择树分类器将每条记录都归入一个类中。归类的基本结构为决策树。
同样以汽车数据集为例。为生成选择树,我们在MineSet
中打开汽车数据集,选择选择树生成器和Classifier &Error
模式,并对生成器的一些选项进行设置,以微调选择树生成算法。确认后即可生成选择树生成器,MineSet
将自动启动可视化工具显示选择树图, 如图2 所示。
选择树通过选择节点(Option Nodes)对通常的决策树进行扩展。选择节点显示了在树中的一个决策节点能作出的几种选择。例如,在图2
中,根节点是一个具有5
种选择的选择节点:引擎尺寸、汽缸、重量、每加仑公里数、产地。
选择节点提供两个功能:
(1)
通过显示可以作出的几种选择,加强了影响分类标签的因素的可理解性。不同于决策树的一个节点一个属性,选择节点给出多个选择。在选择树上浏览时,可以选择:易于理解的选项;根据以前的经验,认为更适合的预测选项;基于错误率估计的选项。
在图2 中,可以因为Cylinder 值较少而选用它,或由于Weightlbs
估计错误率低而选用它。注意错误估计只是估计,一般而言,选项间的错误率低于两倍方差,则可以认为二者无差别。
(2)对各选项的统筹估计可以减少误差。每个选项可以被看成是一个“专家”提出的建议方向。选择节点综合考虑了多个“专家”的意见而生成了低错误率的分类器。
如图2 所示,根节点错误率为0.76
%,比各个子节点都低。请注意,该训练集不一定包含所有Brand
信息(会缺一些),对所缺少的,选择树猜测为占多数的类(美国产),因而带来了错误。而考虑了其他选项时,错误率被平均,从而减少了错误。
选择树有两个缺点:构造选择树的耗时是决策树的10 ~15
倍,而且树可视化文件复杂度高10 ~15
倍。但是选择树生成器能增强可理解性,降低错误率,因而抵消了上述缺点。
3 .生成器运行模式
在MineSet 中运行一个生成器有以下四种模式:
1、分类器和错误率模式(Classifier &Error)。使用保留方法来构造一个分类器,数据的一部分被用于训练(通常是2/3),其余的用于测试,用户可以对保留方法的参数进行设置。这种模式是缺省的模式,并且被建议作为初始的试验,它速度很快,而且提供了错误评估。
2、分类器模式(Classifier Only)。使用所有的数据来构造分类器,没有错误评估,当数据量很少或者在建立最后的分类器时可以使用这种模式。
3、错误估计模式(Error Estimate)。在要求采用所有的数据并需要对分类器的错误进行评估时使用。这种模式使用交叉纠错方法,导致了运行时间长。交叉纠错方法将数据分成k
个子集,并且构造k
个分类器,这个过程可以重复多次,以增加评估的可信度。用户可以对子集个数和重复次数进行设置。当数据量很少的时候使用这种模式,这种模式生成的分类器与在分类器模式中产生的完全一样。
4、学习曲线模式(Learning Curve)。用于评价训练集大小对于分类器错误的影响。学习曲线显示的是由生成器产生的分类器的错误对生成该分类器的记录数目的函数的图像。
