多标签分类 (XML/XMLC) 概述

345 阅读7分钟

谁没有在 Stack Overflow 上寻找问题的答案?正确预测问题的标签是一个非常具有挑战性的问题,因为它涉及在数十万个可能的标签中预测大量标签。

由于三个主要挑战,传统的分类方法(例如支持向量机或决策树)无法处理如此大量的标签:

  • 内存限制导致的瓶颈
  • 存在一些示例很少的标签(尾部标签)
  • 标签通常是相关的,这使得区分不同标签变得困难

在本文中,我将简要概述极端多标签分类以及一些重要的定义。在第二部分中,我将介绍和解释 XML 算法的四大类及其一些局限性。

XMLC 概述

XMLC 模型的目标是为特定测试输入预测一组标签。然而,典型的算法不会产生二元结果,而是提供标签最合适的相关性分数。这一点很重要,因为它将问题从分类问题转移到排名问题。因此,这些算法的评估指标需要反映排名方面而不仅仅是分类。可以通过在模型提供的排名列表上应用一个简单的阈值来选择标签。

如前所述,样本和标签在极端多标签分类问题中并不是均匀分布的。例如,在 Wiki10–30K 数据集 [1] 中,只有 1% 的标签拥有超过 100 个训练样本。在没有这种尾部分布特异性的情况下训练的模型将偏向于最存在的标签。

image.png

要考虑指标中的尾部分布,应使用基于倾向的指标。这些指标类似于典型的排名指标,但它们还考虑了模型在尾部标签上的表现。这可以防止模型仅通过预测频繁标签来获得高分。例如,Precision@k指标的基于倾向的版本是:

image.png

其中p_l表示标签的倾向。因此尾部标签在度量中有一个夸大的分数。

压缩感知 XMLC 算法

这种算法背后的想法是将标签空间压缩到更小的嵌入空间中。由于原始标签空间的稀疏性,可以从嵌入标签空间中的预测中恢复原始标签。典型的压缩感知算法可以分解为三个步骤:

  • 压缩:标签空间被嵌入到一个更小的空间中。
  • 学习:学习预测压缩标签。由于嵌入空间足够小,可以使用典型的标签分类方法,例如二元相关性,它使用二元分类器预测每个元素。
  • 重建:将嵌入空间转换回原始空间

尽管由于压缩空间小,此方法允许使用典型的标签分类算法,但解决重建步骤的计算量可能很大。因此,有效的空间缩减技术是必要的。一种解决方案 [2] 是使用 SVD 方法(线性标签空间变换)来嵌入标签空间,因为它将考虑标签相关性,但提供了一个正式的框架来压缩和重建原始标签空间。

通过在压缩过程中考虑越来越多的相关性,已经开发出更先进的压缩感知算法。例如,不仅可以考虑标签-标签相关性,还可以考虑标签和特征相关性。与以前的方法(原理标签空间转换)相比,添加此类额外信息应该会改进分类。

基于线性代数的 XMLC 算法

基于线性代数的方法类似于压缩感知方法,但旨在改进它们的小改进。在本节中,我将概述基于线性代数执行极端多标签分类的最著名算法。

子集选择: 子集选择是使 XMLC 问题易于处理的最常用方法。这个想法是找到一个好的标签子集,然后对这个子集应用一个分类器,最终将预测缩小到整个数据集。要选择标签的子集,可以使用抽样程序,其中标签的概率与标签在最佳可能子集上的得分成正比。

Low-rank Decomposition: 该方法假设标签矩阵的低秩分解,然后使用风险最小化方法框架对其进行求解。对低秩假设的一个警告是,由于异常值的存在,这一假设并不总是得到验证,因为异常值可能不会跨越嵌入空间。

距离保留嵌入: 此方法的名称很简单。嵌入空间是通过保留标签之间的距离生成的。然后使用嵌入空间内的 k 最近邻方法进行预测。

Feature Agglomeration Supplement: 这种方法是原创的,因为它旨在直接降低特征空间的维度。在稀疏特征稀疏的情况下,这种方法提供了高速和最小的精度损失。特征空间缩减是通过聚合大小平衡的特征簇来执行的。这种聚类通常使用层次聚类来执行。

基于树的算法

基于树的方法旨在重复划分标签空间,以减少预测过程中的搜索空间。这个想法是将标签分类成簇以创建元标签空间。然后将每个元标签链接到多标签分类器以确定标签所属的元标签。在元标签内,由于标签数量较少,可以使用经典分类器来预测标签。

这些方法通常比嵌入方法快很多,因为树结构减少了训练和搜索时间。它们通常不会比基线方法表现得更好,但速度要快得多。此外,这些算法具有很强的可扩展性,因为元标签允许恒定的分类成本(平衡元标签)。

深度学习方法

与大多数机器学习问题一样,深度学习方法已开始用于极端标签分类。然而,由于标签的重尾意味着此类标签可用的训练数据很少,因此最近才使用此类方法。这与深度学习方法的要求形成对比。空间大,模型也要大。

然而,深度学习在内容提取方面非常有效,并提供非常有代表性的嵌入。最初,卷积神经网络用于提取嵌入,但这种方法已被淘汰,因为它已被证明不是文本嵌入的最有效方法。应用于 XML 的深度学习方法的通用框架称为DeepXML,已由 [3] 定义。

这个框架有四个模块:

  • 第一个模块的目标是获得稍后将使用的特征的中间嵌入。这可能意味着标签聚类或标签投影,以保持问题易于处理。
  • 第二个模块使用所谓的负采样。负采样从样本中选择最容易混淆的标签,这些标签应该被正面预测。这具有减少每个标签的训练时间的效果,因为我们将只训练硬样本。
  • 第三个模块使用迁移学习给出最终的特征表示。
  • 最后,最终模块对应于分类器。由于是负采样,训练量有限,易于用深度学习方法处理。

深度学习方法优于所有其他 XML 方法,例如基于树的方法。然而,这确实是以训练时间和内存空间为代价的。

从文档标记到产品推荐和广告,XML 解决了各种各样的问题。最近,在多模态极端多标签分类方面已经完成了工作[4]。XML 方法在日常产品中的如此广泛的使用要求进一步探索 XML 方法,例如深度学习方法。

参考

[1]极端分类存储库:多标签数据集和代码,  Bhatia, K. 和 Dahiya, K. 和 Jain, H. 和 Kar, P. 和 Mittal, A. 和 Prabhu, Y. 和 Varma, M., 2016.

[2]具有主标签空间变换的多标签分类。 Farbound Tai 和 Hsuan-Tien Lin。2012

[3] Deepxml:一种应用于短文本文档的深度极限多标签学习框架。 Kunal Dahiya、Deepak Saini、Anshul Mittal、Ankush Shaw、Kushal Dave、Akshay Soni、Himanshu Jain、Sumeet Agarwal 和 Manik Varma。2021年

[4]极端多标签分类回顾,  Dasgupta, A.、Katyan, S.、Das, S. 和 Kumar, P. 2023