整顿职场,从 ROC 曲线开始

b651eb652986e9f6a0f1a1a9fcf24fc4.png

文 | 天于刀刀

大家好,我是刀刀。

这周有个哥们在组会上被领导刁难了一波,来群里吐槽,最后意外地在大神的指导下又复习了一下 precision recall rate (PRR) 和 ROC 曲线的知识点:

e4f0bb588cc2caa1ec195e3fb2cf36ef.jpegeab2fc723bd258e34318d92452a03053.jpega0e810fb94b93f3f9d7159d9d662e50e.jpeg7762b3dc342d713353c92d7561b806d2.jpeg

后面聊天的画风就彻底转向吐槽老板吐槽工作了,就不全截图了。不得不说,咱整治职场靠的不是初生牛犊,而是实打实的技术和知识啊。

没想到熟背面经中 attention 机制的我竟然在基础的 ROCPR 曲线这里存在知识点缺漏,不得不说学习还是不能只靠死记硬背,而是需要灵活理解。

其实这个问题好多小伙伴都没想过!

“ROC 曲线和 PR 曲线到底各自有什么优缺点”

“在样本数据不均匀的情况下,使用 ROC 更好还是 PRC 更好?”

结论就像聊天记录中大神说的那样,虽然 ROC 适用于评估分类器的整体性能,但是对于类别不均衡的数据,ROC 曲线往往会过于“乐观”,因此还是 PR 曲线更好。

我们知道,ROC 表示了 TPR(True Positive Rate) 和 FPR(False Positive Rate) 之间的关系。TPR是在正样本的基础上计算的,FPR是在负样本的基础上计算的,因此即使正负样本的比例不均衡,计算结果并不会改变。我们只需要注意保证样本的绝对数量不能太低,让 TPR 和 FPR 统计意义上有意义。

与之相对的,精度召回曲线的情况恰恰相反,尽管召回率只在正样本基础上计算,精度准确率需要同时测量正和负样本,因此精确度的测量取决于数据中的正负之比。

ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能,相比而言PR曲线完全聚焦于正例。

一种常见的认为 ROC 适用不均衡数据集的错误观点是,反正 TPR 和 FPR 的计算方式都是比值,因此数据是否均衡并不重要。

首先运用极限思想,在二分类问题中假设 A 类数据占据了 99.99%,那么分类器只需要预测所有数据为 A 类即可。这显然不合理。

其次对于多分类问题,ROC 也会因为“负类”的概念出现问题。即使你的数据在各个类别里是均匀分布的,对于 negative class,也就是所有的不是你目标的类别,也必定会被过度代表。

而 Precision Recall 曲线可以很好地解决这个问题。

e88faad6ea609ff3adaf72927c5d5ede.png

那么 ROC 曲线适合被应用在什么地方呢?

ROC曲线主要不是为了显示出阈值是多少,而是关于模型在使用某个阈值时特征空间中数据的分离程度。对于一个鲁棒的分类器,TPR提升的速度应该远远地高于FPR提升的速度(凹函数)。

因此可以根据具体的应用,在曲线上找到最优的点,得到相对应的 precision 和 recall 等指标,去调整模型的阈值,从而得到一个符合具体应用的模型。

0d86304b56b69f6c63904dc256ea9a65.png

(a)和(c)为 ROC 曲线,(b)和(d)为 Precision Recall 曲线 (a)和(b)使用原测试集,(c)和(d)将测试集中负样本的数量增加到原来的10倍

上图来自大名鼎鼎的 An introduction to ROC analysis [3]。在数据分布改变后可以明显看到,ROC 曲线几乎没有改变, PR 曲线变动剧烈,时好时坏,这种时候难以进行模型比较。

因此数据中如果存在不同的类别分布,且想要比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合;反之,如果想测试相同类别分布下对分类器的性能的影响,则PR曲线比较适合。

最后我们得到一个有点反直觉的结论:

