第八章 分类:基本概念

8.1 基本概念

8.1.1  什么是分类

        分类是一种重要的数据分析形式,它提取刻画重要数据类的模型。这种模型称为分类器,预测分类的(离散的、无序的)类标号。这些类别可以用离散值表示,其中值之间的次序没有意义。

8.1.2  分类的一般方法

        数据分类是一个两阶段过程:(1)学习阶段(构建分类模型)(2)分类阶段(使用模型预测给定数据的类标号)



        在第一阶段,建立描述预先定义的数据类或概念集的分类器。这是学习阶段,其中分类算法通过分析或从训练集“学习”来构造分类器。训练集由数据库元组和与它们相关联的类标号组成。构成训练集的元组称为训练元组

        在第二阶段,使用模型进行分类。首先评估分类器的预测准确率。如果我们使用训练集来度量分类器的准确率,则评估可能是乐观的,因为分类器趋向于过分拟合该数据。因此需要使用由检验元组和与它们相关联的类标号组成的检验集。它们独立于训练元组,意指不知用它们构造分类器。分类器在给定检验集上的准确率是分类器正确分类的检验元组所占的百分比。如果认为分类器的准确率是可以接受的,那么就可以用它对类标号未知的数据元组进行分类。

8.2 决策树归纳

         详细内容:请链接

8.3 贝叶斯分类方法

         朴素贝叶斯分类方法:请链接

8.4 基于规则的分类

         详细内容:请链接

8.5 模型评估与选择

8.5.1  评估分类器性能的度量

        本节介绍一些评估度量,用来评估分类器预测元组类标号的性能或“准确率”。我们将考虑各类元组大致均匀分布的情况,也考虑类不平衡的情况(例如,在医学化验中,感兴趣的重要类稀少)。本节介绍的分类器评估度量包括准确率(又称为“识别率”)、敏感度(或称为召回率)、特效性精度F1FB

        分类器的准确率最好在检验集上估计。

        讨论一下正元组(感兴趣的主要类的元组)和负元组(其他元组)。例如,给定两个类,正元组可能是buys_computer=yes,负元组是buys_computer=no。假设在有标号的元组组成的训练集上使用分类器。P是正元组数,N是负元组数。对于每个元组,我们把分类器预测的类标号与该元组一致的类标号进行比较。


        真正例/真阳性(TP):是指被分类器正确分类的正元组。令TP为真正例的个数。

        真负例/真阴性(TN):是指被分类器正确分类的负元组。令TN为真负例的个数。

        假正例/假阳性(FP):是被错误地标记为正元组的负元组(例如,类buys_computer=no的元组,被分类器预测为buys_computer=yes)。令FP为假正例的个数。

        假负例/假阴性(FN):是被错误地标记为负元组的正元组(例如,类buys_computer=yes的元组,被分类器预测为buys_computer=no)。令FN为假负例的个数。

       混淆矩阵:分析分类器识别不同类元组的一种有用工具。TP和TN告诉我们分类器何时分类正确,而FP和FN告诉我们分类器何时分类错误。给定m个类(m>=2),混淆矩阵是一个至少m*m的表。理想地,具有高准确率的分类器,FP和FN接近0。该表可能有附加的行和列,提供合计。

一个混淆矩阵,显示了正元组和负元组的合计

        下面就从准确率开始,考察评估度量。

        准确率:分类器在给定检验集上的准确率是被该分类器正确分类的元组所占的百分比。即

        当类分布相对平衡时,准确率最有效。

        错误率或误分类率:我们可以说分类器M的错误率或误分类率,它是1-accuracy(M),其中accuracy(M)是M的准确率。计算公式如下:

        现在,考虑类不平衡问题,其中感兴趣的主类是稀少的。也就是说,数据集的分布反映负类显著地占多数,而正类占少数。例如,医疗中的癌症,如果该分类器可能只是正确地标记非癌症元组,而错误地对所有癌症元组分类。因此,需要其他的度量,评估分类器正确地识别正元组的情况和正确地识别负元组的情况。

        灵敏性和特效型:灵敏度也成为真正例(识别)率(即正确识别的正元组的百分比),而特效型是真负例率(即正确识别的负元组的百分比)。这些度量定义为

        例子:下图是医疗数据的混淆矩阵。该分类器的灵敏度为90/300=30.00%。特效型为9650/9700=98.56%。该分类器的总体正确率为9650/10000=96.50%。这样,我们注意到,尽管该分类器具有很高的准确率,但是考虑到它很低的灵敏度,它正确标记正类(稀有类)的能力还是很差。

        精度与召回率:精度可以看做精确性的度量(即标记为正类的元组实际为正类所占的百分比),而召回率是完全性的度量(即正元组标记为正的百分比)。计算如下:

        精度与召回率之间趋向于呈现逆关系,有可能以降低一个为代价而提高另一个。精度和召回率通常一起使用,用固定的召回率值比较精度,或用固定的精度比较召回率。

