导读

通常我们在解决某个问题的时候,会设计多种分类算法在训练的时候我们还会调节各种超参以及使用各种trick以获取最优的分类模型,那这时候我们应该如何来衡量这个最优呢?

分类算法的评估指标有很多种,选择使用哪一种评估指标,应该根据实际情况来进行选择,而不能一概而定。

混淆矩阵

我们先来了解一下混淆矩阵,后面的分类评估指标其实都是在这个基础上发展而来,理解了这个,再去学习后面的评估指标就很简单了。

混淆矩阵(confusion matrix):是机器学习领域统计分类问题中常用的可视化工具,从名字上不能看出其实它就是一个矩阵,它主要由两个维度组成实际类别预测类别。矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例。之所以如此命名,是因为通过这个矩阵可以方便地看出机器是否将两个不同的类混淆了(比如说把一个类错当成了另一个)。下面我们来看一个猫狗分类的实例

混淆矩阵

上面的表格很简洁的展示了分类模型的预测结果,一共预测了8只猫和5只狗,其中5只猫和3只狗预测正确,3只猫和2只狗预测错误。表格中的对角线元素表示预测正确,对角线之外均表示预测错误,下面我们用专业的术语来描述预测结果:

  • 真正例(True Positives)简称TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
  • 假正例(False Positives)简称FP:被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
  • 真负例(True Negatives)简称TN:被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
  • 假负例(False Negatives)简称FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数

对上面的术语做一个说明帮助大家记忆和理解:
上面中的True和False表示的是样本的真实标签,Positives和Negatives表示的是模型的预测标签。样本实际的正例数:P=TP+FN样本实际的负例数:N=TN+FP

分类算法中的评估指标

  1. 正确率(accuracy)

正确率是我们常用的分类指标,计算公式如下

正确率是指分类算法预测正确的样本在总样本中所占的比例,一般来说,正确率越大表示分类算法的效果越好

  1. 错误率(error)

错误率是指分类算法预测错误的样本在总样本中所占的比例,计算公式如下

对于某一个实例来说,分对和分错是一个互斥事件,accuracy+error=1

  1. 召回率(recall)

召回率也被称为灵敏度(sensitivity),指分类正确的正例在正例中所占的比例

  1. 精度(precision)

精度是精确性的度量,表示被分为正例中实际为正例所占的比例

  1. 特异性(specificity)

表示的是所有负例中被分对的比例,衡量了分类器对负例的识别能力

  1. F1-Score

有的时候我们需要结合多个指标来评估算法的效果,而F1-Score就是综合考虑了recallprecision两个指标,因此F1-score也被称为综合分类率。计算公式如下

  1. ROC曲线

ROC曲线是(Receiver Operating Characteristic Curve,受试者工作特征曲线)的简称,是以灵敏度(真阳性率)为纵坐标,以1减去特异性(假阳性率)为横坐标绘制的性能评价曲线。可以将不同模型对同一数据集的ROC曲线绘制在同一笛卡尔坐标系中,ROC曲线越靠近左上角,说明其对应模型越可靠。也可以通过ROC曲线下面的面积(Area Under Curve, AUC)来评价模型,AUC越大,模型越可靠。

  1. PR曲线

PR曲线是Precision Recall Curve的简称,描述的是precision和recall之间的关系,以recall为横坐标,precision为纵坐标绘制的曲线。该曲线的所对应的面积AUC实际上是目标检测中常用的评价指标平均精度(Average Precision, AP)。AP越高,说明模型性能越好。

分类算法中常见的问题

  • 正确率指标能很好的评估分类模型吗?

不一定。例如我们想开发一个地震警报器,当地震要来临时提前发送警报让大家避险。而我们知道,实际上地震发生的次数很少,也许100次中可能只有1次地震,甚至更低,这里为了方便计算。如果此时,我们的预测器将这100次的预测结果都预测为不会发生地震,那我们的预测器的正确率有99%。

虽然,这个预测器的正确率很高,但是实际上它不会产生任何的商业价值,其实也就没任何使用价值。实际上我们需要预测正确的正是那一次的地震。

针对这种情况我们更希望是recall指标尽可能的高,而不是正确率。所以,对于分布不平衡的数据来说并不是正确率越高越好,应该根据实际需求来选择评估指标。

  • 如何绘制ROC曲线?

在现实任务中,我们只是对有限个测试样本进⾏绘制ROC图,此时只能获得有限个(假正例率,真正例率)坐标对,就⽆法获得如(a)的光滑的ROC曲线,就会获得如图(b)的近似的ROC曲线。

