AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积, 对于二分类模型,还有很多其他评价指标,比如 logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如 kaggle,那你会发现 AUC 和 logloss 基本是最常见的模型评价指标。

从AUC 判断分类器(预测模型)优劣的标准:

AUC = 1,是完美分类器;

AUC = [0.85, 0.95], 效果很好;

AUC = [0.7, 0.85], 效果一般;

AUC = [0.5, 0.7], 效果较低,但用于预测股票已经很不错了;

AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值;

AUC < 0.5,比随机猜测还差。

为什么 AUC 和 logloss 比 accuracy 更常用呢?

因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算 accuracy,需要先把概率转化成类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个预测,就把这个样本放进一个类别里面,低于这个阈值,放进另一个类别里面。

所以这个阈值很大程度上影响了 accuracy 的计算。使用 AUC 或者 logloss 可以避免把预测概率转换成类别。

如何计算

ROC曲线下面积:

横坐标正是 FPR (False Positive Rate),纵坐标是 TPR (True Positive Rate),计算公式:

(梯形面积计算:上底+下底的合 * 高 /2,例如上图中的某个i下对应的面积)

由此引出True Positive Rate(真阳率)、False Positive(伪阳率)两个概念:

TPRate的意义是所有真实类别为1的样本中,预测类别为1的比例。

FPRate的意义是所有真实类别为0的样本中,预测类别为1的比例。

相关指标:

实际1,预测1:真正类(tp)

实际1,预测0:假负类(fn)

实际0,预测1:假正类(fp)

实际0,预测0:真负类(tn)

真实负样本总数=n=fp+tn

真实正样本总数=p=tp+fn

概率角度:

AUC 考虑的是样本的排序质量,它与排序误差有密切关系,在此,AUC可以在一定程度上理解为正样本排在负样本前面的概率,可得到计算公式:

其中,rank 为样本排序位置从 1 开始,∣P∣ 为正样本数,∣N∣ 为负样本数。

对该公式的解释:

举个例子:这里,我们将所有样本得到的值从小到大排列(这个不必特别强调升序降序,主要看rank怎么定义==> 小的probs具有小的rank值),rank我们定义为样本在这个排序序列中的index。

probs

rank

label

0.1

1

0

0.2

2

0

0.5

3

0

0.6

4

1

0.7

5

0

0.8

6

1

0.9

7

1

这里,probs为预测得到的概率,P(正例个数,即原本label=1的样本个数) 为3,N(负例个数,即原本label=0的样本个数)为4。

我们要求的是AUC正例的rank比负例的rank大的概率,即P(rank正>rank负)。对于P个正例、N个负例,共有P*N(12)对(正例,负例)的组合对,我们要求AUC,需要求的是在所有组合对中,Rank正例大于Rank负例的比例是多少

我们看上表标红的正例:

对于rank为7的正例,共有rank-P个 rank正大于rank负的组合对:

rank7: (7, 7) (7,6) (7,5) (7,4) (7,3) (7,2) (7,1)    : rank7 - P = 4

以此类推:

rank6:rank6-P+1 = 6-3+1 = 4

rank4:rank4-P+2 = 4-3+2 = 3

最后求得AUC = 正例rank大于负例的组合对/所有组合对 = 4 + 4 + 3 / 12 = 0.9167

观察可得,我们把ranki的部分加和加和就得到了公式中的

,把后面减去的1, 2.....P(等差数列)加和就得到了公式中的

AUC的优点

它不受类别不平衡问题的影响,不同的样本比例不会影响AUC的评测结果。

例如在反欺诈场景,设欺诈类样本为正例,正例占比很少(假设0.1%),如果使用准确率评估,把所有的样本预测为负例,便可以获得99.9%的准确率。

但是如果使用AUC,把所有样本预测为负例,TPRate和FPRate同时为0(没有Positive),(0,0) 与 (1,1)连接,得出AUC仅为0.5,成功规避了样本不均匀带来的问题。

