多标签分类中常用指标和可视化例子

多标签分类中常用指标

1. 准确率(Accuracy)

准确率计算的是正确预测的标签比例。对于多标签分类,这通常是一个较为严格的指标,因为要求每个实例的所有标签都预测正确。

Accuracy = 正确预测的标签数 总标签数 \text{Accuracy} = \frac{\text{正确预测的标签数}}{\text{总标签数}} Accuracy=总标签数正确预测的标签数

2. 精确度(Precision)

对于每个标签,精确度计算为:

Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP

其中,TP(True Positives)是正确预测的正样本数,FP(False Positives)是错误预测的正样本数。对于多标签分类,通常对每个标签计算精确度,然后取平均值。

3. 召回率(Recall)

对于每个标签,召回率计算为:

Recall = TP TP + FN \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Recall=TP+FNTP

其中,FN(False Negatives)是未能正确预测的正样本数。和精确度一样,通常对每个标签单独计算召回率。

4. F1 分数(F1 Score)

对于每个标签,F1 分数是精确度和召回率的调和平均:

F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall

对于多标签分类,可以计算宏观(平均每个标签的F1分数)或微观F1分数(在所有标签上累积TP、FP、FN后计算)。

5. 汉明损失(Hamming Loss)

汉明损失反映了预测错误的标签比例:

Hamming Loss = 错误预测的标签数 总标签数 \text{Hamming Loss} = \frac{\text{错误预测的标签数}}{\text{总标签数}} Hamming Loss=总标签数错误预测的标签数

6. 子集准确率(Subset Accuracy)

这是一个非常严格的指标,要求预测的每个标签集合完全匹配真实标签集合:

Subset Accuracy = 完全匹配的样本数 总样本数 \text{Subset Accuracy} = \frac{\text{完全匹配的样本数}}{\text{总样本数}} Subset Accuracy=总样本数完全匹配的样本数

7. ROC 和 AUC

  • ROC 曲线:真正类率(TPR)对假正类率(FPR)的图形表示。
  • AUC 值:ROC 曲线下的面积。

在多标签设置中,这些指标通常是对每个标签单独计算然后取平均值。

宏观评价指标(Macro Metrics)

宏观指标是对每个标签分别计算指标值,然后取所有标签指标值的平均。对于精确度、召回率和F1分数,其宏观计算公式如下:

  1. 宏观精确度(Macro Precision)
    M a c r o   P r e c i s i o n = 1 N ∑ i = 1 N P r e c i s i o n i Macro\ Precision = \frac{1}{N} \sum_{i=1}^{N} Precision_i Macro Precision=N1i=1NPrecisioni
    其中,Precision_i 是第 i 个标签的精确度,N 是标签的总数。

  2. 宏观召回率(Macro Recall)
    M a c r o   R e c a l l = 1 N ∑ i = 1 N R e c a l l i Macro\ Recall = \frac{1}{N} \sum_{i=1}^{N} Recall_i Macro Recall=N1i=1NRecalli

  3. 宏观 F1 分数(Macro F1 Score)
    M a c r o   F 1 = 1 N ∑ i = 1 N F 1 i Macro\ F1 = \frac{1}{N} \sum_{i=1}^{N} F1_i Macro F1=N1i=1NF1i

微观评价指标(Micro Metrics)

微观指标是在所有标签的汇总数据上计算指标值。对于精确度、召回率和F1分数,其微观计算公式如下:

  1. 微观精确度(Micro Precision)
    M i c r o   P r e c i s i o n = ∑ i = 1 N T P i ∑ i = 1 N ( T P i + F P i ) Micro\ Precision = \frac{\sum_{i=1}^{N} TP_i}{\sum_{i=1}^{N} (TP_i + FP_i)} Micro Precision=i=1N(TPi+FPi)i=1NTPi
    其中, T P i TP_i TPi F P i FP_i FPi分别是第 i i i个标签的真正例和假正例数。

  2. 微观召回率(Micro Recall)
    M i c r o   R e c a l l = ∑ i = 1 N T P i ∑ i = 1 N ( T P i + F N i ) Micro\ Recall = \frac{\sum_{i=1}^{N} TP_i}{\sum_{i=1}^{N} (TP_i + FN_i)} Micro Recall=i=1N(TPi+FNi)i=1NTPi

  3. 微观 F1 分数(Micro F1 Score)
    M i c r o   F 1 = 2 × M i c r o   P r e c i s i o n × M i c r o   R e c a l l M i c r o   P r e c i s i o n + M i c r o   R e c a l l Micro\ F1 = 2 \times \frac{Micro\ Precision \times Micro\ Recall}{Micro\ Precision + Micro\ Recall} Micro F1=2×Micro Precision+Micro RecallMicro Precision×Micro Recall

