roc曲线 vs pr曲线(AUC vs f1)

自作多情 提交于 2020-01-28 05:29:40

什么是AUC

摘录:https://tracholar.github.io/machine-learning/2018/01/26/auc.html
如果auc=0.70,代表给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。

什么时候应使用AUC?哪个时候应使用F1?

以前理解是觉得使用f1值(即采用召回率和精确率)来评价模型会更好。
因为召回率和精确率更直观,可以使业务方对模型的预测效果有较准确预期。
那auc有什么用处呢?什么时候应该使用呢?
接下来本篇会将roc曲线与pr曲线做对比,并且介绍auc的应用场景

ROC曲线 vs PR曲线

相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。

举例来说,图2.3是ROC曲线和P-R曲线的对比图,其中图2.3(a)和图2.3(c)是ROC曲线,图2.3(b)和图2.3(d)是P-R曲线,图2.3(c)和图2.3(d)则是将测试集中的负样本数量增加10倍后的曲线图。
在这里插入图片描述
可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。

这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。
所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。

也就是说AUC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡且可能小幅变化的情况下,依然能够对分类器做出合理的评价,是对模型整体性能的评价。
就是我们在训练模型后,假如用来预测的数据的分布(即正负样本比例会有变化)有可能会变化的话,用auc高的模型稳定,不会说对不同分布的数据很敏感,pr曲线是对具体某种分布的数据集的评估,分布变的话,pr曲线变化较大
AUC对样本类别是否均衡并不敏感,这也是不均衡样本通常用AUC评价学习器性能的一个原因。

AUC越大表示模型区分正例和负例的能力越强

然而,ROC 曲线不会随着类别分布的改变而改变的优点在一定程度上也是其缺点。因为 ROC 曲线这种不变性其实影响着的是 AUC 值,或者说是评估分类器的整体性能。但是在某些场景下,我们会更关注正样本,这时候就要用到 PR 曲线了。

比如说信用卡欺诈检测,我们会更关注 precision 和 recall,比如说如果要求预测出为欺诈的人尽可能准确,那么就是要提高 precision;而如果要尽可能多地预测出潜在的欺诈人群,那么就是要提高 recall。一般来说,提高二分类的 threshold 就能提高 precision,降低 threshold 就能提高 recall,这时便可观察 PR 曲线,得到最优的 threshold。

ROC 曲线作用

  • ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。
  • 有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。
  • 可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高

但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集(特定分布)上的表现,P-R曲线则能够更直观地反映其性能。
即假如每天用来预测的数据的分布差距不大且我们更关注于其中一类别的话, 我们使用f1来看会更加直观

那么多少auc算高呢?

auc = 0.50 几乎没分辨能力
0.7<=auc<0.8 可接受的判别力
0.8<=auc< 0.9 好的判别力
0.9<=auc 很好的判别力

结论

1.调优观察模型时,使用auc值会更好衡量模型性能,因为受到测试集和验证集的分布影响小。
2.模型调优完毕,还需准备一份需求可能出现的分布的测试集,将这份测试集输入模型,输出一个精确率和召回率,作为给业务方模型的预期效果,也可以直观看出模型对现实可能出现的数据集的效果

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!