【转载】MLC(Multi-Label Classification) 多标签分类
时间:2023-02-12 19:00:00
什么是MLC?(Multi-label Classification)
MLC 多标签分类。
- 多类分类 & 多标签分类
例如:
假设有类["酸", "甜", "苦", "辣", "香"],
多类分类是 "水果点酸"(label="酸"),"这道菜看起来很香"(label="香");
多标签分类是"辣子鸡虽然味道很香,但是太辣了"(label=["辣", "香"]),"酸酸奶又酸又甜"(labe=["酸","甜"])。
可以明显发现,多类分类只有一个标签,多标签分类可以有多个标签(而且不确定)。
- 难点
(1)类标数量不确定,有些样本可能只有一个类标,有些样本可能高达几十甚至几百个类标。
(2)类标之间的相互依赖,比如包含蓝天类标的样本很有可能包含白云,如何解决类标之间的依赖性问题也是一大难题。
(3)多标签训练集难以获得。
如何解决MLC问题
目前关于多标签的学习算法很多,从解决问题的角度可以分为两类:一是基于问题转化的方法,二是基于算法适用的方法。基于问题转换的方法是转换问题数据,使用现有算法;基于算法的方法是扩展特定算法,以处理多标记数据、改进算法和应用数据。
说白了,基于问题转化的方法就是把原来的数据从另一个角度组合起来,变成原来解决的问题。
适用于算法的方法是改进现有算法,使其适合多标签。
- 基于问题转化的方法
(1) 可用于传统的机器学习模型分类器链,在这种情况下,第一个分类器只在输入数据上训练,然后每个分类器在输入空间和链上的所有以前的分类器上训练。让我们试着通过一个例子来理解这个问题。在下面给出的数据集中,我们将X作为输入空间,Y作为标签。这个问题将在分类器链中转换为四个不同的标签问题,如下图所示。黄色部分是输入空间,白色部分代表目标变量。
考虑到多标签的相关性,上一个输出标签可以作为下一个标签分类器的输入。
(2)将统一看标签(Label Powerset)
在这一点上,我们发现x1和x4有相同的标签。x3和x有相同的标签。因此,标签powerset如下所示,将此问题转化为单一的多种问题。
因此,标签powerset它为训练集中的每一个可能的标签组合提供了一个独特的类别。转换为单标签后即可使用SVM、textCNN、textRNN等分类算法训练模型。
感觉Label Powerset只适用于标签数量较少的数据,一旦标签数量过多(假设有n个),使用Label Powerset可能的数据集将分布在[0,2n-在空间中,数据会非常稀疏。
- 基于算法适用的方法
改编算法直接执行多标签分类,而不是将问题转化为不同的问题子集。
(1)传统机器学习模型中穿件的多标签分类模型有:kNN多标签版本MLkNN,SVM多标签版Rank-SVM等。
(2)在深度学习中,常修改多分类模型的输出层,使其适用于多标签分类,Mark J. Berger[4]使用输出层中每个标签的输出值sigmod函数2分类(标签之间没有相关信息);Kurata经典仍然用于研究多标签分类CNN结构(如图2所示),但最终全连接层的参数系数有些特殊,也就是图2.1中Hidden layer到output layer特别设置了系数。