检测识别问题中的metrics

以前一直记不熟各类指标的具体计算,本文准备完全搞定这个问题,涵盖目前遇到过的全部评价指标。markdown

TP,TN,FP,FN

首先是true-false和positive-negative这两对词。以二分类为例:函数

positive和negative指的是预测的分类是正样本仍是负样本,true和false指的是预测结果是对的仍是错的。spa

所以:ci

实际类别\预测类别 正样本 负样本
正样本 TP FN
负样本 FP TN

基于这些数值能够计算各项指标:it

Accuracy, precision, recall等

Accuracy

\[ A C C=\frac{T P+T N}{T P+T N+F P+F N} \]io

分子为全部正确预测了的样本数目(即正样本被预测为正,负样本被预测为负),分母为全部样本总数。table

Accuracy表明了全部样本中,被正确预测的样本所占的比例class

其缺陷在于,当正负样本严重不均衡的时候没法反映出模型的真实水平。方法

Precision

\[ P=\frac{T P}{T P+F P} \]call

分子为正样本被预测为正的个数,分母为全部被预测为正的个数。

Precision表明了被预测为正的样本中,真的是正样本的比例。又叫查准率。

Recall

\[ \operatorname{Recall}=\frac{T P}{T P+F N} \]

分子为正被预测为正,分母为正样本的总数。

Recall表明了全部正样本中,被正确预测为正样本的比例

Recall通常被称为召回率,,又叫Sensitivity,又叫查全率 ,它和一些传统方法中所说的正检率是一个概念。

Specificity

上述的Sensitivity对应的有Specificity:
\[ \operatorname{Specificity}=\frac{T N}{FP+TN} \]
表明实际负样本中被预测为负的比例。

f1-score

\[ \mathrm{F} 1=\frac{2 * P * R}{P+R} \]

f1-score是对precision和recall的调和平均值。

正检率,虚警率,漏警率

正检率(P_d):正样本被正确检测到的几率,即recall

漏警率(P_m):正样本没有被预测为正的几率,即1-P_d,即1-recall。

虚警率(P_f):负样本被预测为正的几率,即1-Specificity。

指标间的关系

为了更简单清楚的说明,用P和N表示预测结果是正和负,用P^和N^表示正样本和负样本。不用*号的缘由是我不想在markdown里打一堆转义符。咱们有P+N=P^+N^。

对于一个正常的识别模型,P中大多数应当是P^,小部分是N^;一样N中大多应当是N^,小部分是P^。

Precision和recall是互相矛盾的一对指标。直观地理解,precision为全部P中P^的比例,要想提升这个比例,须要更加严格的筛选,更严格的筛选意味着,模型只会将那些预测几率很是高的样本预测为P,显然这会更多地筛选掉实际为N^的P,剩下的P中P^。而对于recall,recall表明P^中P的比例,更加严格的筛选会致使,一些P^的样本没有被预测为P,从而致使recall降低。

同理,正检率与虚警率成正相关关系。

ROC曲线与PR曲线

ROC曲线

ROC曲线即纵轴为正检率,横轴为虚警率。

懒得放示意图了,简单描述一下,通常为从左下到右上的凹函数(注意凹函数的定义),区间为(0,0),(1,1)的正方形区域内。评估方法为计算曲线下积分面积,即AUC。

对于瞎猜模型,ROC曲线应当是一条从(0,0)到(1,1)的对角直线,故AUC为0.5。

对于一个正常的模型,AUC应当在0.5到1之间。越大越好。

PR曲线

相似地,PR曲线纵轴为precision,横轴为recall。

PR曲线通常为从左上到右下的凹函数,区间一样在(0,0),(1,1)的正方形区域。评估方法一样为计算曲线下积分值,称为AP值,对于多个分类,取平均,称为mAP值。

相关文章
相关标签/搜索