• 论文学习记录随笔 多标签之LIFT


    原文: 分享对论文的理解. 原文见 Zhang, M.-L., & Wu, L. (2015). LIFT: Multi-label learning with label-specific features. IEEE Transactions on Pattern Analysis and Machine Intelligence, 37, 107–120.

    目录

    1.原文摘要理解

    2.基本符号

    3.LIFT方法中的算法细节

    4.LIFT的流程与预测

    简单总结


    1.原文摘要理解

    在上一篇随笔的LSML中有提到"Label-Specific Features"这样的多标签邻域, 然而当对于这样的问题进行溯源的话, 显然, 这篇张敏灵提出的LIFT是"Label-Specific Features"在多标签应用的开篇之笔.

    论文提到, 多标签学习处理的问题是每个数据集的一个数据行都是由一个单一的实例(feature vector)表示, 同时这个实例对应于某组标签. 现在的多标签算法大多采用相同的某种方案从这个单一的相同的特征数据集中进行学习. 但是作者认为这样是次优的.

    However, this popular strategy might be suboptimal as each label is supposed to possess specific characteristics of its own

    每个标签都有自己的特征, 因此采用单一的方案总是会有违背标签" Specific Features "的可能.

    而此论文就提出一种利用不同标签特点的多标签算法, 这个算法首先通过正负实例来进行聚类, 然后通过查询聚类结果来进行训练和测试.

    但是这个算法似乎过分强调了标签本身的特征性而忽略了可能的标签之间相关性, 是first-order的多标签. 这也是LIFT的痛点. 但是之后有很多算法在沿用"Label-Specific Features"的特性之余引入了标签相关性, 为此算法进行补充.

    一阶(first-order)策略: 多标签分类用一个标签一个标签的(label-by-label)方式处理,那么就忽略了其他标签的共存性,比如将多标签学习分解为若干个独立的二分类问题。一阶策略的主要价值在于概念上简单、效率高。另一方面。结果的有效性可能不是最好的

    2.基本符号

    符号维度含义
    n对象个数
    d原数据集特征向量维度
    q标签个数
    Xn×d数据矩阵
    Yn×q标签矩阵
    ϕk(x)1×2mk在标签lk的正负样本影响下构建的全新映射的特征空间, 有k[1,q]

    此外还有些表示数据集的含义的符号, 比如Bk表示依据标签lk构造的的大小为n×2mk的二分类数据集, D表示原数据集, L是二分类学习器, u表示测试数据集.

    3.LIFT方法中的算法细节

    首先选定某个标签k, 得到一个由正负样本组成的大小为l×1的标签列, 其中正样本组成集合Pk, 负样本组成集合Nk, 有:

    (1)Pk={xi(xi,Yi)D,lkYi}Nk={xi(xi,Yi)D,lkYi}
    这两个集合内部的数据很大程度上是不平衡的(|Pk||Nk|), 这是由多标签矩阵本身的不平衡决定的.

    之后分别将两个集合的进行聚类操作, 这是对于PkNk的信息进一步挖掘的途径. 

    To gain insights on the properties oPk and Nk, LIFT chooses to employ clustering techniques which have been widely used as stand-alone tools for data analysis

    原作者用的K-Means. 自然使用K-Means就必须考虑一个合适的k值, 这个选定确实是一个比较麻烦的是, 原作者采用了一种启发式的算法:

    (2)mk+=mk=rmin{|Pk|,|Nk|}
    这里的mk+代表集合Pk的K-Means的k值, mk代表集合Nk的. 这里的r是一个ratio, 是用来确定聚类的比例. 这里正负样本的聚类中心的个数(k)是相同的, 这个很好解决了类不平衡的问题.

    Multi-label learning tasks usually encounter the issue of class-imbalance [59], where the number of positive instances for each class label is much smaller than the number of negative ones, i.e. |Pk||Nk|. To mitigate potential risks brought by the class-imbalance problem, LIFT sets equivalent number of clusters for Pk and Nk, i.e. mk+=mk=mk. In this way, clustering information gained from positive instances as well as negative instances are treated with equal importance.

    于是我们可以得到2个相同数目的聚类中心集合 {p1k,p2k,,pmk+k}{n1k,n2k,,nmkk}. 每个值都代表一个d维度向量, 现在我们任意取出一个原数据集中的实例x, 可以分别求得其到这2mk个聚类中心的距离, 然后将这2mk个聚类中心构成一个全新的1×2mk的关于k的实例ϕk(x):

    (3)ϕk(x)=[d(x,p1k),,d(x,pmkk),d(x,n1k),,d(x,nmkk)]
    这种构建的性特征集就是关于标签lk的" label-specific features ", 原文修饰这个结构: " which can be served as appropriate building blocks (prototypes) for the construction of label-specific features. "

    注: 通过在网络中查询这句话的时候, 得到几个信息, 了解到这里提到的"appropriate building blocks"可能是因为在做映射的时候可以将原特征分为一个一个的"块"进行映射, 当最后一个"块"内数据量不够一个块的数量是有相关的特殊处理. (这个细节可能需要后期看代码再理解完善一下解释)

    通过这番折腾可以发现, 最终我们的n×d的矩阵X就转变为n×2mk. 同时因为我们仅仅选定了标签lk, 所以新的标签矩阵只有n×1那么大, 如此来看, 我们似乎构造出了一个二分类问题, 准确说是任意某原实例(数据行)xj关于标签lk的一个临时数据集为n×2mk的二分类问题. 

    这里论文似乎使用的SVM进行二分类学习的.

    这样全新的二分类问题中, 2mk维度相比于原本的d维度承载的信息更多了.

    因为原本的维度只有选定的任意x的每个属性特征, 但是二分类中的2mk维度的每一列都表示了原数据整体相对于某个数据中心的距离, 这种距离度量是一种典型特征. 言下之意, 将原本目光仅仅是一维的数据行扩展到能反映自身与所有特征类(聚类中心构成的集合)之间的关系(距离)的二维特征. 但是非常遗憾, 本文中的这个特征类还仅仅是关于同个标签k的特征类, 因此没办法体现标签相关性, 同时LIFT我感觉似乎也过于强调单个标签与中心标签类群的关系而忽略了标签自己的基础特征(d维信息)

    4.LIFT的流程与预测

    原文中的流程表示

    流程的输入的基本是能够理解的, 分别是训练集, 启发式确定分簇数目的r, 二分类器, 测试矩阵. 目标是对测试矩阵进行预测.

    流程中鲜明的两个for循环把LIFT分为了两个步骤:

    1. label-specific features construction
    2. classifier induction

    第一步在刚刚已经描述过了, 简单来说, 1~q遍历所有的标签, 确定每个标签lk后取出其正负样本构成两个集合PkNk, 然后在这两个集合上分别以Eq.(2)中得到的mk为聚类k值进行聚类. 然后任意取得xiD, 求这个实例到2mk个正负样本的距离, 得到ϕk(xi)={d(xi,p1k),,d(xi,p2mkk)}

    第二步, 由此第一步得到的全部ϕk资料,  于是再度通过1~q遍历所有的标签, 确定不同的ϕk资料, 再由nϕk(xi) 构造出一个二分类器Bk. 宏观来看也可以说是D基于lk构造出了一个二分类器Bk. 这个二分类器满足:

    (4)Bk={(ϕk(xi),Yi(k))(xi,Yi)D} where Yi(k)=+1 if lkYi; Otherwise, Yi(k)=1
    后续使用二分类器L训练每个数据集Bk, 例如gkL(Bk), 这个的gk是一个关于标签lk的一个完善的分类器模型, 可以用于预测. (任意标签lk对应的数据集Bk的训练也是要以n个训练集样本为依据的)

    之后任意一个测试集uX, 我们可以调用全部的q个分类器模型, 来对这个测试集的任意一个测试样本x进行预测, 当然要注意, 测试集中的每个样本要进入模型gk预测之前, 惯例地要按照聚类的流程走一套, 得到基本的ϕk资料后才能喂到模型中预测. 因此才有最终有预测输出:

    (5)Y={lkgk(ϕk(u))>0,1kq}

    (后续关于代码的运行与论文后续的Experiments与使用的metrics细节待进一步阅读论文来完善)

    简单总结

    LIFT阅读起来要比之前的LSML要轻松一些, 只能说不愧是label-specific features的开篇之作, 关于label-specific features的特点与理论说的非常明确, 是那种读了大概之后就能明白大体方向的论文. 似乎实现起来并不是那么复杂, 是那种一听就能大概了解代码构造的算法.

    LIFT挖掘了每个标签自己的特定特征, 使用了K-Means并且将多标签转换为多个二分类问题, 很大胆而且很有突破性, 虽然美中不足地仅仅完成了first-order的多标签, 但是这种嵌入 embedding思路应该是这篇文章最宝贵的地方. 作为其他论文的参考.

    最开始了解的时候我确实也担心过K-Means的效果, 但是看效果似乎启发式的r使用还是不错的. 以后有机会接触更多聚类算法后希望可以看下更多平行的效果.

  • 相关阅读:
    c++日期类的实现
    intel深度相机D455的使用
    高性能计算环境下的深度学习异构集群建设与优化实践
    Codeforces Round 894 (Div. 3) E. Kolya and Movie Theatre
    【仿牛客网笔记】 Spring Boot进阶,开发社区核心功能-统一处理异常
    持续集成与自动化测试
    Windows环境下Springboot3+Graalvm+Idea 打包成原生镜像 踩坑
    Flink DataStream API 介绍
    新品发布怎样让媒体报道宣传?企业官网如何推广比较有限?
    Stream之实现原理分析
  • 原文地址:https://blog.csdn.net/qq_30016869/article/details/125504832