多标签(Multi-label)任务是分类任务的扩展版,即每个样本不再仅属于一个类别,而是可以同时属于多个类别(标签)。因此与经典的分类任务不同,多标签问题需要预测一组标签,而不是一个单一的标签。
本篇文章记录了一些经典的处理多标签(Multi-label)任务的算法。
Binary Relevance (BR)
此类方法非常直接,训练原理为:将多标签问题分解为多个独立的二分类问题,每个标签独立训练一个分类器。随后在预测时,使用每个分类器预测相应标签即可。
此类方法非常直观,将每个标签独立进行考虑,但同时也忽略了标签之间的关联性。
Classifier Chains (CC)
不同于 Binary Relevance (BR) 方法,此类算法将多个二分类器串联起来,具体来说:
-
首先制定一个 label chain,例如标签链 $A \rightarrow B\rightarrow C$;
-
随后第一个分类器 $h_A$ 只使用原始特征,训练针对标签 $A$ 的二分类模型;
-
第二个分类器 $h_B$ 则在原始特征上拼接第一个分类器的输出,训练针对标签 $B$ 的二分类模型;
-
第三个分类器 $h_C$ 则在原始特征上拼接第一个和第二个分类器的输出,训练针对标签 $C$ 的二分类模型。
在预测时,依然按照顺序预测每个标签即可。此类算法对标签顺序比较敏感,且必须串行实现,计算复杂度较高。
Label Powerset (LP)
不同于先前两类方法,LP 方法将不同的标签组合视为一个新的标签,随即将多标签任务转化为多分类任务进行处理。
举例来说,假设每个样本有两个可能的标签:$A$ 和 $B$,则标签组合和新对应的标签为:
-
$(A) \rightarrow (1)$
-
$(B) \rightarrow (2)$
-
$(A, B) \rightarrow (3)$
基于上述对应关系,即可以将多标签的数据集转化为多类别的数据集,进而使用常见的多分类算法处理此类任务即可。
此类算法考虑了标签组合之间的关系,但标签组合的数目会随标签数量指数增长,不适宜处理标签数过多的问题。
Random k-Labelsets (RAkEL) [1]
RAkEL 是对于 LP 方法的一种优化,其从所有标签中采样 $m$ 个大小为 $k$ 的标签子集,即有 $m$ 个标签子集,每个标签子集中包含 $k$ 个标签。
这 $k$ 个标签子集之间可以相交或不相交,但需要覆盖所有的标签。
针对每个标签子集训练一个 LP 模型,对于新的样本,将每个模型在其对应标签子集上的输出集成,即可得到最终的模型预测结果。
此类方法缓解了 LP 方法组合爆炸的问题,但需要选择合适的子集大小和子分类器数量。