机器学习中的AUC是什么?

工作中经常要和香饽饽算法工程师对接。作为一名开发狗,虽然“抽特征、做模型、玄学调参、搞策略”这四部曲都不太懂,但是为了能够正常交流,同时也不至于被忽悠,那么,算法同学嘴里是不时蹦出领域名词儿还是要了解一下的啦。

今天就说说算法同学经常挂在嘴边的一个指标——AUC。

AUC ROC简介

AUC是Area Under Curve的简写,这里的Curve其实是指ROC曲线。

ROC曲线又是什么鬼?ROC全称receiver operating characteristic curve,翻译为受试者工作特性曲线。先不用管这个不明所以的鬼翻译,直接看ROC曲线的横纵坐标都是啥。
《机器学习中的AUC是什么?》ROC示意图

ROC曲线的X轴是假阳性率(FP),Y轴为真阳性率(TP)。

假阳性率=真实类别为0但是预测为1的样本数/真实类别为0的样本数
真阳性率=真实类别为1预测也为1的样本数/真实类别为1的样本数

从这里也可以看出,AUC只能用于二分类模型的评估。

那么关于FP和TP,我们找一些直观的感受看看:

a.如果一个算法直接把所有的样本,都预测为正样本,那么显然FP=1.0,TP=1.0;这个可以对应ROC曲线的右上角那个点。
b.如果一个算法直接把所有的样本,都预测为负样本,那么显然FP=0.0,TP=0.0;这个可以对应ROC曲线的左下角那个点。

到这里,我遇到了我在看ROC曲线时的一个不解的地方:

为什么对于1个二分类算法,能够画出一条ROC曲线(无数个点)出来呢?ROC曲线的每一点代表什么含义呢?

看了ROC曲线的具体绘制过程,应该就可以理解了。

ROC曲线的绘制

我们在使用一个二分类算法做预测时,一般的是会给出样本属于正样本的概率Pi。

然后,我们会选定一个阈值P0,当Pi>=P0时,预测为正样本;当Pi<P0时预测为负样本。

至此,选定一个算法A,每选定一个阈值P0, 都可以算出FP/TP,也就对应了ROC曲线上的一个点。

那具体绘制ROC曲线时,这些阈值如何选取,FP/TP组合成的所有点又该如何排列呢?

具体流程是这样:

  1. 将所有测试样本的预测概率Pi按照从大到小排列
  2. 从大到小,依次取各个Pi的值作为阈值。
    • 考虑P0=P1的情况,这时只有一个样本被预测为1,其余所有样本都被预测为0。这里FP和TP都会很小,所以这个点会接近左下角。
    • 随着阈值P0不断变小(条件放宽),预测为1的样本越来越多,FP和TP都应该越来越大。表现为ROC曲线由左下角向右上角不断蔓延。
    • 考虑P0=Pn的情况,这时所有样本都被预测为1。这时FP=TP=1.0,这时ROC曲线达到右上角。

所以,ROC曲线其实有三个要素:算法A,测试数据D,阈值集合P。它评价了一个算法A,在测试数据D上,选取不同的阈值P时,假阳性率和真阳性率的表现。

当然,真阳性率越大,假阳性率越小越好。所以表现为ROC曲线越上凸,算法的分类效果越优秀。

AUC(ROC曲线下的面积),就可以用来评价ROC曲线的上凸程度。

一般,AUC的值是要大于0.5的,因为直接使用正负样本的自然概率来预测,得到的AUC就是0.5(可以思考下为什么哈)。

另外,还有一个指标logloss,也经常和AUC一起用于评价分类效果。有兴趣的同学可以对比着学习下。

推荐阅读:
使用双buffer无锁化
不要拷贝
关于内存泄露的一场虚惊

转载请注明出处: blog.guoyb.com/2018/06/23/…

欢迎使用微信扫描下方二维码,关注我的微信公众号TechTalking,技术·生活·思考:
《机器学习中的AUC是什么?》后端技术小黑屋

    原文作者:算法小白
    原文地址: https://juejin.im/entry/5b2daaba6fb9a00e4f74ce26
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