多标签分类(multilabel classification )

2022-11-15 18:08:53 浏览数 (2)

这几天看了几篇相关的文章, 写篇文章总结一下,就像个小综述一样, 文章会很乱

1、multilabel classification的用途

多标签分类问题很常见, 比如一部电影可以同时被分为动作片和犯罪片, 一则新闻可以同时属于政治和法律,还有生物学中的基因功能预测问题, 场景识别问题,疾病诊断等。

2. 单标签分类

在传统的单标签分类中,训练集中的每一个样本只有一个相关的标签 l ,这个标签来自于一个不重合的标签集合L,|L| > 1.当|L|=2 时,这就是一个二分类问题,或文本和网页数据的过滤(filtering)问题。当|L| > 2 时是多分类问题。

3、多标签分类问题的定义

简单的说就是同一个实例,可以有多个标签, 或者被分为多个类。和多分类的区别是, 多分类中每个实例只有一个标签。下面是几个形式化的定义。

代表样本空间,

=

为有限标签集合, 我们假设

中的样本实例

的一个子集

相关,这个子集称作相关标签集。同时补集

被认为与x不相关。相关标签集L用向量

标识,其中

。用

表示可能的标签集。

一个多标签分类器h是一个映射

,对每一个实例

分配一个分配一个标签子集。因此分类器h的输出是一个向量

4、与多标签分类相关/相似的问题

一个同属于监督学习并和多标签分类很相关的问题就是排序问题(ranking)。排序任务是对一个标签集排序,使得排在前面的标签与相应实例更相关。

在特定分类问题中,标签属于一个层次结构(hierarchical structure)。当数据集标签属于一个层次结构的时候,我们这个任务为层次分类,如果一个样本与层次结构的多个节点相关, 那么这个任务就被称为层次多标签分类。

多实例学习(multiple-instance learning)是监督学习的一个变种,用的比较少 ,就不说了。

5. 多标签分类的方法

方法基本上分为两种,一种是将问题转化为传统的分类问题,二是调整现有的算法来适应多标签的分类

常用的转化方法有好几种,比如对每个实例确定或随机的分配一个标签,或只保留只有一个标签的训练样本,然后用传统的多分类方法去训练。这种方法会导致训练样本的损失,所以不推荐使用。还可以将训练样本按每个标签构造一个训练集,每个样本属于或不属于这个标签,对每个标签单独训练一个分类器,然后将多个分类器的结果合成。还有将每个多标签单独看做一个新标签,在一个更多的标签集上做多分类。当多标签样本比较少时,这个方法就比较受限。还有对每个有多个标签的样本,复制该样本,每个样本具有不同的标签,加入训练集后使用覆盖(coverage based)分类法。

调整的算法也比较多,比如通过调整boost kNN SVM等实现多分类,这些调整通常也会用到上面的转换。其中调整kNN实现的多标签分类可以加入先验概率,并能对输出标签排序。基于SVM的算法中,有人在训练集中加入了|L|个二分类的训练结果,然后再进行一次分类,这个方法考虑到了不同标签之间的依赖,也是应用栈(Stacking 多个分类器的叠加)的一个特殊情况。还有人利用了相关规则挖掘的方法。

6. 评价标准

令D表示多标签评价数据集,有|D|个多标签样本

。令H为一个多标签分类器,令

为有H基于

的预测结果集。

下面是几个评价标准

7、 一点感悟

多标签学习,还有层次结构学习等,多个标签之间一般不是独立(independent)的,所以好的算法要利用标签之间的依赖

算法训练的时候要么降低cost function 要么学习贝叶斯概率,两种方法本质一样,但表现形式不一样

8. 其它

F-measure能比较好的平衡分类器对不同类别实例不同时在不同类上的表现,因此更适合于不平衡的数据。对一个m维二元标签向量

,对给定的预测

,F-measure定义为:

其中由定义,0/0=1

F-measure对应于精度和召回的调和平均。

对于最大化F-measure的方法,为了简化问题一般都基于一些假设, 有人用两个循环给出了精确解

就说这么多吧,不想写了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/226733.html原文链接:https://javaforall.cn

0 人点赞