转载自:http://baijiahao.baidu.com/s?id=1597939133517926460&wfr=spider&for=pc

机器学习备忘录 | AUC值的含义与计算方法

浮生偷闲

18-04-1705:32

内容导读

在机器学习领域, AUC 值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说, AUC 值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来训练机器学习模型,模型评价指标的计算往往被软件包所封装,因此我们常常会忽略了它们的具体意义,这在有些时候会让我们对于手头正在进行的任务感到困惑。笔者也曾遇到类似的问题,因此希望借由本文来梳理下 AUC 值的意义与计算方法,通过实际的例子帮助读者加深理解,同时给出了使用 scikit-learn 工具库计算 AUC 值的方法,供各位参考。我们参看下维基百科上的定义:在信号检测理论中,接收者操作特征曲线( receiver operating characteristic curve ,或者叫 ROC 曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。通常很多的机器学习工具都封装了模型指标的计算,当然也包括 AUC 值。可以看出,使用 scikit-learn 工具提供的 roc_auc_score 函数计算 AUC 值相当简单,只需要提供样本的实际标签和预测值这两个变量即可,大大方便了我们的使用,真心感谢这些开源软件的作者们!总的来说, AUC 值就是一个用来评价二分类模型优劣的常用指标, AUC 值越高通常表明模型的效果越好,在实际使用中我们可以借助软件包的相应函数进行快速计算。

引言

在机器学习领域,AUC值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说,AUC值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来训练机器学习模型,模型评价指标的计算往往被软件包所封装,因此我们常常会忽略了它们的具体意义,这在有些时候会让我们对于手头正在进行的任务感到困惑。笔者也曾遇到类似的问题,因此希望借由本文来梳理下AUC值的意义与计算方法,通过实际的例子帮助读者加深理解,同时给出了使用scikit-learn工具库计算AUC值的方法,供各位参考。

定义

AUC的全称是Area under the Curve of ROC,也就是ROC曲线下方的面积。这里出现了另一个概念,就是ROC曲线。那么ROC曲线是个什么东西呢?我们参看下维基百科上的定义:在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。 (2) 在同一模型中设定最佳阈值。这个概念最早是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具。概括来说,可以把ROC曲线理解为一种用于统计分析的图表工具。

那么具体到机器学习的理论中,ROC曲线该怎么理解呢?首先,需要指出的是,ROC分析的是二元分类模型,也就是输出结果只有两种类别的模型,比如:(阳性/阴性)(有病/没病)(垃圾邮件/非垃圾邮件)。在二分类问题中,数据的标签通常用(0/1)来表示,在模型训练完成后进行测试时,会对测试集的每个样本计算一个介于0~1之间的概率,表征模型认为该样本为阳性的概率,我们可以选定一个阈值,将模型计算出的概率进行二值化,比如选定阈值=0.5,那么当模型输出的值大于等于0.5时,我们就认为模型将该样本预测为阳性,也就是标签为1,反之亦然。选定的阈值不同,模型预测的结果也会相应地改变。二元分类模型的单个样本预测有四种结果:

真阳性(TP):判断为阳性,实际也是阳性。伪阳性(FP):判断为阴性,实际却是阳性。真阴性(TN):判断为阴性,实际也是阴性。伪阴性(FN):判断为阴性,实际却是阳性。这四种结果可以画成2 × 2的混淆矩阵:

二阶混淆矩阵

有了混淆矩阵,就可以定义ROC曲线了。ROC曲线将假阳性率(FPR)定义为 X 轴,真阳性率(TPR)定义为 Y 轴。其中:

TPR:在所有实际为阳性的样本中,被正确地判断为阳性的样本比率。FPR:在所有实际为阴性的样本中,被错误地判断为阳性的样本比率。TPR = TP / (TP + FN)FPR = FP / (FP + TN)给定一个二分类模型和它的阈值,就可以根据所有测试集样本点的真实值和预测值计算出一个 (X=FPR, Y=TPR) 坐标点,这也就是绘制单个点的方法。那整条ROC曲线又该怎么画呢?具体方法如下:

在我们训练完一个二分类模型后,可以使用该模型对测试集中的全部样本点计算一个对应的概率值,每个值都介于0~1之间。假设测试集有100个样本点,我们可以对这100个样本的预测值从高到低排序,然后依次取每个值作为阈值,一旦阈值确定我们就可以绘制ROC曲线上的一个点,按照这种方法依次将100个点绘制出来,再将各个点依次连接起来,就得到了我们想要的ROC曲线!

然后再回到最初的问题,AUC值其实就是ROC曲线下方所覆盖的面积,当我们绘制出ROC曲线之后,AUC的值自然也就计算好啦。

示例

这里引用上海交大张伟楠老师机器学习课件中的例子来说明:

AUC计算示例

如上图所示,我们有8个测试样本,模型的预测值(按大小排序)和样本的真实标签如右表所示,绘制ROC曲线的整个过程如下所示:

令阈值等于第一个预测值0.91,所有大于等于0.91的预测值都被判定为阳性,此时TPR=1/4,FPR=0/4,所有我们有了第一个点(0.0,0.25)令阈值等于第二个预测值0.85,所有大于等于0.85的预测值都被判定为阳性,这种情况下第二个样本属于被错误预测为阳性的阴性样本,也就是FP,所以TPR=1/4,FPR=1/4,所以我们有了第二个点(0.25,0.25)按照这种方法依次取第三、四...个预测值作为阈值,就能依次得到ROC曲线上的坐标点(0.5,0.25)、(0.75,0.25)...(1.0,1.0)将各个点依次连接起来,就得到了如图所示的ROC曲线计算ROC曲线下方的面积为0.75,即AUC=0.75代码

在清楚了AUC值的计算原理后,我们再来看看如何在代码中实现它。通常很多的机器学习工具都封装了模型指标的计算,当然也包括AUC值。这里我们来一起看下scikit-learn中AUC的计算方式,如下所示:

>>> import numpy as np>>> from sklearn.metrics import roc_auc_score>>> y_true = np.array([0, 0, 1, 1])>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])>>> roc_auc_score(y_true, y_scores)0.75可以看出,使用scikit-learn工具提供的roc_auc_score函数计算AUC值相当简单,只需要提供样本的实际标签和预测值这两个变量即可,大大方便了我们的使用,真心感谢这些开源软件的作者们!

