分类任务的metrics——模型评测标准

在分类任务中,想要知道模型的好坏,是不是能够实际应用,那么必须有评价的标准,本文将详细说来。

如果不提到混淆矩阵,那么下面的概念就不好理解。我自己先默写了下,结果发现错了(错的全颠倒),错误示例如下:

上图错误的原因是不知道True/Positive这种概念是针对谁来说,

小明哥这里给出:True/False是针对(预测结果)这个预测是不是正确来说的,如果预测正确,那么为True,预测错误,即为False;Positive/Negative则是针对预测来说的(就是分类后的标签),联系下医学上的阳性与阴性,就是这个概念。

这种东西要么用得多才能记住,要么就每天看一遍,想当年我记诗词一样,每天看一遍,读一遍。

按照上面的理解,即可给出正确的结果:

1-accuracy 

就是正确率,预测正确的比例,不管是true positive 还是true negtive 都是预测对了

Acc=(TP+TN)/(TP+FP+FN+TN)

2-Precision

精度,准确度啥的,我觉得没必要抠字眼,在我看来就是预测为正例的实际上有多少为正例

P=TP/(TP+FP)

3-Recall

召回率,这个词其实不好字面理解,在我的认知中,召回这个词还是在新闻上看到的,某某车有问题,全球召回几万辆。

召回率,再经望文生义,就是召回的车辆占总销售的车辆,这个有点贴近实际的含义了。

这个词在推荐算法中是必须明确的知道,就是从数据库中筛出来一部分符合要求的数据,因为在信息过载的时代,用户不可能看完那么多东西,初选出来相对匹配的信息,然后经过排序(粗排/精排/重排等)

一句话说就是:实际为正例的(positive)有多少预测为正例,和上面的精确度很容易混淆,有点像玩文字游戏。

R=TP/(TP+FN)

Note:仍旧以车的召回举例,假设某一批次的售出车辆有问题,本来我们只需要将该批次的召回即可,但把我们曾经所有卖出的都召回了,肯定包括问题车,这就是查全率100%,实际上有毛病的车有多少认为有毛病?或者换个思路,我们所有批次的车中(假设一共有1000辆)实际有100辆有毛病,我们都找出来了,都召回了,都认为有毛病;但从精确度考虑我们只需要找到这100辆即可,所以精确度为100/1000=0.1=10%

一般来说P,R是此消彼长的,理想情况下则是相对都高,如果都低,则可能数据或程序有问题。

【PR曲线是根据阈值来画的,以分类中的最后一层softmax来说,那么我们在分类中直接就是求的最大的一个为某类的index,

softmax输出的结果总和为1,当我们设定某个类别的阈值时,比如0.6,当大于该值我们才认为是该类,阈值不同,则画出不同的PR曲线,不知道这样对不对,应该没毛病,下面的ROC曲线也是如此得到的】

一般也称P为查准率,R为查全率。

4-F1 score

F1值就是上面两者的综合,是调和值。一般用的多的是:

F1=2*P*R/(P+R)

5-True Positive Rate

字面意思就是真阳性的比例,也就是实际为正例有多少预测为正例,恰好与Recall一样

TPR=TP/(TP+FN)

6-False Positive Rate

假阳性的比例,实际为负例的有多少错分(预测)为正例

FPR=FP/(FP+TN)

可见真阳性与假阳性的比例都是针对ground truth来说的,实际为正例,实际为负例。。。

7-AUC和ROC

由TPR和FPR可以绘制曲线,该曲线就是ROC(受试者特征曲线),曲线下的面积就是AUC(英语意思很直白)

其中TPR,FPR的大小范围[0,1],因此AUC最大为1,越趋于1,模型越好,低于0.75的一般都不可靠。

在sklearn中有现成的roc_auc函数可以调用。不要再费劲造轮子了。

另外有相关问题可以加入QQ群讨论,不设微信群

QQ群:868373192 

语音图像视频深度-学习群

发布了247 篇原创文章 · 获赞 242 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/SPESEG/article/details/105307640
今日推荐