我们常常在一些论文后看到作者给出的一些评估度量,不仅仅是简单的正确率,还有Fscore、recall等看似高深的东西。那么这些东西是怎么来、怎么用的呢?
我们要从不平衡类问题讲起。因为在正、负样本不均衡的类中,如果单一使用准确率可能是很不合理的。比如有10个异常类(一般标为正类),90个正常类(负类),那么我们关心的是异常类能不能都被正确分出来,这样才能达到我们的目标效果(就是检测异常)。如果我们训练的分类器把所有类都输出为负类,分类器的准确率也有90%,但对我们的目标而言没什么软用,所以稀有类的正确分类更重要。我们需要为这种不平衡问题设计合理的评估度量。
我们汇总分类模型正确和不正确预测的实例数目的混淆矩阵:
其中术语:
混淆矩阵中的计数可以表示为百分比形式。
真正率(True positive rate, TPR)或灵敏度(sensitivity)定义为被模型正确预测的正样本的比例:
真负率(True Negative Rate, TNR)或特指度表示被模型正确预测的负样本的比例:
假正率(False positive rate,FPR)定义为被预测为正类的负样本的比例,即实际上是负样本但是被分为了正类:
假负率(False Negative rate,FNR)定义为被预测为负类的正样本比例,即实际上是正样本但是被分为了父类:
好的,上面我们就讲完了不平衡类问题中可能用到的度量。
下面我们推广开,一般性问题中,广泛使用的度量:召回率(recall)和精度(precision)。
,精度确定分类器预测为正类的那些部分数据实际也是正类的比例。精度越高,分类器假正类错误率越低。
,召回率度量被分类器正确预测的正样本的比例。具有高召回率的分类器很少将正样本分为误样本。实际上召回率的值=真正率的值。
在一些情况下,我们更看重上面两个指标。比如,人体危险动作视频检测或者基于图像的疾病检测中,我们希望召回率足够高,这意味着危险动作、疾病等样本都有很高很高的概率被检测出来,但可能不是危险动作、不是疾病的样本被误判,但是没关系,因为检测出危险动作、疾病的情况更加重要,即使有一些误报我们也在所不惜。但大家发现,这种例子情况下,召回率高了,精度就低了。我们可以构造一个极限模型,最大化其中一个度量而不管另一个。构建一个最大化精度和召回度的模型是分类算法的主要任务之一。
精度和召回度能否和谐共存呢?可以的——F1度量。
即F1表示召回度和精度的调和均值:
两个数的调和均值趋向于接近较小的数。因此,一个高的F1度量值确保模型的精度和找回度都比较高。
最后,举个例子:
共同学习,欢迎指教!祝大家学习进步哈~