衡量分类器的性能指标

来源:互联网 发布:mac口红铁锈红 编辑:程序博客网 时间:2024/06/05 05:48

评价一个分类器的metric的确有不少。 

error rate: 这个不讲了, 当然是错误率越低越好。

不过值得提到的就是可以通过一个被称为confusion matrix的办法直观展示classification error。 继而可以引出三个指标。 

如下一个three class problem:

表示的意思是总共有8只猫, 6只狗, 13只兔子。 我们的分类器把这17只动物分成了7只猫(5个TP(true positive), 2个FP(false positive)), 8只狗(3个TP, 5个FP), 12个兔子(11个TP, 1个FP)。 所有分对了的样本都位于对角线处。 对于二类分类问题, 可以建立如下的confusion matrix:


其中False Positive 又称为type I error, False Negative 有称为Type II error。 

有了上述的confusion matrix, 我们很容易计算出分类器的精度(precision), 召回率(recall), 以及综合二者优势的综合性指标Fmeasure。



注意, 高精度或者高的召回率很容易达到。 例如只要我们把所有的类都归为positive, 那么我们的召回率就是100%, 但是与此同时我们的精度却很差。 所以难点在于如何设计一个分类器, 使得两个指标均达到很高。

我们使用F measure综合去评价一个精度和召回率。 不难看出只有精度和召回率均达到很大的时候, 才会使得F指数达到很大。 也就是F指数越大, 我们的分类器的性能越好。


另一个衡量一个分类器的tool就是画出分类器的ROC曲线。 ROC 针对的是二元分类器。 

ROC的横纵坐标分别是TPR(True positive rate), FPR(false positive rate)。 

其中, TPR定义如下:


表示所有实际为是positve的样本被正确的判断为potive的样本数目比例。

FPR的定义如下:


表示在所有实际为negative的样本中, 被错误的分为postive的比例。

给定一个二元分类器模型, 和这个分类器的阈值, 我们从分类后的结果中就可以得到一个x = FPR, y = TPR的值。 

从(0, 0)到(1, 1)这条对角线将空间分成两部分, 左上和右下区域。 在这条线的左上部分代表着一个号的分类结果(胜过随机分类), 右下的区域代表好于随机猜测了:


完美分类位于(1, 0), 表示true positive 为1, false postive 为0。 上图的虚对角线是随机猜测得到的结果。 又叫做无识别率曲线。  

举个例子 100个positives, 100个negatives的训练样本。 一下是四种分类器(或者是同一分类器的四种阈值的设定):


上述四种结果在ROC空间中, 距离左上角越近的点的准确率越高,离右下角越近表明预测越不准。 不难看出三种分类器最好的是A。

B结果是随机猜测的结果了。


关于同一分类器的阈值设定。

对于同一个二元分类模型, 其阈值的设定或高或低, 每种阈值都会得到不同的FPR, TPR。 将同一个模型的每个阈值得到的(FPR, TPR)的结果画在ROC空间中, 就得到一个ROC曲线。不同的分类器, 阈值对ROC曲线形状的影响没规律可言。

对于同一个分类器之内, 阈值对分类器的影响是有一定的规律可循。

(1)阈值设为最高, 即所有样本都被分类为negative, 此时FP = 0, 所以FPR = 0%。 此时TP = 0, TPR = 0%。

所以, 我们知道阈值最高, 对应着ROC曲线的原点(0, 00)。

(2)阈值设定最低的时候, 所有的样本均分类为positive。 此时FPR = 100 %, TPR = 100 %, 位于ROC空间的位置是对角线(1, 1)。


ROC曲线下的面积AUC(area under curve)。

比较不同的分类模型的时候, 可以将每个模型的ROC曲线画出来,比较曲线下的面积作为模型优劣的指标。 

有如下指标 , AUC越大, 正确率越高。  perfect classifier的AUC为1, 随机猜测的AUC为0.5.


为了画出ROC曲线, 我们需要阈值。 何为阈值? 阈值就是判断一个样本是否为postive或者negative的numeric score。 Naiive Bayes给你的阈值是一个概率。 logistic regression也是一个可以看成概率的值。 Adaboost和SVM首先计算出一个numeric value, 然后作为一个sign的输入,对于这两个分类器, 那个numeric value也是一个score。 我们每一个样本都可以计算出这样的一个numeric value, 我们通过把这些nemeric value从小到大进行排序, 然后开始从最小的值开始, 不断设置阈值, 从下到上。 一直进行下去, 高于阈值的预测为positive, 低于阈值的预测为negative. 每个样本的score对应的就是这个样本的prediction strength。    

0 0