总结

看到这里的小伙伴们是不是对AUC值的概念有了更好的理解呢。总的来说,AUC值就是一个用来评价二分类模型优劣的常用指标,AUC值越高通常表明模型的效果越好,在实际使用中我们可以借助软件包的相应函数进行快速计算。如果各位还有一些问题或者是对文章中的某些部分有疑问,欢迎在评论区讨论。

参考

ROC曲线维基百科张伟楠老师课件机器学习和统计里面的auc怎么理解? - 知乎

AUC值得含义和计算方法相关推荐

  1. 机器学习备忘录 | AUC值的含义与计算方法

    内容导读 在机器学习领域, AUC 值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说, AUC 值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来 ...

  2. auc指标含义的理解

    机器学习实践中分类器常用的评价指标就是auc,不想搞懂,简单用的话,记住一句话就行 auc取值范围[0.5,1],越大表示越好,小于0.5的把结果取反就行. 想搞懂的,看An introduction ...

  3. AUC的含义——及线上线下不一致性分析

    一.前言 在算法面试中,常常会被一个问题AUC的物理含义是什么.其物理含义是:测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score. 举例说明一下: 样本:y ...

  4. 又是模型评估?到底怎么评估?『附 AUC 评估的三计算方法』

    大家好,我是小一 今天继续聊聊模型评估的事儿 前面一节提到了模型评估指标中 ROC 的详细概念和四个常见的问题,以后在遇到 ROC 想必再也不会发懵了:聊聊模型评估的事儿,附 roc 常见的四个灵魂发 ...

  5. AUC的含义以及Python代码手动实现

    主要以二分类为例,AUC曲线是ROC曲线下方的面积.ROC曲线的横坐标是假阳率,纵坐标是真阳率. AUC 的计算 1)将所有正样本pos1,pos2,,,posm与所有负样本neg1,neg2,neg ...

  6. HTTP协议中POST、GET、HEAD、PUT等请求方法及相应值得含义

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 请求方法是请求一定的Web页面的程序或用于特定的URL.可选用下列几种: GET: 请求指定的页面信 ...

  7. 目标检测类mAP等衡量指标的含义和计算方法

    1.IoU(Intersection over Union): 预测框与Ground truth(真实框)的交集与并集的比值.这个量也被称为Jaccard指数. 计算公式 2.TP(True Posi ...

  8. c语言露点温度,露点温度 - 含义及计算方法

    在上一篇有关相对湿度 (RH) 的文章之后,让我们来看看第二常用的湿度参数 - 露点温度.这是空气中的水蒸气含量要达到饱和而必须将空气冷却到的温度,要想更容易地理解这一现象,不妨想象一下淋浴.如果淋浴 ...

  9. ROC及AUC计算方法及原理

    1.非均衡分类问题 在大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价是不能相提并论的.例如在垃圾邮件过滤中,我们希望重要的邮件永远不要被误判为垃圾邮件,还有在癌症检测中,宁愿误 ...

最新文章

  1. DNC-cs6200 ospfv3
  2. 如何用纯 CSS 创作气泡填色的按钮特效
  3. 【代码笔记】iOS-自定义弹出框
  4. WF初学者对工作流的认识
  5. 微型计算机内存不能用指令修改的部分,在微型计算机内存储器中,不能用指令修改其存储内容的部分是什么?...
  6. java分装_Java ——Number Math 类 装箱 拆箱 代码块
  7. 两分钟倒计时(Python)
  8. android intent enum,enum类型被intent所携带时需要注意的地方
  9. Java for循环改数据_如何改变arrs数组?当然是需用for循环啦
  10. 京东推荐算法精排技术实践
  11. matlab 可视化 —— imagesc、
  12. [转载] comma.ai自动驾驶代码浅析及实践
  13. 30多套API接口,还怕满足不了你的量化交易需求?
  14. 一加3t刷机后还卡_一加3t刷机工具大全+3个ROM
  15. 计量经济学笔记1-Eviews操作-一元线性回归
  16. 前端应用 - 汉字笔顺书写演示带拼音及发音
  17. 2020-2022 抗疫营销案例合集(共17份)
  18. 数据结构C语言般卷纸真题,数据结构(C语言版)考研真题(A卷)
  19. mysql jdbc dao_MYSQL 之 JDBC(九):增删改查(七)DAO的补充和重构
  20. Ubuntu(乌班图)修改阿里云镜像源详细步骤及安装gcc编译器

热门文章

  1. 实验5、白盒测试:覆盖测试及测试用例设计
  2. android plurals用法
  3. pngQuant图片压缩命令行工具
  4. Apache ECharts下载安装(以GitHub下载源为例) |以及第一个echart图表快速上手
  5. C++ Reference: Standard C++ Library reference: Containers: map: map: rend
  6. UE Base64图片格式 的加载显示方式
  7. 【安全利器SELinux快速入门系列 | 01】SELinux基础入门
  8. 前端cookie、localStorage、sessionStorage缓存技术总结
  9. 实现邮箱验证(邮箱验证码登录)
  10. 惠州市惠阳区房价偏低的原因深入分析