F度量和FB度量:它们是精度和召回率的方法的组合。F度量又称为F1分数或F分数,定义如下:

        其中,B是非负实数。F度量是精度和召回率的调和均值,它赋予精度和召回率相等的权重。FB度量是精度和召回率加权度量。它赋予召回率权重是赋予精度的B倍。通常使用的FB是F2和F0.5


                              准确率并不适合所有的情况!

        因为在分类问题中,我们通常假定所有的元组都是唯一可分类的,即每个训练元组都只属于一个类。然而,大型数据库中的数据非常多样化,假定所有的对象都唯一可分类并非总是合理的。假定每个元组可以属于多个类是更可行的。这样,准确率度量是不合适的。如果这样的话,就不是返回类标号,而是返回类分布概率是有用的。这样,准确率可以采用二次猜测试探:一个类预测被断定是正确的,如果它与最可能的或次可能的类一致。

        除了基于准确率的度量外,还可以根据其他方面比较分类器:

        速度:这涉及产生和使用分类器的计算开销。

        鲁棒性:这是假定数据有噪声或有缺失值时分类器做出正确预测的能力。通常,鲁棒性用噪声和缺失值渐增的一系列合成数据集评估。

        可伸缩性:这涉及给定大量数据集,有效地构造分类器的能力。通常,可伸缩性用规模渐增的一系列数据集评估。

        可解释性:这涉及分类器或预测器提供的理解和洞察水平。可解释性是主观的,因而很难评估。

        概括的说,这节我们介绍了评估度量。当数据比较均衡地分布时,准确率效果最好。其他度量,如灵敏度(或召回率)、特效型、精度、F和FB更适合类不平衡问题。

8.5.2  保持方法和随机二次抽样、交叉验证、自助法

        这些都是基于给定数据的随机抽样划分,评估准确率的常用技术。即如何分配哪些数据集作为训练集,哪些作为检验集。

        保持方法是我们迄今为止讨论准确率时暗指的方法。在这种方法中,给定数据随机地划分成两个独立的集合:训练集和检验集。通常,2/3的数据分配到训练集,其余1/3分配到检验集。使用训练集导出模型,其准确率用检验集估计。估计是悲观的,因为只有一部分初始数据用于导出模型。

        随机二次抽样是保持方法的一种变形,它将保持方法重复k次。总准确率估计取每次迭代准确率的平均值。

        K—折交叉验证:初始数据随机地划分成k个互不相交的子集或“折”D1,D2,…,Dk,每个折的大小大致相等。训练和检验进行k次。在第i迭代,分区Di用作检验集,其余的分区一起用作训练模型。与上面的保持和随机二次抽样不同,这里每个样本用于训练的次数相同,并且用于检验一次。准确率估计是k次迭代正确分类的元组总数除以初始数据中的元组总数。

        留一是k-折交叉验证的特殊情况,其中k设置为初始元组数。也就是说,每次只给检验集“留出”一个样本。

        一般地,建议使用分层10-折交叉验证估计准确率,因为它具有相对较低的偏倚和方差。

        自助法:从给定训练元组中有放回的均匀抽样。也就是说,每当选中一个元组,这个元组同样也可能被再次选中并被再次添加到训练集中。

        有多种自助方法。最常用的一种是.632自助法,其方法如下:假定给定的数据集包含d个元组。该数据集有放回地抽样d次,产生d个样本的自助样本集或训练集。原数据元组中的某些元组很可能在该样本集中出现多次。没有进入该样本集的数据元组最终形成检验集。假设进行这样的抽样多次。其结果是,在平均情况下,63.2%原数据元组将出现在自助样本中,而其余38.8%的元组将形成检验集(因此,称为.632自助法)。

8.5.3  使用统计显著性检验选择模型。

8.5.4  基于成本效益和ROC曲线比较分类器

8.6 提高分类准确率的技术

        组合分类器是一个复合模型,有多个分类器组合而成。个体分类器投票,组合分类器基于投票返回类标号预测。

        组合分类器往往比它的成员分类器更准确。

        装袋提升随机森林都是流行的组合分类方法。