ROC 曲线选用的两个指标不依赖数据中具体的类别分布,因此不适合被应用于数据分布极度不均的任务中。

4f54d96416efe162aa046a1391b8d5ab.png
c5c8975522f21382df5ca39f71bca9d6.png

卖萌屋作者:天于刀刀

注重 WLB 的工业界反卷斗士,未进化的 NLP 咸鱼一条。专注于研究在各个场景中算法模型的落地情况,希望自己编写的算法有朝一日可以改变世界。目前的兴趣点在于:假新闻检测、深度学习模型可解释性等。

作品推荐

1.腾讯薪酬改革来了!晋升≠加薪?员工到底为何工作?

2.从 Google AI 离职了,这里让我爱不起来

3.百万悬赏!寻找“模型越大,效果越差”的奇葩任务!

4.想通这点,治好 AI 打工人的精神内耗

97fa7745a09f72ed4f0435692977e575.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

 95a77a551a96e90ae1772a72c919ea7e.png

[1] Accurate blogs on machine learning, https://www.reddit.com/r/MachineLearning/comments/y9n120/d_accurate_blogs_on_machine_learning

[2] 评价标准专题:常见的TP、TN、FP、FN和PR、ROC曲线到底是什么,大龙,https://zhuanlan.zhihu.com/p/87768945

[2] An introduction to ROC analysis, Tom Fawcett, https://www.sciencedirect.com/science/article/pii/S016786550500303X

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构--树状数组