在多标签分类中,选择宏观还是微观指标取决于你的具体需求和数据的特性。例如,如果你希望每个标签都同等重要,可以选择宏观指标。如果你的数据集中某些标签的样本数远多于其他标签,使用微观指标可能更合适。

简单可视化

import matplotlib.pyplot as plt
import numpy as np

# 假设 x 轴有 8 个epcohs
epochs = np.arange(1, 9)

# 数据
micro_f1_values = {
    'w/o ATM, w/o APP': np.array([0.52, 0.54, 0.56, 0.58, 0.60, 0.61, 0.62, 0.63]),
    'w/ ATM, w/o APP': np.array([0.53, 0.55, 0.57, 0.59, 0.61, 0.62, 0.63, 0.64]),
    'w/o ATM, w/ APP': np.array([0.54, 0.56, 0.58, 0.59, 0.61, 0.64, 0.63, 0.65]),
    'w/ ATM, w/ APP': np.array([0.55, 0.57, 0.58, 0.56, 0.62, 0.63, 0.64, 0.66]),
}

# 设置不同的标记和颜色
markers = ['o', '^', '*', 's'] 
colors = ['black', 'blue', 'orange', 'red'] 

# 使用不同的标记和颜色绘制数据
plt.figure(figsize=(10, 6))
for (label, values), marker, color in zip(micro_f1_values.items(), markers, colors):
    plt.plot(epochs, values, marker=marker, color=color, linestyle='-', label=label)

# 添加标题和标签
plt.title('Micro-F1 Score over Epochs')
plt.xlabel('Train (num of epochs)')
plt.ylabel('Micro-F1')

# 添加网格和图例
plt.grid(True)
plt.legend()

# 显示
plt.show()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt前端技术:5.QSS

这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类,QPushB…

3. 结构型模式 - 组合模式

亦称: 对象树、Object Tree、Composite 意图 组合模式是一种结构型设计模式, 你可以使用它将对象组合成树状结构, 并且能像使用独立对象一样使用它们 问题 如果应用的核心模型能用树状结构表示, 在应用中使用组合模式才有价值。 …

基于JavaWeb的个人健康信息管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本个人健康信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…

laravel 对接支付,本地穿透问题

本地穿透有好多工具,参考链接:https://zhuanlan.zhihu.com/p/339923535 我这边是用的 NATAPP 官网:https://natapp.cn/ 客户端下载:https://natapp.cn/# NATAPP1分钟快速新手图文教程:https://natapp.cn/article/n…

打造完美有声书体验,Audiobook Builder for Mac助您一键生成

在快节奏的生活中,有声书成为越来越多人追求放松与娱乐的方式。然而,找到合适的有声书却不容易,而Audiobook Builder for Mac正是为解决这个问题而诞生的完美解决方案。 Audiobook Builder for Mac是一款专业的有声书生成工具,它…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)ChannelMap 模块的实现

(三)ChannelMap 模块的实现 这个模块其实就是为Channel来服务的,前面讲了Channel这个结构体里边它封装了文件描述符。假如说我们得到了某一个文件描述符,需要基于这个文件描述符进行它对应的事件处理,那怎么办呢&…

【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)

深度解析OAuth2.0协议的原理和流程框架实现指南 背景介绍OAuth1.0协议访问令牌案例分析 OAuth2.0OAuth2.0与OAuth1.0 OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题协议流程 认证授权类型授权码…

Spring中你应该要知道的initMethod

文章目录 功能源码 功能 之前的文章中由解析过PostConstruct/PreDestroy,他们也是initMethod的一种形式,注解方式是后来才加入的,在源码中他们的命名都是一样的名字,都叫initMethod,不过他们却是有着很大的差别&#…

Java期末复习题之GUI

点击返回标题->23年Java期末复习-CSDN博客 第1题. 一、利用Swing包创建一个窗口,窗口位置为(220,160)、大小为320240,并在窗口(20,80)、(120,80)、(220,80)处各设置一个按钮,按钮大小为80 X 40。 点击左按钮将窗口背景的红色分量增加10&am…

C++哈希表的实现

