多标签分类_分类问题多标签(multilabel)、多类别(multiclass)

大致上,解决multilabel的方法有两种

大致上,解决multilabel的方法有两种

1)转化问题。把问题转化为一个或多个单目标分类问题,或是回归问题。

2)算法适应。修改学习算法使得能直接处理multilabel的数据。

521c11ec7311b7ddebbbc2a9d8e12f0f.png

a736bd5b1737c58fa9bdec3ac915ca7b.png

a48aa850fb88bb4c28af7e2347fa98f3.png

结论是PT3效果很好,PT4较好也应用比较广泛,PT6由于数据不平衡(如果标签密度太小会导致大量的-1)。

另外,以下几个问题是需要关注和进一步研究的

  • Dimensionality Reduction 降维

  • Label Dependence 标注依赖

  • Active learning 主动学习

  • Multi-instance multi-label learning (MIML) 多实例多标签

  • Multi-view learning. 多视角

  • Multi-task learning (MTL) 多任务

  • Hierarchical multi-label classification (HMC) 多层多标签

  1、multilabel classification的用途

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

  2. 单标签分类

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

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

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

    用58c8f8e6678312365b2736b1e59e728d.png代表样本空间,e28c2bdb3e1c77506a9c9f1124516ab5.png=5d486166e9cf08f6ced7a78acc80f048.png 为有限标签集合, 我们假设58c8f8e6678312365b2736b1e59e728d.png中的样本实例201a0b91f985409ca7d4cb59b4f68e88.pnge28c2bdb3e1c77506a9c9f1124516ab5.png的一个子集284164dd67e5b732e8737b71ba0ead3e.png相关,这个子集称作相关标签集。同时补集02bca7e15af31c8cf53127ff392cab65.png被认为与x不相关。相关标签集L用向量0e8143fae751c1b10cbc720973f17176.png标识,其中eec0f16d4124dd46d358e8e036990ca7.png。用c831bc1d4bdc3f2c42da3fcc1b10eb0f.png表示可能的标签集。

      一个多标签分类器h是一个映射a2847026d29b1b4c626da5659350f83a.png,对每一个实例201a0b91f985409ca7d4cb59b4f68e88.png分配一个分配一个标签子集。因此分类器h的输出是一个向量98d453cad295014d62b5e65fd1731eac.png

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

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

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

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

  5. 多标签分类的方法

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

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

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

6. 评价标准

       令D表示多标签评价数据集,有|D|个多标签样本2e6e2bf66e60e40ed39818d6208c31a5.png。令H为一个多标签分类器,令17e73751bb88f4b803c20482edd52e7a.png为有H基于2ec11d2a15c6144f057dce7a533fd01d.png的预测结果集。

     下面是几个评价标准

      cccea4700dbbf0f1a73e69807e2f580c.png

         b1707fb0e525cd519af839f51395ae0d.png

           f28e5dbfa1cd5ce2b51aa8d33c1f178f.png

   7、 一点感悟

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

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

  8.  其它

       F-measure能比较好的平衡分类器对不同类别实例不同时在不同类上的表现,因此更适合于不平衡的数据。对一个m维二元标签向量 0e8143fae751c1b10cbc720973f17176.png,对给定的预测98d453cad295014d62b5e65fd1731eac.png,F-measure定义为:

fa9724501cf1a89f49a4e0837c8b0e1b.png其中由定义,0/0=1

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

fa9724501cf1a89f49a4e0837c8b0e1b.png

scikit-learn介绍

多类分类(Multiclass classification): 表示分类任务中有多个类别, 比如对一堆水果图片分类, 它们可能是橘子、苹果、梨等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个水果可以是苹果或者梨, 但是同时不可能是两者

多标签分类(Multilabel classification): 给每个样本一系列的目标标签. 可以想象成一个数据点的各属性不是相互排斥的(一个水果既是苹果又是梨就是相互排斥的), 比如一个文档相关的话题. 一个文本可能被同时认为是宗教、政治、金融或者教育相关话题.

多输出回归(Multioutput classification): 给每个样本一系列的目标值. 可以被想象成对每个数据点预测多个属性, 比如在某个定位的风向和风速

多输出-多分类分类(Multioutput-multiclass classification) 和 多任务分类(Multi-task classification):意味着一个单一的评估器需要处理多个联合分类任务. 这是多标签分类任务(只考虑二院分类)和多类分类任务的推广, 输出格式是2d阵列.

  • 每一个输出变量的标签机可以是不同的. 比如一个样本的第一输出变量可以是有限类别中是pear的概率值, 第二个输出变量可能是有限颜色中是blue或者green的概率.

  • 这意味着任意的支持多输出多类或者多任务分类任务的分类器, 均支持作为一种特殊情况的多标签分类任务. 多任务分类与多输出分类任务相似, 但是有不同的模型公式.

维基介绍

在机器学习中, 多标签分类(multi-label classification) 和与其极度相关的多输出分类(multi-output classification)是分类问题的变种, 每个实例可能会设置多个标签

多标签分类(Multi-label classification)

  • 概念
    多标签分类是多类分类的一般化, 多类分类是将实例精确分类到一个或者多个类别中的单一标签问题, 在多标签问题中, 没有限制说一个实例可以被设置多少个类别.
    正规点讲就是, 多标签分类是找到一个模型将输入

映射到二值向量

  • 中.可以将多标签问题转化成一系列的二元分类问题, 然后可以使用多个单标签分类器进行处理.

  • 多标签分类采用的算法

  1. boostingAdaBoost.MHAdaBoost.MRAdaBoost的多标签数据扩展版本

  2. k近邻:ML-kNN是将k-NN分类器扩展到多标签数据

  3. 决策树

  4. 向量输出的核方法

  5. 神经网络:BP-MLL是反向传播算法的多标签学习问题的扩展

多类分类(Multiclass classification)

  • 概念
    在机器学习中, 多类(multiclass)或者多项式(multinomial)分类是将实例分配给一个而非多于两个类别的种类(将实例分类给两类中的一个称为二元分类binary classification). 很多分类算法自身支持多于两类的使用, 剩下的就是二元分类算法了, 这就可以通过很多策略去转换成多项式分类器.
    要将多类分类与多标签分类区分开, 后者是一个类别有多个标签需要被预测

  • 多类分类采用的算法

    • 神经网络: 多层感知器就是多类问题的扩展,输出N个二值神经元就可以编程多类任务

    • 极限学习机(Extreme Learning Machines (ELM))

    • k近邻: 最古老的非参数分类算法

    • 朴素贝叶斯

    • 决策树

    • 支持向量机

    • 一对多(one -vs.- rest)

    • 一对一(one -vs.- one)

  1. 二元分类问题转化

  2. 二元问题的扩展

  3. 层级分类
    将多类分类问题的输出空间分割为一个树. 每个父节点被多个子节点分割, 重复这个过程直到每个子节点仅仅代表一类.


版权声明:本文为weixin_31359991原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>