针对多标签(Multi-label)任务的经典算法

前言

如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。

多标签(Multi-label)任务是分类任务的扩展版,即每个样本不再仅属于一个类别,而是可以同时属于多个类别(标签)。因此与经典的分类任务不同,多标签问题需要预测一组标签,而不是一个单一的标签。

本篇文章记录了一些经典的处理多标签(Multi-label)任务的算法。


Binary Relevance (BR)

此类方法非常直接,训练原理为:将多标签问题分解为多个独立的二分类问题,每个标签独立训练一个分类器。随后在预测时,使用每个分类器预测相应标签即可。

此类方法非常直观,将每个标签独立进行考虑,但同时也忽略了标签之间的关联性。


Classifier Chains (CC)

不同于 Binary Relevance (BR) 方法,此类算法将多个二分类器串联起来,具体来说:

  • 首先制定一个 label chain,例如标签链 A → B → C A \rightarrow B\rightarrow C ABC
  • 随后第一个分类器 h A h_A hA 只使用原始特征,训练针对标签 A A A 的二分类模型;
  • 第二个分类器 h B h_B hB 则在原始特征上拼接第一个分类器的输出,训练针对标签 B B B 的二分类模型;
  • 第三个分类器 h C h_C hC 则在原始特征上拼接第一个和第二个分类器的输出,训练针对标签 C C C 的二分类模型。

在预测时,依然按照顺序预测每个标签即可。此类算法对标签顺序比较敏感,且必须串行实现,计算复杂度较高。


Label Powerset (LP)

不同于先前两类方法,LP 方法将不同的标签组合视为一个新的标签,随即将多标签任务转化为多分类任务进行处理。

举例来说,假设每个样本有两个可能的标签: A A A B B B,则标签组合和新对应的标签为:

  • ( A ) → ( 1 ) (A) \rightarrow (1) (A)(1)
  • ( B ) → ( 2 ) (B) \rightarrow (2) (B)(2)
  • ( A , B ) → ( 3 ) (A, B) \rightarrow (3) (A,B)(3)

基于上述对应关系,即可以将多标签的数据集转化为多类别的数据集,进而使用常见的多分类算法处理此类任务即可。

此类算法考虑了标签组合之间的关系,但标签组合的数目会随标签数量指数增长,不适宜处理标签数过多的问题。


Random k-Labelsets (RAkEL) [1]

RAkEL 是对于 LP 方法的一种优化,其从所有标签中采样 m m m 个大小为 k k k 的标签子集,即有 m m m 个标签子集,每个标签子集中包含 k k k 个标签。

k k k 个标签子集之间可以相交或不相交,但需要覆盖所有的标签。

针对每个标签子集训练一个 LP 模型,对于新的样本,将每个模型在其对应标签子集上的输出集成,即可得到最终的模型预测结果。

此类方法缓解了 LP 方法组合爆炸的问题,但需要选择合适的子集大小和子分类器数量。


参考文献

  1. TKDE23 - Random k-labelsets for multilabel classification.

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

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

相关文章

MySQL是怎么保证原子性的(undo log日志相关)

MySQL是怎么保证原子性的? 事务的原子性就是:一个事物要么全部执行成功,要么全部执行失败。MySQL 主要是利用 undo log,也就是回滚日志来实现原子性。 平常我们在对数据进行增删改时,InnoDB 除了会记录 redo log&…

【python】Modulenotfounderror: no module named ‘open_clip’

成功解决“ModuleNotFoundError: No module named ‘open_clip’”错误的全面指南 在Python编程中,如果你遇到了“ModuleNotFoundError: No module named ‘open_clip’”这个错误,它意味着你的Python环境中没有安装名为open_clip的模块,或者…

grep、sed、awk

grep:文本过滤工具 sed: 文本编辑工具 awk: 格式化文本 grep -n 显示行号 -i 忽略大小写 -v 取反 -o 只保留关键消息 # 找出文件的空行 grep ^$ test.txt -n # 找出文件非空行内容 grep ^$ test.txt -n -v # 找出文件非空行内容,并且排除注释&#xff…

8个免费下载音乐的网站,建议收藏!

1、My Free MP3 tools.liumingye.cn/music/ 一个好用且免费的在线音乐播放和下载网站,几乎收录了所有国内外大火的歌手和歌曲,可以通过歌手列表找单曲,也可以直接搜索歌手或歌曲名,下面还有一些热门搜索,可以直接播放…

频率域,空间域以及频率域和空间域如何获取

文章目录 频率域频率域的关键概念:频率域的应用: 空间域空间域特征的含义:空间域操作的常见技术:与频率域的对比: 如何获取空间域,频率域空间域特征:频率域特征: 频率域 频率域&…

每天学习一个Windows命令或Linux命令——seq

