精确率和召回率又被叫做查准率和查全率,可以通过P-R图进行表示
如何理解P-R(精确率-召回率)曲线呢?或者说这些曲线是根据什么变化呢?
以逻辑回归举例,其输出值是0-1之间的数字。因此,如果我们想要判断用户的好坏,那么就必须定一个阈值。比如大于0.5指定为好用户,小于0.5指定为坏用户,然后就可以得到相应的精确率和召回率。但问题是,这个阈值是我们随便定义的,并不知道这个阈值是否符合我们的要求。因此为了寻找一个合适的阈值,我们就需要遍历0-1之间所有的阈值,而每个阈值都对应一个精确率和召回率,从而就能够得到上述曲线。
根据上述的P-R曲线,怎么判断最好的阈值点呢?首先我们先明确目标,我们希望精确率和召回率都很高,但实际上是矛盾的,上述两个指标是矛盾体,无法做到双高。因此,选择合适的阈值点,就需要根据实际问题需求,比如我们想要很高的精确率,就要牺牲掉一些召回率。想要得到很高的召回率,就要牺牲掉一些精准率。但通常情况下,我们可以根据他们之间的平衡点,定义一个新的指标:F1分数(F1-Score)。F1分数同时考虑精确率和召回率,让两者同时达到最高,取得平衡。F1分数表达式为
上图P-R曲线中,平衡点就是F1值的分数。
准确率和召回率之间通常存在一定的折衷关系——当阈值较高时,分类器的准确率较高,但召回率较低;
当阈值较低时,分类器的召回率较高,但准确率较低
- 召回率(灵敏度):对实际为正类的样本,模型能识别出多少是正类(灵敏度)
分母:实际类别为正的样本个数(TP+FN=实际为正类的样本个数)
分子:预测为正实际为正的样本个数(TP) - 精确率:对正类样本的预测准确程度,
分母:预测为正的样本个数(TP+FP=正确预测+错误预测)
分子:预测为正实际为正(TP) - 准确率:对所有类别的样本的预测准确程度,
分母:所有类别样本个数=(预测为正样本个数+预测为负样本个数)
分子:正确预测样本个数=(预测为正实际为正+预测为负实际为负)
召回率(把正样本叫唤回来,因为我们把本来是正的样本给否定了,提升它就是尽量不要把正确的搞错了,也就是不漏报),精准率就是看我们预测的正样本的到底有多少是真正的正样本,因为有一些负的我们把它判为正了,提升精准率就是不错报。
精确率:分母是预测到的正类,精确率的提出是让模型的现有预测结果尽可能不出错(宁愿漏检,也不能让现有的预测有错)
召回率:分母是原本的正类,召回率的提出是让模型预测到所有想被预测到的样本(就算多预测一些错的,也能接受)
召回率和精确率二者整体是呈负相关关系,局部可能正相关:
- 当TP增加,召回率一定也增加(TP/实际为正样本数量不变)
- 而对于精确率:TP增大,FP可能减小也可能增大(更容易增大)。TP增加,FP减小这是理想情况(低偏差),更符合实际情况的是TP增加FP也增加,即分母(TP+FP)更容易增大,精确率则更容易减小。当分子TP增加的部分没有分母增加的多时,精确率减小,
- 反映到PR曲线上,召回率和精确率整体负相关,但局部可能正相关,例如分子TP增大1,分母(TP增大1+FP减小2)减小,精确率增大。
- 总结一句话就是:TP增大,召回率一定增大,而精确率更容易减小
precision:focus在不出现错误的分类(宁可漏掉,不能出错)
recall:focus在分类不出现遗漏(宁可出错,不能漏掉)
假设你很穷,地主老爷送了一堆掺了沙子(N)的大米(P),现在要做饭了,需要将大米(P)跟沙子(N)进行分离,将掺了沙子(N)的大米(P)分成大米堆(P类)与沙子堆(N类),做饭用大米堆(P类),沙子堆(N类)则选择丢弃,以下有几个指标可以评估分离的好坏程度:
大米堆(P类)=TP+FP
沙子堆(N类)=TN+FN
1、准确率=(TP+TN)/(TP+FP+TN+FN)——全局预测准确性
能成功地(T)把大米(TP)放进大米堆(TP+FP),成功地(T)把沙子(TN)放进沙子堆(TN+FN),综合成功率是多少呢?这就是准确率的关注点,看全局的分类能力,不仅要把大米(TP)分对(T),还要把沙子(TN)也分对(T)。
2、精确率=TP/(TP+FP)——正分类里的预测准确性
准确率有个缺陷,要求太高了。比如你的目的就是煮饭,也就是说你更关注大米堆(TP+FP),你不需要操心沙子(TN)到底有没有被成功地(T)分类到沙子堆(TN+FN)。因此,只要大米堆(TP+FP)里的大米(TP)比例越多,那你做饭的时候,大概率吃到的还是大米(TP),而不是沙子(FN)。因此精确率就是看大米堆(TP+FP)里拥有的可食用大米(TP)比例,也可理解为将来做饭用的大米精度(浓度)。
3、召回率=TP/(TP+FN)——正样本的预测准确性
精确率关注的是吃饭时候,尽可能不要吃到沙子,所以他不关注粮食是否浪费的问题,而召回率关注的就是粮食浪费的问题,毕竟现在提倡节约,所以召回率就是关注大米(TP)样本中被成功地(T)分类到大米堆(P堆)的比例。“召回率”可以理解为,在所有大米(TP+FN)中回收实际食用的大米(TP)的比例。
与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的ROC曲线TPR和FPR也会沿着曲线滑动。
同时,我们也会思考,如何判断ROC曲线的好坏呢?我们来看,FPR表示模型虚报的程度,TPR表示模型预测覆盖的程度。理所当然的,我们希望虚报的越少越好,覆盖的越多越好。所以TPR越高,同时FPR越低,也就是ROC曲线越陡,那么模型的性能也就越好。
最后,我们来看一下,不论样本比例如何改变,ROC曲线都没有影响,也就是ROC曲线无视样本间的不平衡问题。
6.2 AUC
AUC(Area Under Curve)表示ROC中曲线下的面积,用于判断模型的优劣。如ROC曲线所示,连接对角线的面积刚好是0.5,对角线的含义也就是随机判断预测结果,正负样本覆盖应该都是50%。另外,ROC曲线越陡越好,所以理想值是1,即正方形。所以AUC的值一般是介于0.5和1之间的。AUC评判标准可参考如下
- 0.5-0.7:效果较低。
- 0.7-0.85:效果一般。
- 0.85-0.95:效果很好。
- 0.95-1:效果非常好。