绘图过程如下:给定m1个正例和m2个反例,根据模型预测结果(正例的概率)对样例进⾏排序,然后把分类阈值设置为最⼤,即把所有样例都预测为反例,此时真正例率和假正例率都为0,在坐标(0, 0)处标记⼀个点,然后将分类阈值依次设置为每个样例的预测值,即依次将每个样例设置为正例,若前⼀个标记点坐标为(x, y),当前若为真正例,则对应标记点坐标为(x, y+1/m1);若当前为假正例,则对应标记点坐标为(x+1/m2, y),然后⽤线段连接相邻的点。

二分类最优阈值确定_一文搞懂分类算法中常用的评估指标相关推荐

  1. raft算法mysql主从复制_一文搞懂Raft算法

    raft是工程上使用较为广泛的强一致性.去中心化.高可用的分布式协议.在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos.但Paxos是:少数真正理解的人觉得简单,尚未理解的人 ...

  2. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  3. 二分类最优阈值确定_分类模型评价标准,AUC还是Macro F1?

    在人工智能领域,分类任务占据了很大的比例,例如物体识别(计算机视觉).信用卡欺诈(数值型预测).情感分析(自然语言处理)等等.针对众多的分类需求,模型的评价标准只是简单的准确率(Accuracy)吗? ...

  4. 二分类最优阈值确定_分类问题的评估指标一览

    前言 最近分类问题搞的有点多,但对一些指标依旧有模糊的地方(虽然做了笔记), 事实证明, 笔记笔记,没有进到脑子里呀. 因此,我想着肯定有跟我一样半生半熟的小伙伴在分类指标这块依旧有迷惑,毕竟常用的几 ...

  5. 二分类最优阈值确定_机器学习 | 详解GBDT在分类场景中的应用原理与公式推导...

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第31篇文章,我们一起继续来聊聊GBDT模型. 在上一篇文章当中,我们学习了GBDT这个模型在回归问题当中的原理.GBD ...

  6. 二分类最优阈值确定_机器学习-分类和聚类

    ## 机器学习-分类和聚类.分类和回归.逻辑回归和KNN 分类和聚类的概念: ** 1.分类:使用已知的数据集(训练集)得到相应的模型,通过这个模型可以划分未知数据.分类涉及到的数据集通常是带有标签 ...

  7. 边框回归的损失函数_一文搞懂常用的七种损失函数

    主要内容: 0-1, Hinge, Logistic, Cross Entropy, Square, Absolute, Huber 简述: 损失函数刻画了模型与训练样本的匹配程度. 分类损失 分类L ...

  8. rest api是什么_一文搞懂什么是RESTful API

    RESTful接口实战 首发公众号:bigsai 转载请附上本文链接 文章收藏在回车课堂 前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景 ...

  9. dice系数 交叉熵_一文搞懂交叉熵损失

    本文从信息论和最大似然估计得角度推导交叉熵作为分类损失函数的依据. 从熵来看交叉熵损失 信息量 信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小. 设\(X ...

最新文章

  1. 重磅下载 | 如何构建Flutter企业级应用开发?
  2. Java servlet ajax
  3. vue多个根节点上的属性继承
  4. hihoCoder week10 后序遍历
  5. CleanMyMac v4.10.1支持Monterey 12.x
  6. linux在多核处理器上的负载均衡原理(2)
  7. 编译原理学习之:上下文无关文法(Context-free Grammar)和下推自动机(Push-down automata)
  8. python连接sftp下载文件及文件夹
  9. iOS之KVC原理自定义KVC
  10. JMeter接口自动化发包与示例
  11. (史上最完整) 队列 的基本操作和实现 及排队系统实例
  12. python绘制饼图
  13. 敏捷实践不可忽略的环节
  14. 计算机局域网切换,怎么进入别人电脑--局域网【详解】
  15. 看不懂淘宝特价版,就像之前看不懂拼多多?
  16. 2018网站优化人员不同阶段在做哪些事
  17. Vue 开发必须知道的 36 个技巧
  18. 资产负债表 利润表 现金流量表
  19. Dreamweaver 8 建立网页实例
  20. TB6600+stm32+42步进电机测试

热门文章

  1. cocosCreator 用进度条展示场景加载进度
  2. java静态网页_【屌炸天源码分享】《企业网站html静态网页模板》
  3. bom成本分析模型_各位成本会计,请问用BOM表算成本的大致思路是什么?
  4. 关于Trigger的介绍
  5. matlab中xpcapi库的调用,关于MATLAB中xpc实时控制平台搭建的心得
  6. 未来生活进行时: 互联网”进化论”——达尔文与人工智能的故事?!
  7. 第九章:项目资源管理 - (9.4 建设团队)
  8. Java面试总结(2021优化版)发布1024程序员节
  9. SpringBoot整合Freemarker导出word文档表格
  10. Linux解决No such file or dirctory方法