内容导读

在机器学习领域, 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值得含义和计算方法

    转载自:http://baijiahao.baidu.com/s?id=1597939133517926460&wfr=spider&for=pc 机器学习备忘录 | AUC值的含义与 ...

  2. 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分 ...

  3. 详解机器学习中 ROC曲线、AUC值、正确率、召回率

    文章目录 前言简介 医学图像识别二分类问题 ROC 曲线 如何画ROC曲线 AUC 前言简介 在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例 ...

  4. ROC曲线 AUC值

    全面了解ROC曲线 一. 初识ROC曲线 1. ROC的前世今生: ROC的全称是"受试者工作特征"(Receiver Operating Characteristic)曲线,  ...

  5. 入门选手都能理解的ROC曲线与AUC值

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 欢迎大家star,留言,一起学习进步 1.ROC曲线 在信号检测理论中,接收 ...

  6. 【杂纪】从ROC曲线到AUC值,再到Mann–Whitney U统计量

    统计检验中的两类错误 在进行假设检验时,分别提出原假设(Null Hypothesis)和备择假设(Alternative Hypothesis),检验结果可能出现的两类错误: 原假设实际上是正确的, ...

  7. 分类性能度量指标:ROC曲线、AUC值、正确率、召回率、敏感度、特异度

    在分类任务中,人们总是喜欢基于错误率来衡量分类器任务的成功程度.错误率指的是在所有测试样例中错分的样例比例.实际上,这样的度量错误掩盖了样例如何被分错的事实.在机器学习中,有一个普遍适用的称为混淆矩阵 ...

  8. 机器学习11. ROC曲线、AUC值、Accuracy、Precision、Recall 含义

    AUC/ROC,Accuracy,Precision,Recall 含义.查准率,查全率,样本均衡问题 部分图片转自这里 行的True和False表示预测为正负 列的Pos和Neg表示真实的正负 表哥 ...

  9. python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值、可视化模型效能

    python可视化多个机器学习模型在独立测试集(test data set)上面的AUC值.可视化模型效能 # x_lables为模型名称列表,包括,逻辑回归.朴素贝叶斯.支持向量机.随机森林.xgb ...

最新文章

  1. vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像
  2. 局内网用户访问wamp本地站点
  3. Java——多线程学习
  4. java程序设计_Java程序设计-类和对象(笔记)
  5. 相机拍照功能之权限和Android版本问题
  6. 早晚我要把它们都干掉!!!!!!!
  7. 入门必学 | R语言数据集结构的解读指南
  8. python+opencv简单人脸识别(源码)(有手就行)
  9. 一文读懂品质体系认证,学会判断 PCB 板厂生产资质
  10. java定时任务之quartz
  11. 让你无法拒绝的数学之美,美的完美无瑕
  12. 开源月刊《HelloGitHub》第 62 期
  13. 《中国古代文化常识》读书笔记
  14. 基金套利是怎么玩的?
  15. 垃圾回收的主要区域是堆,那方法区会回收吗?
  16. 服务器显示idc,知道一个IP,怎么查询这个服务器是哪家IDC提供的?
  17. 2011移动开发者大会亮点之二:七大论坛神秘嘉宾闪亮登场!
  18. 从数据可视化模板,到数据分析方案,都整理给你了!
  19. 关于手机内部存储,外部存储
  20. 机房收费系统(六)-结账

热门文章

  1. TCP三次握手和syn攻击
  2. 软件测试质量度量指标
  3. Linux搭建nfs共享服务
  4. USBCopyer 插上优盘自动复制文件 v3.5
  5. 副业做什么最赚钱?2021年最赚钱的副业
  6. 图的导航 - 最短路径算法
  7. 【C++】string类下的begin,end,rbegin,rend的用法
  8. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式
  9. js计算生理期代码怎么写
  10. php 取整 ceil,php取整函数ceil、floor、round、intval用法区别