【深度学习】分类指标accuracy,recall,precision等的区别

版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/83413333

在机器学习里面做一些分类任务时,经常会使用到一些评价指标,下面就一些常用的指标进行详细的说明。

上图表示为一个二分类的混淆矩阵(多分类同理,只需要把不属于当前类的其他类都考虑为负例),表格中的四个参数说明:

True Positive(TP):预测为正例,实际为正例

False Positive(FP):预测为正例,实际为负例

True Negative(TN):预测为负例,实际为负例

False Negative(FN):预测为正例,实际为负例

从这我们可以看出,TP和TN都是预测对了,FP和FN都是预测错了。

【计算公式】

accuracy=\frac{TP+TN}{TP+TN+FP+FN}

 precision=\frac{TP}{TP+FP}

 recall=\frac{TP}{TP+FN}

F-score=\frac{2}{1/precision+1/recall}

 specificity=\frac{TN}{TN+FP}

sensitivity=\frac{TP}{TP+FN}=recall 

【指标分析】

我们最容易搞混的就是accuracy和precision,好像两者都可以称为准确率,正确率,精度等等...其实我们不必要考究两者的中文称呼究竟是什么,搞清楚两者的含义自然就可以区分它们。首先,accuracy指的是正确预测的样本数占总预测样本数的比值,它不考虑预测的样本是正例还是负例。而precision指的是正确预测的正样本数占所有预测为正样本的数量的比值,也就是说所有预测为正样本的样本中有多少是真正的正样本。从这我们可以看出,precision只关注预测为正样本的部分,而accuracy考虑全部样本。

Recall可以称为召回率、查全率等等...我们也不考究如何翻译它,它指的是正确预测的正样本数占真实正样本总数的比值,也就是我能从这些样本中能够正确找出多少个正样本。

F-score相当于precision和recall的调和平均,用意是要参考两个指标。从公式我们可以看出,recall和precision任何一个数值减小,F-score都会减小,反之,亦然。

specificity指标平时见得不多,它是相对于sensitivity(recall)而言的,指的是正确预测的负样本数占真实负样本总数的比值,也就是我能从这些样本中能够正确找出多少个负样本。

【实例说明】

问题:假设某个学校有1000个王者荣耀玩家,其中有10个是王者段位,判断这个玩家是不是王者选手?

现在我有一个分类器,检测出来有20个王者选手,其中包含5个真正的王者选手。那么上述指标该如何计算呢?

分析:检测出来有20个王者选手,说明有980个选手被预测为非王者选手。这20个检测为王者选手包含5个真正的王者选手,说明另外15个实际为非王者选手,所以,

accuracy = (5+980-5) / 1000 = 0.98

precision = 5 / 20 = 0.25

recall = 5 / 10 = 0.5

F-score = 2 / (1/0.25 + 1/0.5) = 0.33

sensitivity = recall = 0.5

specificity = (980-5) / (1000-10) = 0.98

从这个案例我们可以发现,虽然分类器的accuracy可以达到98%,但是如果我的目的是尽可能的找出隐藏在这1000人中的王者选手,那么这个分类器的性能是不达标的,这也就是为什么要引入precision和recall以及F-score评价指标的原因。

猜你喜欢

转载自blog.csdn.net/zzc15806/article/details/83413333