当前位置: 首页 > news >正文

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录:sheng的学习笔记-AI目录-CSDN博客

分类准确度问题

假设有一个癌症预测系统,输入体检信息,可以判断是否有癌症。如果癌症产生的概率只有0.1%,那么系统预测所有人都是健康,即可达到99.9%的准确率。

但显然这样的机器学习系统是失败的,因为对于极度偏斜(Skewed Data)的数据,只使用分类准确度是远远不够的。

针对这样的问题,我们需要引入其他指标来评估机器学习分类结果的好坏。

混淆矩阵

对于二分类问题,混淆矩阵是2x2,分别是0和1,其中每一行代表真实值,每一列代表预测值

  • TP:True Positive。预测为1,实际为1,预测正确。
  • FP:False Positive。预测为1,实际为0,预测错误。
  • FN:False Negative。预测为0,实际为1,预测错误。
  • TN:True Negative。预测为0,实际为0,预测正确。

指标

取值范围

这几个指标的取值都在0-1之间,数值越接近于1,效果越好

精度

预测数据中预测正确的数量就是精准率,检索出来的条目有多少是正确的

召回率 

真实发生数据预测正确的数量就是召回率,所有正确的条目有多少被检索出来

F1Score

F1Score指标就是综合精准率和召回率两个指标,只有当召回率和精度都很高时,分类器才能得到较高的F1分数

ROC曲线

首先引入两个指标,误报率(FPR)和召回率(TPR)。

其中FPR =   \frac{FP}{TN+FP}  ,它是指是被错误地预测为正类的样本占所有实际为负类的样本的比例。TPR = \frac{TP}{TP+FN}  ,它是指被正确地预测为正类的样本占所有实际为正类的样本的比例。

举例:

某池塘有1400条鲤鱼,300只虾,300只鳖。现在以捕鲤鱼为目的,撒一大网,逮着了700条鲤鱼,200只虾,100只鳖,那么这些指标如下:
①.正确率:700/(700+200+100)=70%
②.召回率:700/1400=50%
③.F值:2*((70*50)/(70+50))=58.3%

代码

sklearn的精准和找回代码

>>> from sklearn.metrics import precision_score, recall_score
>>> precision_score(y_train_5, y_train_pred) # == 4096 / (4096 + 1522)
0.7290850836596654
>>> recall_score(y_train_5, y_train_pred) # == 4096 / (4096 + 1325)
0.7555801512636044

f1的代码

>>> from sklearn.metrics import f1_score
>>> f1_score(y_train_5, y_train_pred)
0.7420962043663375

指标对比分析

F1分数对那些具有相近的精度和召回率的分类器更为有利。

这不一定能一直符合你的期望:在某些情况下,你更关心的是精度,而另一些情况下,你可能真正关心的是召回率。

例如,假设你训练一个分类器来检测儿童可以放心观看的视频,那么你可能更青睐那种拦截了很多好视频(低召回率)​,但是保留下来的视频都是安全(高精度)的分类器,而不是召回率虽高,但是在产品中可能会出现一些非常糟糕的视频的分类器(这种情况下,你甚至可能会添加一个人工流水线来检查分类器选出来的视频)​。

反过来说,如果你训练一个分类器通过图像监控来检测小偷:你大概可以接受精度只有30%,但召回率能达到99%(当然,安保人员会收到一些错误的警报,但是几乎所有的窃贼都在劫难逃)​。遗憾的是,鱼和熊掌不可兼得,你不能同时增加精度又减少召回率,反之亦然。这称为精度/召回率权衡。

由于ROC曲线与精度/召回率(PR)曲线非常相似,因此你可能会问如何决定使用哪种曲线。有一个经验法则是,当正类非常少见或者你更关注假正类而不是假负类时,应该选择PR曲线,反之则是ROC曲线。

参考文章:

机器学习评估分类结果——精准率、召回率、F1Score_f1 score-CSDN博客

第三章.逻辑回归—正确率/召回率/F1指标,非线性逻辑回归代码_正确率 召回率-CSDN博客

蜥蜴书:机器学习实战

http://www.lryc.cn/news/469779.html

相关文章:

  • Linux -- 共享内存(2)
  • 云函数实现发送邮件,以qq邮箱为例
  • Kafka如何控制消费的位置?
  • python爬虫——Selenium的基本使用
  • 【Linux】【xmake】安装 + C/C++常用项目配置
  • Android 添加菜单开关控制Camera相机和第三方相机
  • 【Java知识】使用jacoco实现代码覆盖率测试
  • 道路车辆功能安全 ISO 26262标准(9-2)—面向汽车安全完整性等级 (ASIL) 和安全的分析
  • hutool常用方法
  • CloudSat数据产品数据下载与处理 (matlab)
  • LDR6500 一拖三快充线的定义与特点
  • Elasticsearch安装使用
  • 计算机网络的主要知识点小结
  • fastjson/jackson对getter,setter和constructor的区分
  • 认识CSS语法
  • Linux运维篇-ansible的使用
  • 【MySQL】日志
  • 2024年CentOS镜像下载地址,包括CentOS官网、国内镜像下载,超详细也
  • STL学习-顺序容器-array数组
  • Spring Boot框架下的酒店住宿登记系统
  • electron展示下载进度条
  • Spark 基础操作
  • VoLTE 微案例:VoLTE 注册失败,I-CSCF 返回 403,HSS(UAR) 返回 5001
  • 智能财务 | 数据与融合,激发企业财务数智化转型思考
  • docker 下载netcore 镜像
  • Ajax:请求 响应
  • WebForms DataList 控件深入解析
  • 【有啥问啥】DINO:一种改进的去噪锚框的端到端目标检测器
  • 自由学习记录(15)
  • Docker 部署 JDK11 图文并茂简单易懂