8.6.1  组合分类方法简介

        装袋、提升和随机森林都是组合分类方法的例子。见下图


        组合分类把k个学习得到的模型(或基分类器)M1,M2,… Mk组合在一起,旨在创建一个改进的复合分类模型M*。使用给定的数据集D创建k个训练集D1,D2,…Dk,其中Di用于创建分类器Mi。给定一个待分类的新数据元组,每个基分类器通过返回类预测投票。组合分类器基于基分类器的投票返回类预测。

        组合分类器往往比它的基分类器更准确。例如,考虑一个进行多数表决的组合分类器。也就是说,给定一个待分类元组X,它收集由基分类器返回的类标号预测,并输出占多数的类。基分类器可能出错时,但是仅当超过一半的基分类器出错时,组合分类器才会误分类X。当模型之间存在显著差异时,组合分类器产生更好的结果。也就是说,理想地,基分类器之间几乎不相关。基分类器还应该优于随机猜测。每个基分类器都可以分配到不同的CPU上,因此组合分类方法是可并行的。

8.6.2  袋装

        装袋的基本思想:给定d个元组的集合D,对于迭代(i=1,2,…,k),d个元组的训练集Di采用有放回抽样,由原始元组集D抽取。每个训练集都是一个自助样本。由于有放回抽样,D的某些元组可能不在Di中出现,而其他元组可能出现多次。由每个训练集Di学习,得到一个分类模型Mi。为了对一个未知元组X分类,每个分类器Mi返回它的类预测,算作一票。装袋分类器M*统计得票,并将得票最高的类赋予X。

        通过取给定检验元组的每个预测的平均值,装袋也可以用于连续值的预测。

        算法如下:


        装袋分类器的准确率通常显著高于从原训练集D导出的单个分类器的准确率。对于噪声数据和过分拟合的影响,它也不会很差并且更鲁棒。准确率的提高是因为复合模型降低了个体分类器的方差。

8.6.3  提升和AdaBoost

        提升的基本思想:权重赋予每个训练元组。迭代地学习k个分类器。学习得到分类器Mi之后,更新权重,使得其后的分类器Mi+1“更关注”Mi误分类的训练元组。最终提升的分类器M*组合每个个体分类器的表决,其中每个分类器投票的权重是其准确率的函数。

        AdaBoost算法:请链接

         “提升与装袋相比,情况如何?”由于提升关注误分类元组,所以存在结果复合模型对数据过分拟合的危险。因此,“提升的”结果模型有时可能没有从相同数据导出的单一模型的准确率高。装袋不太受过分拟合的影响。尽管与单个模型相比,两者都能够显著提高准确率,但是提升往往得到更高的准确率。

8.6.4  随机森林

8.6.5  提高类不平衡数据的分类准确率

        本节考察提高类不平衡数据分类准确率的一般方法。这些方法包括:(1)过抽样(2)欠抽样(3)阈值移动(4)组合技术。前三种不涉及对分类模型结构的改变。也就是说,过抽样和欠抽样改变训练集中的元组分布;阈值移动影响对新数据分类时模型如何决策。组合方法沿用8.6.2——8.6.4节介绍的技术。

        过抽样和欠抽样都改变训练集的分布,使得稀有(正)类能够很好地代表。过抽样对正元组重复采样,使得结果训练集包含相同个数的正元组和负元组。欠抽样减少负元组的数量。它随机地从多数(负)类中删除元组,直到正元组与负元组的数量相等。

        例子:假设训练集包含100个正元组和1000个负元组。在过抽样中,复制稀有类元组,形成包含1000个正元组和1000个负元组的新训练集。在欠抽样中,随机地删除负元组,形成包含100个正元组和100个负元组的新训练集。

        不平衡问题的阈值移动方法不涉及抽样。它用于对给定输入元组返回一个连续输出值的分类器。即对于输入元组X,这种分类器返回一个映射f(X)->[0,1]作为输出。该方法不是操控训练元组,而是基于输出值返回类决策。最简单的方法是,对于某个阈值t,满足f(X)>=t的元组X被视为正的,而其他元组被看做负的。阈值移动方法尽管不像过抽样和欠抽样那么流行,但是它简单,并且对于两类不平衡数据已经表现的相当成功。

        上面介绍的方法对两类任务的类不平衡问题相对有效。实验观察表明,阈值移动和组合方法优于过抽样和欠抽样。即便在非常不平衡的数据集上,阈值移动也很有效。多类任务上的类不平衡困难的多,那里过抽样和阈值移动都不太有效果。尽管阈值移动和组合方法变现出了希望,但是多累不平衡问题寻找更好的解决方案依然是尚待解决的问题。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值