文章目录1. 树状数组2. 单点修改3. 区间修改4. 完整代码5. 参考文献1. 树状数组 类似数据结构:线段树(Segment Tree) 树状数组 跟 线段树 的区别: 树状数组能做的事情,线段树都能做!(线段树功…

python异常数据处理_Python爬虫提高之异常处理

Python爬虫框架之异常处理 任何访问服务器获取数据的请求,都需要做异常处理,当然爬虫更需要我们对各种异常进行处理。只有这样才能提高爬虫的健壮性。如果我们的爬虫足够健壮,那么就能确保程序几个月不停止。 我们从以下几个方面做出讲解&…

BERT部署加速622%,YOLOv7部署加速590%,这款开源压缩神器火了!

导读 众所周知,计算机视觉技术(CV)是企业人工智能应用比重最高的领域之一。为降低企业成本,工程师们一直在探索各类模型压缩技术,来产出“更准、更小、更快”的AI模型部署落地。而在自然语言处理领域(NLP&…

程序员面试金典 - 面试题 10.10. 数字流的秩(map/树状数组)

文章目录1. 题目2. 解题2.1 map2.2 树状数组1. 题目 假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。 请实现数据结构和算法来支持这些操作,也就是说: 实现 track(int x) 方法,每读入…

python常用函数的用法_python中常用函数整理

1、map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象。 class map(object):""" map(func, *iterables) --> map objectMake an iterator that computes the…

.NET中得到计算机硬件信息

VB.NET中得到计算机硬件信息 本文汇集了在.net中得到计算机硬件信息的一些功能。 得到显示器分辨率 Dim X As Short System.http://dev.21tx.com/os/windows/" target"_blank">Windows.Forms.Screen.PrimaryScreen.Bounds.Width Dim Y As Short System.…

diffusion新高度!可一次性生成200张图??

文 | Pine 明敏(凹非寺)源 | 量子位给AI一个提示词,一次性出200张图!生成速度嗖嗖的,不到3分钟全搞定。喜欢哪张任君挑选,还能直接二次调整编辑。咱就是说,这回用AI画画,终于不废人了…

转正

三个月的时间悄悄的溜走这也是我走出学校之前与社会的一段磨合期感觉自己是幸运的因为在我身边总是可以遇到很多很好的朋友一起陪伴着走过风风雨雨或许生活是残酷的或许我们总是会遇到这样那样不如意的事情但是只要我们勇敢的去面对雨后的天空总会有绚丽的彩虹不要埋怨命运因为…

程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)

1. 题目 有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。 注意,不是必须有这些素因子,而是必须不包含其他的素因子。 例如,前几个数按顺序应该是 1,3,5,7&…

python怎么封装供java调用_python调用第三方java包实例

先看结果:对于python与java的互调,我一开始是用的py4j,但是后来发现在使用方法的时候,不知道如何在python中导入jar包,然后网上的资料也比较少。后来想不出来办法,又看到有Jpype这个东东。博友们说Jpype的安装比较不好…

推特大裁员后,马斯克与白宫发生冲突!META 大批裁员正在路上

文 | 天于刀刀他来了他来了!他带着他的裁员方案走来了!带着他的水槽 sink in 的第一天,全球打工人的目光不由自主地聚焦于这个神奇的男人身上:paypal 帮派元老,特斯拉 starlink 创始人,埃隆火星人马斯克&am…

*如何循序渐进向DotNet架构师发展(转)

微软的DotNet开发绝对是属于那种入门容易提高难的技术。而要能够成为DotNet架构师没有三年或更长时间的编码积累基本上是不可能的。特别是在大型软件项目中,架构师是项目核心成员,承上启下,因此RUP方法论也认同以架构为核心,体现4…

如何利用python整合excel_使用 Python 合并多个格式一致的 Excel 文件(推荐)

一 问题描述 最近朋友在工作中遇到这样一个问题,她每天都要处理如下一批 Excel 表格:每个表格的都只有一个 sheet,表格的前两行为表格标题及表头,表格的最后一行是相关人员签字。最终目标是将每个表格的内容合并到一个 Excel 表格…

程序员面试金典 - 面试题 17.07. 婴儿名字(并查集)

1. 题目 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。 有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。 给定两个列表,一个…

神经网络的简单偏好

文 | 许志钦知乎(已授权)源 | 天天机器学习作者注记我是2017年11月开始接触深度学习,至今刚好五年。2019年10月入职上海交大,至今三年,刚好第一阶段考核。2022年8月19号,我在第一届中国机器学习与科学应用大…

电影的音乐

Yann Tiersen,法国代表作:《天使爱美丽》《再见,列宁》 对于大家来说,一提到扬蒂尔森(Yann Tiersen)想到的便是《天使爱美丽》。的确《天使爱美丽》使这位法国音乐人一夜成为世界注目的艺术家。在我看来《天使爱美丽》的导演让皮埃尔热内(Jea…

python 列表写入csv_Python将字典数据写入CSV文件

# -*- coding: utf-8 -*- import os import time import csv class WriteCSV(): """定义成员变量""" def __init__(self): pass def init(self, info_list, info_dict_list): self.info_list info_list self.info_dict_list info_dict_list de…

数据结构--并查集(Disjoint-Set)

文章目录1. 并查集2. 操作2.1 初始化2.2 查询2.3 合并2.4 孤立3. 完整代码4. 相关题目5. 参考1. 并查集 并查集是一种树型的数据结构用于处理一些不相交集合(Disjoint Sets)的合并及查询问题 2. 操作 2.1 初始化 把每个点所在集合初始化为其自身&…

推特裁员大反转!马斯克哭求被裁员工回来

编 | Aeneas 好困源 | 新智元马斯克裁完一半员工后,发现推特运转不了了,现在正哭求一些人回来,堪称爽文情节了。打脸大戏来了!马斯克在上周五「灭掉」一半员工后,就后悔了。现在公司正在紧急联系数十名被裁的员工&…

Visual Studio 2008 Shell(翻译)

如果你现在在创建软件开发工具,你现在可以选择基于Visual Studio 2008 Shell。一个流行的Visual Studio 开发环境,Visual Studio Shell提供了一些核心功能,使你能够创建独一无二的应用程序,弹性的自定义能力帮助你推出更加特别的产…