C哈希表的实现 一.unordered系列容器的介绍二.哈希介绍1.哈希概念2.哈希函数的常见设计3.哈希冲突4.哈希函数的设计原则 三.解决哈希冲突1.闭散列(开放定址法)1.线性探测1.动图演示2.注意事项3.代码的注意事项4.代码实现 2.开散列(哈希桶,拉链法)1.概念2.动图演示3.增容问题1.拉…

互联网+建筑工地源码,基于微服务+Java+Spring Cloud +Vue+UniApp开发

一、智慧工地概念 智慧工地就是互联网建筑工地,是将互联网的理念和技术引入建筑工地,然后以物联网、移动互联网技术为基础,充分应用BIM、大数据、人工智能、移动通讯、云计算、物联网等信息技术,通过人机交互、感知、决策、执行和…

【YOLOV8预测篇】使用Ultralytics YOLO进行检测、分割、姿态估计和分类实践

目录 一 安装Ultralytics 二 使用预训练的YOLOv8n检测模型 三 使用预训练的YOLOv8n-seg分割模型 四 使用预训练的YOLOv8n-pose姿态模型 五 使用预训练的YOLOv8n-cls分类模型 <

序列化和反序列化对比分析,序列化和反序列化输出十个学生信息截图

序列化和反序列化是数据处理中的两个相对的概念&#xff0c;通常用于对象的存储和传输。下面是对这两个过程的对比分析&#xff1a; 序列化&#xff08;Serialization&#xff09; 定义 目的&#xff1a; 将对象的状态信息转换成可以存储或传输的形式&#xff08;如XML, JSO…

算数平均数、调和平均数、几何平均数的计算方法与应用场合

一 定义 1、算数平均数&#xff1a;又称均值&#xff0c;是统计学中最基本&#xff0c;最常用的一种平均指标&#xff0c;分为简单算术平均数、加权算术平均数。 2、调和平均数&#xff1a;又称倒数平均数&#xff0c;是总体各统计变量倒数的算数平均数的倒数。分为数学调和平…

Yolov5水果分类识别+pyqt交互式界面

Yolov5 Fruits Detector Yolov5 是一种先进的目标检测算法&#xff0c;可以应用于水果分类识别任务。结合 PyQT 框架&#xff0c;可以创建一个交互式界面&#xff0c;使用户能够方便地上传图片并获取水果分类结果。以下将详细阐述 Yolov5 水果分类识别和 PyQT 交互式界面的实现…

什么是网络工程师? 就业前景好吗?

互联网发展日渐成熟&#xff0c;所有企业都依赖于网络管理&#xff0c;有企业的地方就需要网络工程师。 在一般人的概念里&#xff0c;网络工程师不过就是通过拨号上网&#xff0c;发个Email&#xff0c;聊聊天&#xff0c;计算机组装与维护&#xff0c;组建局域网就以为是网络…

Node.js安装部署

Node.js安装部署 在 Windows 上安装 Node.js1.使用安装程序2.使用包管理器 Chocolatey 安装 在 macOS 上安装 Node.js1.使用 Homebrew 安装 在 Linux 上安装 Node.js1.使用包管理器安装2.使用 Node.js 官方二进制包 安装完成验证 Node.js 是一个基于 Chrome V8 引擎的 JavaScri…

threejs中修改鼠标cursor不生效的问题修复

需求&#xff1a; 当鼠标hover一个元素时&#xff0c;cursor为自定义的图标 问题描述&#xff1a; threejs中修改canvas的鼠标cursor为自定义的图标不生效。 问题原因&#xff1a; 引入了dragcontrols&#xff0c;查看dragControls的代码&#xff0c;可以看到代码中有对cur…

XPM_CDC_PULSE

MACRO_GROUP: XPM MACRO_SUBGROUP: XPM_CDC 1、Introduction 此宏将源时钟域中的脉冲同步到目标时钟域。源时钟域中任何大小的脉冲&#xff0c;如果正确启动&#xff0c;将生成单个目标时钟周期大小的脉冲。 为了正确操作&#xff0c;输入数据必须由目标时钟采样两次或…

饥荒Mod 开发(二一):超大便携背包,超大物品栏,永久保鲜

饥荒Mod 开发(二十)&#xff1a;显示打怪伤害值 源码 游戏中的物品栏容量实在太小了&#xff0c;虽然可以放在箱子里面但是真的很不方便&#xff0c;外出一趟不容易看到东西都不能捡。实在是虐心。 游戏中的食物还有变质机制&#xff0c;时间长了就不能吃了&#xff0c;玩这个游…