机器学习中的评价指标
当一个机器学习模型建立好了之后,即模型训练已经完成,我们就可以利用这个模型进行分类识别。
正例,所关注的识别目标就是正例。
负例,正例以外就是负例。
TP、FN、TN、FP的各自含义(其中T代表True,F代表False,P即Positives,N即Negatives):
混淆矩阵
真实正例真实负例
检测正例TPFP
检测反例FNTN
模型性能指标:
1.正确率(Accuracy):也即准确率,识别对了正例和负例占总识别样本的比例。
通常而言,准确率越高,模型也越好。
S = (TP
+ FP + FN + TN)
A=(TP+TN)/S
2.错误率(Error-rate):识别错了的正例与负例占总识别样本的比例。
E=(FP+FN)/S
可见,正确率与错误率是分别从正反两个方面进行评估的指标,两者数值相加等于1。正确率高,错误率就低;正确率低,错误率就高。
3.精确度(Precision):识别对了正例占识别出正例的比例,其中识别出的正例等于识别对了正例加上识别错了的正例。
P=TP/(TP+FP)
精度即为识别目标正确的比例,也称为查准率。
4.召回率(Recall)
召回率,识别对了正例占实际总正例的比例。其中实际总正例等于识别对了的正例加上识别错了的负例。(真正例+伪负例)
R=TP/(TP+FN)
在一定意义上来说,召回率也可以说是“找回率”,也就是在实际的60个目标中,找回了40个,找回的比例即为:40/60。同时,召回率也即查全率,即在实际的60个目标中,有没有查找完全,查找到的比率是多少。
从公式可以看出,精度与召回率都与TP值紧密相关,TP值越大,精度、召回率就越高。理想情况下,我们希望精度、召回率越高越好。但单独的高精度或高召回率,都不足以体现模型的高性能。
5.精度-召回率曲线(PR曲线)
实际中,精度与召回率是相互影响的,通常,精度高时,召回率就会往往偏低,而召回率高时,精度则会偏低。
精度即查准率,召回率即查全率,要想查得精准(一查一个准),即模型给出的目标都正确,那就得提高阈值门槛,阈值一提高,符合要求的目标就会减少,那必然会导致漏网之鱼增多,召回率降低。
相反,若想召回率高,没有漏网之鱼(目标都找到),就要降低阈值门槛,才能把所有目标收入囊中,与此同时会揽入一些伪目标,从而导致精度降低。PR曲线即是以召回率R为横轴,精度P为纵轴画出的曲线。
算法对样本进行分类时,都会有置信度,即表示该样本是正样本的概率,比如99%的概率认为样本是A正例,1%的概率认为样本B是正例。通过选择合适的阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例。
通过置信度就可以对所有样本进行排序,再逐个样本的选择阈值,在该样本之前都属于正例,该样本之后就是负例。
曲线出现的一些规律和一些问题。
根据逐个样本作为阈值划分点的方法,可以推敲出,recall值是递增的(但并非严格递增),随着划分点左移,正例被判别为正例的越来越多,不会减少。而精确率precision并非递减,二是有可能振荡的,虽然正例被判为正例的变多,但负例被判为正例的也变多了,因此precision会振荡,但整体趋势是下降。
另外P-R曲线肯定会经过(0,0)点,比如讲所有的样本全部判为负例,则TP=0,那么P=R=0,因此会经过(0,0)点,但随着阈值点左移,precision初始很接近1,recall很接近0,因此有可能从(0,0)上升的线和坐标重合,不易区分。如果最前面几个点都是负例,那么曲线会从(0,0)点开始逐渐上升。
曲线最终不会到(1,0)点。很多P-R曲线的终点看着都是(1,0)点,这可能是因为负例远远多于正例。
最后一个点表示所有的样本都被判为正例,因此FN=0,所以recall = TP/(TP + FN) = 1, 而FP = 所有的负例样本数,因此precision = TP/(TP+FP) = 正例的占所有样本的比例,故除非负例数很多,否则precision不会为0. 总之,P-R曲线应该是从(0,0)开始画的一条曲线,切割1*1的正方形,得到一块区域。
因此,较合理的P-R曲线应该是(曲线一开始被从(0,0)拉升到(0,1),并且前面的都预测对了,全是正例,因此precision一直是1,)另外,如果有个划分点可以把正负样本完全区分开,那么P-R曲线就是整个1*1的面积。
6.
AP (average precision)值
PR曲线下的面积称为AP,表示召回率从0-1的平均精度值。PR曲线下的面积越大,模型性能则越好。性能优的模型应是在召回率(R)增长的同时保持精度(P)值都在一个较高的水平,而性能较低的模型往往需要牺牲很多P值才能换来R值的提高。
7.
mAP (Mean Average Precison) 值
AP是衡量模型在单个类别上平均精度的好坏,mAP则是衡量模型在所有类别上平均精度的好坏,每一个类别对应有一个AP,假设有n个类别,则有n个AP,分别为:AP1,AP2,…,APn,
mAP就是取所有类别 AP 的平均值
综合评价指标F-Measure F-Measure又称F-Score,是召回率R和精度P的加权调和平均,顾名思义即是为了调和召回率R和精度P之间增减反向的矛盾
8.
ROC曲线与AUC曲线
ROC(Receiver Operating
Characteristic)曲线与AUC(Area Under the Curver),ROC曲线,也称受试者工作特征。ROC曲线与真正率(TPR,True
Positive Rate)和假正率(FPR, False Positive Rate)密切相关。在不平衡数据中,常用的一种评价指标。
真正率(TPR): 识别对了的正例(TP)占实际总正例的比例,实际计算值跟召回率相同。即:
TPR =TP/(TP+ FN)
假正率(FPR): 识别错了的正例(FP)占实际总负例的比例。也可以说,误判的负例(实际是负例,没有判对)占实际总负例的比例。计算式如下:
FPR =FP/(FP+ TN)
以FPR为横轴,TPR为纵轴,绘制得到的曲线就是ROC曲线,绘制方法与PR曲线类似。一般来说,ROC曲线越靠近左上方越好。
ROC曲线下的面积即为AUC。面积越大代表模型的分类性能越好。ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。ROC以及AUC可以很好的消除样本类别不平衡对指标结果产生的影响。
通常,AUC的值介于0.5到1.0之间,较大的AUC代表了较好的Performance。如果模型是完美的,那么它的AUC = 1,证明所有正例排在了负例的前面,如果模型是个简单的二类随机猜测模型,那么它的AUC = 0.5,如果一个模型好于另一个,则它的曲线下方面积相对较大,对应的AUC值也会较大。
9.
IoU 指标
IoU简称交并比,顾名思义数学中交集与并集的比例。假设有两个集合A与B,
IoU即等于A与B的交集除以A与B的并集,表达式如下:
IoU=A∩B/A∪B
在目标检测中,IoU为预测框(Prediction)和真实框(Ground truth)的交并比
10.Top1 & Topk
Top1:对一张图片,模型给出的识别概率中(即置信度分数),分数最高的为正确目标,则认为正确。这里的目标也就是我们说的正例。
TopK:对一张图片,模型给出的识别概率中(即置信度分数),分数排名前K位中包含有正确目标(正确的正例),则认为正确。
K的取值一般可在100以内的量级,当然越小越实用。比如较常见的,K取值为5,则表示为Top5,代表置信度分数排名前5当中有一个是正确目标即可;如果K取值100,则表示为Top100,代表置信度分数排名前100当中有一个是正确目标(正确的正例)即可。可见,随着K增大,难度下降。
目标检测常用的指标是:mAP
图像分割的指标:F-score值
PR曲线使用了Precision,因此PR曲线的两个指标都聚焦于正例。类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。
适用场合:
1. ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。
2. 如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
3. 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。
4. 类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
最后可以根据具体的应用,在曲线上找到最优的点,得到相对应的precision,recall,f1 score等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。
灵敏度(sensitivity)和特异度(specificity),也叫做真正率(TPR)和假正率(FPR),具体公式如下。
真正率(True Positive Rate , TPR),又称灵敏度:
TPR=正样本预测正确数正样本总数=TP/TP+FN 其实我们可以发现灵敏度和召回率是一模一样的,
假负率(False Negative Rate , FNR) :
FNR=正样本预测错误数正样本总数=FN/TP+FN
假正率(False Positive Rate , FPR) :
FPR=负样本预测错误数负样本总数=FP/TN+FP
真负率(True Negative Rate , TNR),又称特异度:
TNR=负样本预测正确数负样本总数=TN/TN+FP
四个量都是针对单一类别的预测结果而言的,所以对整体样本是否均衡并不敏感。