分类(Classification)是一种重要的数据分析形式,它提取刻画重要数据类的模型。这种模型称为分类器,预测分类的(离散的、无序的)类标号。这些类别可以用离散值表示,其中值之间的次序没有意义。
分类可描述如下:从训练数据中确定函数模型 y=f ( x 1 , x 2 ,…, x d ),其中 x i ( i =1,…, d )为特征变量, y 为分类变量。当 y 为离散变量时,即dom( y )={ y 1 , y 2 ,…, y m },被称为分类。
分类也可定义为:分类的任务就是通过学习得到一个目标函数(Target Function) f ,把每个属性集 x 映射到一个预先定义的类标号 y 。
数据分类过程有以下两个阶段。
(1)学习阶段(构建分类模型)。
(2)分类阶段(使用模型预测给定数据的类标号)。
第一阶段,建立描述预先定义的数据类或概念集的分类器。在机器学习中,能够完成分类任务的算法,我们通常把它称为一个分类器(Classifier)。通常我们会将处理的数据称为数据集(Data Set)一个数据集通常来说包括3部分:①训练数据(Training Data)及其标签;②验证数据(Validation Data)及其标签;③测试数据(Testing Data)。需要特别强调的是,这3部分都是各自独立的,也就是说训练数据中的数据不能再出现在验证数据及测试数据中,验证数据也不能出现在测试数据中,这点在训练分类器时一定要特别注意。分类算法通过分析或从训练集“学习”来构造分类器。训练集由数据库元组和与它们相关联的类标号组成。构成训练集的元组称为训练元组。
第二阶段,使用模型进行分类。首先评估分类器的准确率。如果使用训练集来度量分类器的准确率,则评估可能是乐观的,因为分类器趋向于过分拟合该数据。因此,需要使用由检验元组和与它们相关联的类标号组成的检验集。它们独立于训练元组,即不用它们构造分类器。分类器在给定检验集上的准确率是分类器正确分类的检验元组所占的百分比。如果认为分类器的准确率是可以接受的,那么就可以用它对类标号未知的数据元组进行分类。图3-1展示了建立分类模型的一般方法。
图3-1 建立分类模型的一般方法
一般方法是,首先需要一个训练集,它由类标号已知的记录组成。使用训练集建立分类模型,该模型随后将运用于测试集,测试集由类标号未知的记录组成 [1] 。
1.评估分类器性能的度量
当建立好一个分类模型之后,就会考虑这个模型的性能或准确率如何,这里介绍几种分类器评估度量,如表3-1所示。
假设在有标号的元组组成的训练集上使用分类器, P 是正元组数, N 是负元组数。
表3-1 度量及公式
注意:某些度量有多个名称。TP、TN、FP、FN、 P 、 N 分别表示真正例、真负例、假正例、假负例、正样本数和负样本数。
这些术语是用于计算许多评估度量的“构件”,理解它们有助于领会各种度量的含义。
真正例/真阳性(True Positive,TP):是被分类器正确分类的正元组。令TP为真正例的个数。
真负例/真阴性(True Negative,TN):是被分类器正确分类的负元组。令TN为真负例的个数。
假正例/假阳性(False Positive,FP):是被错误地标记为正元组的负元组。令FP为假正例的个数。
假负例/假阴性(False Negative,FN):是被错误地标记为负元组的正元组。令FN为假负例的个数。
这些词汇总在混淆矩阵中,如表3-2所示。
表3-2 分类结果混淆矩阵
除基于准确率的度量外,还可以根据其他方面比较分类器。
(1)速度:这涉及产生和使用分类器的计算开销。
(2)稳健性:这是假的数据有噪声或有缺失值时分类器做出正确预测的能力。通常,稳健性用噪声和缺失值渐增的一系列合成数据集评估。
(3)可伸缩性:这涉及给定大量数据,有效地构造分类器的能力。通常,可伸缩性用规模渐增的一系列数据集评估。
(4)可解释性:这涉及分类器或预测其提供的理解和洞察水平。可解释性是主观的,因而很难评估。决策树和分类规则可能容易解释,但随着它们变得更复杂,它们的可解释性也随之消失。
概括地说,当数据类比较均衡地分布时,准确率效果最好。其他度量,如灵敏度、特效性、精度更适合类不平衡问题,那里主要感兴趣的类是稀少的。
2.如何获得可靠的分类器准确率估计
1)保持方法和随机二次抽样
(1)保持方法:将给定数据随机地划分成两个独立的集合——训练集和检验集。使用训练集导出模型,其准确率用检验集估计。估计是悲观的,因为只有一部分初始数据用于导出模型。
(2)随机二次抽样:将保持方法重复 k 次,总准确率估计取每次迭代准确率的平均值。
2)交叉验证
在k-折交叉验证(k-fold cross-validation)中,初始数据随机地划分成 k 个互不相交的子集或“折” D 1 , D 2 ,…, D k ,每个折的大小大致相等。训练和检验进行 k 次,在第 i 次迭代中,分区 D i 用作检验集,其余的分区一起用作训练模型。对于分类,准确率估计是 k 次迭代正确分类的元组总数除以初始数据中的元组总数。一般建议使用10-折交叉验证估计准确率,因为它具有相对较低的偏倚和方差。
3)自助法
自助法从给定训练元组中有放回地均匀抽样。
常用的一种是.632自助法,其方法如下:假设给定的数据集包含 d 个元组。该数据集有放回地抽样 d 次,产生 d 个样本的自助样本集或训练集。原数据元组中的某些元组很可能在该样本集中出现多次。没有进入该训练集的数据元组最终形成检验集。假设进行这样的抽样多次。其结果是,在平均情况下,63.2%的原数据元组将出现在自助样本中,而其余36.8%的原数据元组将形成检验集。
可以重复抽样过程 k 次,其中在每次迭代中,使用当前的检验集得到从当前自助样本得到的模型的准确率估计。模型的总体准确率则用下式估计:Acc( M )=∑{0.632×Acc( M i )_test_set+0.368×Acc( M i )_train_set};其中,Acc( M i )_test_set是自助样本 i 得到的模型用于检验集 j 的准确率。Acc( M i )_train_set是自助样本 i 得到的模型用于原数据元组集的准确率。对于小数据集,自助法效果很好。
4)其他方法
还有使用统计显著性检验选择模型、基于成本效益和ROC曲线比较分类器等方法。