绘制ROC曲线
什么是ROC曲线
ROC曲线是什么意思,书面表述为:
“ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。”
好吧,这很不直观。其实就是一个二维曲线,横轴是FPR,纵轴是TPR:
至于TPR,FPR怎么计算:
-
首先要明确,我们是在讨论分类问题中,讨论怎样绘制ROC曲线的,大前提是分类问题。别想太多,就当是二分类问题好了,一类是Positive,一类是Negative
-
分类模型的预测结果,被阈值化之后,判定为TP,FP,TN,FN四种情况:
- if Y_pred ≥ thresh and Y_gt is Positive, then TP++
- if Y_pred ≥ thresh and Y_gt is Negative, then FP++
- if Y_pred < thresh and Y_gt is Positive, then FN++
- if Y_pred < thresh and Y_gt is Negative, then TN++
-
然后TPR, FPR的定义为
TPR = TP / (TP + FN) (也就是Recall) FPR = FP / (FP + TN)
举个栗子
假设你现在做机器学习笔试题,题目给了分类任务中的测试集标签和分类模型的预测结果,也就是给了Y_pred和Y_gt,让你手绘AUC曲线。Can you draw it?
答案一定是Yes, I can(看一下就会了)。
gt: [0, 1, 0, 1]. pred: [0.1, 0.35, 0.4, 0.8] 那么在阈值分别取{0.1, 0.35, 0.4, 0.8}的时候,分别判断出每个pred是TP/FP/TN/FP中的哪个,进而得出当前阈值下的TPR和FPR,也就是(FPR, TPR)这一ROC曲线图上的点;对于所有阈值都计算相应的(FPR, TPR),则得到完整的ROC曲线上的几个关键点,再连线(稍微脑补一下?)就得到完整ROC曲线。(再进一步,AUC也可以计算了,不是嘛?)
计算过程如下:
绘制得到的ROC曲线为:
好吧,这个例子其实来自于如何绘制ROC曲线。
再举一个例子好了:
对于一组二元分类任务的测试集,其真实值为[0, 0, 0, 0, 1, 1, 1],模型预测为1的概率为[0.3, 0.2, 0.7, 0.5, 0.4, 0.9, 0.6],该模型在这个测试集上的ROC曲线为?(题目来源:sofasofa.io,一个有趣的机器学习社区,里面的机器学习题库)
对应的ROC曲线为:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
2014-07-15 定制Eclipse