在训练时,可以直接使用AUC作为损失函数。

AUC指标本身和模型预测 score 绝对值无关,只关注排序效果,因此特别适合排序业务。

在python中,可直接调用sklearn中计算auc的方法~

auc 和loss_AUC 理解相关推荐

  1. 机器学习AUC指标的理解

    机器学习AUC指标的理解 AUC在机器学习领域中是一种模型评估指标,是指模型ROC曲线下的面积.分类器效果月AUC值成正比.即当分类器的分类效果越好的时候,ROC曲线下面积越大,AUC越大. 其中,R ...

  2. ROC曲线与AUC区域的理解与实践

    Receiver Operating Characteristic Area Under the Curve (ROC and AUC). 如何向别人解释 ROC AUC 对评价机器学习算法的意义: ...

  3. ROC和AUC指标的理解

    ROC曲线的通俗理解 auc指标含义的理解

  4. roc与auc曲线的理解

    roc:专业术语称为"受试者工作特征"(Receiver Operating Characteristic)曲线:它是真正例与假正例比值:首先后面两字"正例"就 ...

  5. AUC含义的通俗理解

    AUC含义的通俗理解 假设有一个分类器,并且该分类器可以得到将一个样本预测为正的概率,并将此概率称为这个样本的得分. 首先说一下AUC的含义:随机给定一个正样本和一个负样本,用一个分类器进行分类和预测 ...

  6. auc到多少有意义_AUC及其理解

    在互联网精准广告中,可以从多个角度来评估一个CTR模型的性能,但通常以AUC作为模型评估的最直接指标,直观上讲,AUC是从排序能力的角度来对模型进行评估.下面将详细解释AUC的含义及其计算方式, 2 ...

  7. AUC / uAUC

    AUC,具体计算方法这里不列了,这里主要说一下对AUC的一些理解,公式参见机器学习常见面试题目. 为什么AUC这么受欢迎呢? 首先是它反应的是模型的排序能力,它不关心具体的打分Score的绝对值,只关 ...

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

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

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

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

最新文章

  1. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程
  2. 数据库-数据存储引擎
  3. 如果每天进步1%,明年的今天你会怎样
  4. 在日常维护管理中对MySQL 日志的需求
  5. 软件复杂度与分而治之
  6. 数码大师2013破解补丁|数码大师2013白金版注册破解补丁下载(附数码大师2013白金版注册码)
  7. mysql手册07_存储引擎
  8. 最新民间偏方大全,个人收集整理,绝对值得收藏
  9. linux安装lsi raid卡驱动下载,【LSIRAID卡驱动下载】LSIRAID卡官方驱动程序下载
  10. js中的四种常用数组排序方法(冒泡、选择、插入、快排)及sort排序
  11. 基于微软 SAPI 的 TTS 程序实现
  12. nginx安装、nginx前端配置、后端配置、前后端分离配置、https支持(ssl配置)、负载均衡配置、nginx location详解
  13. 小型网络拓扑(vlan)
  14. Angular4+ng2-ckeditor踩坑
  15. 网络营销存在的安全问题
  16. 二手车 电商+互联网金融的三种新玩法
  17. “墨子号”卫星已上天:未来每部手机都会由量子芯片加密
  18. getrusage函数详解
  19. python 限定类型
  20. android蓝牙双通道意义,基于android移动平台的单双通道助听器实现-桂林电子科技大学学报.pdf...

热门文章

  1. 突破防盗链Referrer
  2. 计算机专业中级工程师论文样本,中级职称专业论文范文
  3. Java 开发实习任务总结
  4. linux/kali NAT网络连接修复
  5. python中正确的赋值语句为_在Python中,正确的赋值语句为(    )
  6. Python|“套娃”算法-递归算法解决全排列
  7. C_Me音乐播放器源码
  8. VC++6.0创建新项目
  9. 解决traceroute命令全部是星号*
  10. 在用计算机编程进行潮流计算时,《电力系统分析》课程 - 图文