前言
如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
多标签(Multi-label)任务是分类任务的扩展版,即每个样本不再仅属于一个类别,而是可以同时属于多个类别(标签)。因此与经典的分类任务不同,多标签问题需要预测一组标签,而不是一个单一的标签。
本篇文章记录了一些经典的处理多标签(Multi-label)任务的算法。
Binary Relevance (BR)
此类方法非常直接,训练原理为:将多标签问题分解为多个独立的二分类问题,每个标签独立训练一个分类器。随后在预测时,使用每个分类器预测相应标签即可。
此类方法非常直观,将每个标签独立进行考虑,但同时也忽略了标签之间的关联性。
Classifier Chains (CC)
不同于 Binary Relevance (BR) 方法,此类算法将多个二分类器串联起来,具体来说:
- 首先制定一个 label chain,例如标签链 A → B → C A \rightarrow B\rightarrow C A→B→C;
- 随后第一个分类器 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 方法组合爆炸的问题,但需要选择合适的子集大小和子分类器数量。
参考文献
- TKDE23 - Random k-labelsets for multilabel classification.