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

多标签分类中常用指标

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()

在这里插入图片描述

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

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

相关文章

如何自定义右键弹框并实现位置自适应?

一、问题 右键显示弹框,但是靠近浏览器边缘的部分会被隐藏,需要实现弹框位置自适应 二、 问题分析 如果想要最终弹框的宽高不超过屏幕视口,就等于屏幕视口的总宽/高减去弹框打开时的起点坐标,剩下的部分大于等于弹框的宽/高&…

Jmeter如何测试需要登录的接口

首先说明本系统的登录采用的是session,但是无论是什么登录步骤都是大差不差的 1.首先要构造用户测试的数据保存到数据库 2.构造请求获取请求后的请求头(如果需要代码参照请看最后) 3.解析请求头获取需要的cookie(sessionId是放…

公司电脑监控软件:守护企业信息安全的重要防线

在当今信息化时代,企业信息安全问题日益突出,电脑监控软件作为企业信息安全的重要保障,越来越受到企业的关注和重视。本文将围绕公司电脑监控软件展开讨论,探讨其作用、优势以及如何选择合适的电脑监控软件。 首先,公司…

07 Vue3中的三元表达式

概述 三元表达式时JavaScript中比较常用的一种原生语法,能够在一行代码中实现if-else的分支逻辑。 在Vue的双大括号中,我们也可以使用三元表达式去实现一些简单的条件渲染。 基本用法 我们创建src/components/Demo07.vue,先尝试一下三元表…

【flink】状态清理策略(TTL)

flink的keyed state是有有效期(TTL)的,使用和说明在官网描述的篇幅也比较多,对于三种清理策略没有进行横向对比得很清晰。 全量快照清理(FULL_STATE_SCAN_SNAPSHOT)增量清理(INCREMENTAL_CLEANUP)rocksdb压缩清理(ROCKSDB_COMPACTION_FILTER) 注意&…

3D 纹理贴图基础知识

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 纹理贴图是创建模型时离不开的最后一块拼图。同样,…

关于“Python”的核心知识点整理大全34

目录 第13 章 外星人 13.1 回顾项目 game_functions.py 13.2 创建第一个外星人 13.2.1 创建 Alien 类 alien.py 13.2.2 创建 Alien 实例 alien_invasion.py 13.2.3 让外星人出现在屏幕上 game_functions.py 13.3 创建一群外星人 13.3.1 确定一行可容纳…

深入了解C编译管道

文章目录 引言1. 预处理阶段2. 编译阶段3. 汇编阶段4. 链接阶段5.流程图结论 引言 C编译管道是软件开发中至关重要的工具,它负责将C语言源代码转换为可执行的机器代码。理解C编译管道的工作原理有助于提高代码的可读性、可维护性,并有助于优化生成的可执…

润和软件HopeStage与亚信安全云主机深度安全防护系统完成产品兼容性互认证

近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与亚信科技(成都)有限公司(以下简称“亚信安全”)云主机深度安全防护系统完成兼容性测试。 测试结果表明,企…

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

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

前端常用的开发工具

前端常用的开发工具🔖 文章目录 前端常用的开发工具🔖1. Snipaste--截图工具2. ScreenToGif--gif图片录制3. Typora--Markdown编辑器4. notepad--文本代码编辑器5. uTools--多功能工具6. EV录屏--录屏软件7. Xmind--思维导图8. Apifox -- 接口调试9. Tor…

12.21 汇编点亮STM32MP157小灯

.text .global _start _start: 时钟使能LDR r0,0x50000A28LDR r1,[r0]ORR r1,r1,#(0x1<<4)ORR r1,r1,#(0x1<<5)ORR r1,r1,#(0x1<<1)STR r1,[r0]配置GPIO模式LDR r0,0x50006000LDR r1,[r0]BIC r1,r1,#(0x2<<20)ORR r1,r1,#(0x1<<20)BIC r1,r1,#(…