2.3 分类算法

分类算法和回归算法是对真实世界建模的不同方法。分类模型的输出是离散的,例如大自然的生物被划分为不同的种类,是离散的。回归模型的输出是连续的,例如人的身高变化过程是一个连续过程,而不是离散的。

因此,在实际建模过程时,采用分类模型还是回归模型,取决于你对任务(真实世界)的分析和理解。

2.3.1 常用分类算法的优缺点

接下来介绍常用分类算法的优缺点,如表2-1所示。

表2-1 常用分类算法的优缺点

续表

2.3.2 分类算法的评估方法

分类评估方法的主要功能是用来评估分类算法的好坏,而评估一个分类算法的好坏又包括许多项指标。了解各种评估方法,在实际应用中选择正确的评估方法是十分重要的。

几个常用术语

这里首先介绍几个常见的模型评价术语,现在假设我们的分类目标只有两类,即正例(Positive)和负例(Negative)。

(1)True Positives(TP):被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数。

(2)False Positives(FP):被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数。

(3)False Negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数。

(4)True Negatives(TN):被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

表2-2是这4个术语的混淆矩阵,下面是相应的说明。

(1)P=TP+FN表示实际为正例的样本个数。

(2)True、False描述的是分类器是否判断正确。

(3)Positive、Negative是分类器的分类结果,如果正例计为1、负例计为-1,即Positive=1、Negative=-1。若用1表示True,用-1表示False,那么实际的类标=TF×PN,TF为True或False,PN为Positive或Negative。

例如True Positives(TP)的实际类标=1×1=1,为正例,False Positives(FP)的实际类标=(-1)×1=-1,为负例,False Negatives(FN)的实际类标=(-1)×(-1)=1,为正例,True Negatives(TN)的实际类标=1×(-1)=-1,为负例。

表2-2 4个术语的混淆矩阵

二分类算法评价指标

(1)正确率(accuracy)

正确率是最常见的评价指标,accuracy = (TP+TN)/(P+N)。正确率是被分对的样本数在所有样本数中的占比,通常来说,正确率越高,分类器越好。

(2)错误率(error rate)

错误率则与正确率相反,描述被分类器错分的比例,error rate = (FP+FN)/(P+N)。对某一个实例来说,分对与分错是互斥事件,所以accuracy =1-error rate。

(3)灵敏度(sensitivity)

sensitivity = TP/P,表示的是所有正例中被分对的比例,衡量了分类器对正例的识别能力。

(4)特异性(specificity)

specificity = TN/N,表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力。

(5)精度(precision)

precision=TP/(TP+FP),精度是精确性的度量,表示被分为正例的实例中实际为正例的比例。

(6)召回率(recall)

召回率是对覆盖面的度量,度量有多少个正例被分为正例,recall=TP/(TP+FN)= TP/P=sensitivity,可以看到召回率与灵敏度是一样的。

(7)其他评价指标

• 计算速度:分类器训练和预测需要的时间;

• 鲁棒性:处理缺失值和异常值的能力;

• 可扩展性:处理大数据集的能力;

• 可解释性:分类器预测标准的可理解性,像决策树产生的规则就是很容易理解的,而神经网络的一堆参数就不好理解,我们只好把它看成一个黑盒子。

(8)精度和召回率反映了分类器分类性能的两个方面。如果综合考虑精度与召回率,可以得到新的评价指标F1分数,也称为综合分类率:

为了综合多个类别的分类情况,评测系统整体性能,经常采用的还有微平均F1(micro-averaging)和宏平均F1(macro-averaging)两种指标。

• 宏平均F1与微平均F1是以两种不同的平均方式求取的全局F1指标。

• 宏平均F1的计算方法是先对每个类别单独计算F1值,再取这些F1值的算术平均值作为全局指标。

• 微平均F1的计算方法是先累加计算各个类别的值,再由这些值求出F1值。

• 由两种平均F1的计算方式不难看出,宏平均F1平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均F1平等考虑样本集中的每一个样本,所以它的值受到常见类别的影响比较大。

如图2-3所示,ROC曲线(Receiver Operating Characteristic Curve,受试者工作特征曲线)是以灵敏度(真正例率)为纵坐标,以1减去特异性(假正例率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡儿坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve,AUC)来评价模型,AUC越大,模型越可靠。

图2-3 ROC曲线

PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标。该曲线所对应的面积(AUC)实际上是目标检测中常用的评价指标平均精度(Average Precision,AP)。AP越高,说明模型性能越好。

2.3.3 正确率能否很好地评估分类算法

不同算法有不同特点,在不同数据集上有不同的表现效果,因此要根据特定的任务选择不同的算法。如何评价分类算法的好坏,要具体任务具体分析。对于决策树,主要用正确率去评估,但是其他算法,只用正确率能很好地评估吗?答案是否定的。

正确率确实是一个很直观、很好的评价指标,但是有时候正确率高并不能完全代表一个算法就好。比如对某个地区进行地震预测,地震分类属性分为:0代表不发生地震、1代表发生地震。我们都知道,不发生的概率是极大的。对于分类器而言,如果分类器不加思考,对每一个测试样例的类别都划分为0,达到99%的正确率。那么,问题来了,真的发生地震时,这个分类器毫无察觉,带来的后果将是巨大的。很显然,99%正确率的分类器并不是我们想要的。出现这种现象的原因主要是数据分布不均衡,类别为1的数据太少,错分了类别1达到了很高的正确率却忽视了研究者本身最为关注的情况。

2.3.4 什么样的分类器是最好的

对某一个任务,某个具体的分类器不可能同时满足或提高所有上面介绍的指标。

如果一个分类器能正确分对所有的实例,那么各项指标都已经达到最优,但这样的分类器往往不存在。比如之前说的地震预测,虽然不能百分百预测地震的发生,但实际情况中能容忍一定程度的误报。假设在1000次预测中,共有5次预测发生了地震,真实情况中有一次发生了地震,其他4次则为误报。正确率由原来的999/1000=99.9%下降为996/1000=99.6%。召回率由0/1=0%上升为1/1=100%。对此可解释为,虽然预测失误了4次,但真的地震发生前,分类器能预测对,没有错过,这样的分类器实际意义更大,正是我们想要的。在保证一定正确率的前提下,要求分类器的召回率尽量高。