【机器学习300问】47、如何计算AUC?

一、AUC是什么?

(1)文绉绉的定义

        AUC=Area Under the Curve中文直译叫“曲线下面积”,AUC名字里面的Curve曲线指的就是ROC曲线,关于ROC曲线的相关知识我已经在之前的文章中详细说过了,有需要的友友可以点击下面的链接先去补充知识:【机器学习300问】46、什么是ROC曲线?

        AUC就相当于这条ROC曲线下面的阴影面积,它提供了整体性能的一个量化指标。AUC值为1表示完美的分类器,而AUC值为0.5则表示分类效果跟随机猜测一样。AUC是一种不受具体分类阈值影响的模型评估指标。

(2)有趣的比喻

        假如你是一个守门员,在你面前有许多足球,其中一些足球的轨迹是要射向门(正类),而其他的球不会射向球门(负类)。现在你要猜出哪些球射向球门并做出扑救。

        AUC就是衡量在不同情况下你识别出射向球门球的能力,同时避免对不会射向球门的球做出反应。如果你每次都能正确判断哪些球会来射门并成功防守,而忽略那些不会射门的球,你就有了完美的防守记录(AUC = 1)。但如果你像是随机猜测一样捕捉球(就像瞎子守门员),你的平均记录就和掷硬币一样(AUC = 0.5),防守成功的几率和失败的几率是一样的。

二、AUC怎么算?

(1)对于离散的ROC曲线(非常少见)

        通过将ROC曲线分割成一系列的小矩形或者梯形近似估算其面积,使用几何公式来直接计算多边形下的面积。在现实中,这种情形比较少见。

(2)对于连续的ROC曲线(实际大多如此)

        使用数值积分方法如梯形法则等进行计算。具体来说,在ROC曲线上以FPR为横坐标,以TPR为纵坐标,沿着FPR由0到1定积分,积分函数本身是TPR以FPR为自变量的函数。通过这个积分过程我们实际上得到的是曲线与横轴围成的面积。

  • 定积分公式:

\int_{a}^{b} f(x) \, dx

  • 定积分用于计算AUC,通常采用数值方法来求解,如梯形法则,这个方法适用于计算离散数据点下面积的情形,公式如下:

AUC = \sum_{i=1}^{n-1} \frac{(x_{i+1} - x_i) \cdot (y_i + y_{i+1})}{2}

x_{i}x_{i+1} 相邻两个点的 FPR 值
y_{i}y_{i+1} 相邻两个点的 TPR 值
n 数据点的数量
  • 哪用得着这么麻烦,直接利用已有的库就行。比如sklearn库的roc_auc_score函数。

三、AUC计算完成后该做些什么?

        当然是评估模型和比较不同模型的性能啦!由于ROC曲线一般都处于y=x的上方,如果在下方,可以把分类器预测的概率变成1-p就可以得到新的分类器,这个分类器的效果肯定更好。所以AUC取值一般在0.5到1之间,AUC越接近1说明模型分类的性能越好!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 16:50:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 16:50:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 16:50:03       82 阅读
  4. Python语言-面向对象

    2024-03-24 16:50:03       91 阅读

热门阅读

  1. c++ struct解释

    2024-03-24 16:50:03       41 阅读
  2. 高精度算法

    2024-03-24 16:50:03       43 阅读
  3. 蓝桥杯2019年第十届省赛真题-不同的子串

    2024-03-24 16:50:03       53 阅读
  4. MySQL查询

    2024-03-24 16:50:03       40 阅读
  5. AI 工具能检测到医生未发现的癌症征兆

    2024-03-24 16:50:03       38 阅读
  6. 蓝桥杯基础数论(Python组)

    2024-03-24 16:50:03       39 阅读
  7. python 运算符

    2024-03-24 16:50:03       43 阅读
  8. C语言归并排序的实现

    2024-03-24 16:50:03       41 阅读