今天我们来学习 seq命令! seq命令(单词sequence序列的缩写)是Linux系统中用于输出序列化的一串整数的命令。 一、seq用法 seq用法一共有以下三种: seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量&#…

数字证书-证书分类

SSL证书类型 数字证书DV证书、OV证书和EV证书三种类型的SSL证书。不同类型证书的安全性、支持的证书品牌和适用的网站类型不同,具体如下表所示 证书类型适用网站类型等级认证强度支持的证书品牌DV(域名型)个人网站一般CA机构审核个人网站真…

Windows下SVN文件损坏,启动服务报错1067

之前碰到过一次,忘记最后怎么解决的了,只记得大概原理和原因,以及解决办法。 1067错误码,很多地方都会碰到,mysql也会有,看来应该是windows系统的错误码。跟具体程序无关。所以直接百度“SVN”、“1067”…

HarmonyOS App开发造轮子--自定义圆形图片

思路: 1、对比之前自己在其他程序开发中自定义组件的思路,首先寻找父组件Image和Component相关的Api,看看是否具备OnDraw方法。 2、了解Canvas相关Api操作,特别是涉及到位图的操作。 通过翻阅大量资料,发现了两个关…

不是,有了这套IP地址管理开源系统谁还用Excel啊

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 中午好,我的网工朋友。 作为网工的我们想必都很清楚IP地址管理的重要性以及其复杂性,传统的Excel表格虽然在某些情况下能…

基于STM32开发的智能农业灌溉控制系统

目录 引言环境准备智能农业灌溉控制系统基础代码实现:实现智能农业灌溉控制系统 4.1 土壤湿度传感器数据读取4.2 水泵控制4.3 环境监测与数据记录4.4 用户界面与多功能显示应用场景:农业灌溉与环境监测问题解决方案与优化收尾与总结 1. 引言 随着农业…

html写一个table表

HTML代码&#xff1a; <div class"table_box w-full"><div class"title_top">XX表</div><div class"title_btm">(<input class"input input_1" type"text">xxxx)</div><table class…

【Linux】内存级文件

目录 C语言关于文件操作的函数 Linux关于文件操作的系统调用 完善myshell C语言缓冲区 其实我们在C语言就学过文件操作&#xff0c;但是从语言的角度&#xff0c;我们只是说会用了关于文件的一些操作和函数&#xff0c;但其实它究竟是怎么回事我们其实并不明白&#xff0c;…

大模型日报2024-06-05

大模型日报 2024-06-05 大模型资讯 AI气象预测取得重大进展&#xff1a;单台桌面电脑即可运行全球天气模型 摘要: 一项新的人工智能天气预测模型已经取得重大进展&#xff0c;该模型能够在一台普通的桌面电脑上运行&#xff0c;预测全球天气。这意味着即使没有复杂的物理计算&a…

2024-5-19——找出数组游戏的赢家

2024-5-19 题目来源我的题解方法一 纯模拟方法二 一次遍历 题目来源 力扣每日一题&#xff1b;题序&#xff1a;1535 我的题解 方法一 纯模拟 排除一种情况&#xff1a;当k>n-1时&#xff0c;至少会遍历数组一遍&#xff0c;实质就是求数组的最大值。 其余的情况使用List…

对象格式的数据表单循环校验

首先我们的代码数据是这样的&#xff08;直接和后台对应&#xff09; ruleForm: { roadList: {vehicle: {name:"机动车",width: 0,length:0,area:0},notVehicle: {name:"非机动车",width: 0,length:0,area:0},walk: {name:"人行道",width: 0,len…

rust学习(字节数组转string)

最新在写数据传输相关的操作&#xff0c;发现string一个有趣的现象&#xff0c;代码如下&#xff1a; fn main() {let mut data:[u8;32] [0;32];data[0] a as u8;let my_str1 String::from_utf8_lossy(&data);let my_str my_str1.trim();println!("my_str len is…

STM32实验之USART串口发送+接受数据(二进制/HEX/文本)

涉及三个实验&#xff1a; 1.USART串口发送和接收数据 我们使用的是将串口封装成为一个Serial.c模块.其中包含了 void Serial_Init(void);//串口初始化 void Serial_SendByte(uint8_t Byte);//串口发送一个字节 void Serial_SendArray(uint8_t *Array,uint16_t Length);//…

fun()const->Iterator

先看一个函数定义如下&#xff1a; template <typename T> auto Blocker<T>::ObservedEnd() const -> Iterator {return observed_msg_queue_.end(); } 1 迭代器&#xff1a;Iterator 2 C auto 返回类型推导&#xff1a;-> Iterator 3 函数体限定不能修改…

【C语言】详解函数(上)(庖丁解牛版)

文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块&#xff…