原文: 分享对论文的理解. 原文见 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.
目录
在上一篇随笔的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)方式处理,那么就忽略了其他标签的共存性,比如将多标签学习分解为若干个独立的二分类问题。一阶策略的主要价值在于概念上简单、效率高。另一方面。结果的有效性可能不是最好的
| 符号 | 维度 | 含义 |
| 对象个数 | ||
| 原数据集特征向量维度 | ||
| 标签个数 | ||
| 数据矩阵 | ||
| 标签矩阵 | ||
| 在标签的正负样本影响下构建的全新映射的特征空间, 有 |
此外还有些表示数据集的含义的符号, 比如表示依据标签构造的的大小为的二分类数据集, 表示原数据集, 是二分类学习器, 表示测试数据集.
首先选定某个标签, 得到一个由正负样本组成的大小为的标签列, 其中正样本组成集合, 负样本组成集合, 有:
之后分别将两个集合的进行聚类操作, 这是对于与的信息进一步挖掘的途径.
To gain insights on the properties o and , LIFT chooses to employ clustering techniques which have been widely used as stand-alone tools for data analysis
原作者用的K-Means. 自然使用K-Means就必须考虑一个合适的值, 这个选定确实是一个比较麻烦的是, 原作者采用了一种启发式的算法:
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. . To mitigate potential risks brought by the class-imbalance problem, LIFT sets equivalent number of clusters for and , i.e. . In this way, clustering information gained from positive instances as well as negative instances are treated with equal importance.
于是我们可以得到2个相同数目的聚类中心集合 与. 每个值都代表一个维度向量, 现在我们任意取出一个原数据集中的实例, 可以分别求得其到这个聚类中心的距离, 然后将这个聚类中心构成一个全新的的关于的实例:
注: 通过在网络中查询这句话的时候, 得到几个信息, 了解到这里提到的"appropriate building blocks"可能是因为在做映射的时候可以将原特征分为一个一个的"块"进行映射, 当最后一个"块"内数据量不够一个块的数量是有相关的特殊处理. (这个细节可能需要后期看代码再理解完善一下解释)
通过这番折腾可以发现, 最终我们的的矩阵就转变为. 同时因为我们仅仅选定了标签, 所以新的标签矩阵只有那么大, 如此来看, 我们似乎构造出了一个二分类问题, 准确说是任意某原实例(数据行)关于标签的一个临时数据集为的二分类问题.
这里论文似乎使用的SVM进行二分类学习的.
这样全新的二分类问题中, 2维度相比于原本的维度承载的信息更多了.
因为原本的维度只有选定的任意的每个属性特征, 但是二分类中的2维度的每一列都表示了原数据整体相对于某个数据中心的距离, 这种距离度量是一种典型特征. 言下之意, 将原本目光仅仅是一维的数据行扩展到能反映自身与所有特征类(聚类中心构成的集合)之间的关系(距离)的二维特征. 但是非常遗憾, 本文中的这个特征类还仅仅是关于同个标签的特征类, 因此没办法体现标签相关性, 同时LIFT我感觉似乎也过于强调单个标签与中心标签类群的关系而忽略了标签自己的基础特征(原维信息)
流程的输入的基本是能够理解的, 分别是训练集, 启发式确定分簇数目的, 二分类器, 测试矩阵. 目标是对测试矩阵进行预测.
流程中鲜明的两个for循环把LIFT分为了两个步骤:
第一步在刚刚已经描述过了, 简单来说, ~遍历所有的标签, 确定每个标签后取出其正负样本构成两个集合与, 然后在这两个集合上分别以Eq.(2)中得到的为聚类值进行聚类. 然后任意取得, 求这个实例到个正负样本的距离, 得到
第二步, 由此第一步得到的全部资料, 于是再度通过~遍历所有的标签, 确定不同的资料, 再由个 构造出一个二分类器. 宏观来看也可以说是基于构造出了一个二分类器. 这个二分类器满足:
之后任意一个测试集, 我们可以调用全部的个分类器模型, 来对这个测试集的任意一个测试样本进行预测, 当然要注意, 测试集中的每个样本要进入模型预测之前, 惯例地要按照聚类的流程走一套, 得到基本的资料后才能喂到模型中预测. 因此才有最终有预测输出:
(后续关于代码的运行与论文后续的Experiments与使用的metrics细节待进一步阅读论文来完善)
LIFT阅读起来要比之前的LSML要轻松一些, 只能说不愧是label-specific features的开篇之作, 关于label-specific features的特点与理论说的非常明确, 是那种读了大概之后就能明白大体方向的论文. 似乎实现起来并不是那么复杂, 是那种一听就能大概了解代码构造的算法.
LIFT挖掘了每个标签自己的特定特征, 使用了K-Means并且将多标签转换为多个二分类问题, 很大胆而且很有突破性, 虽然美中不足地仅仅完成了first-order的多标签, 但是这种嵌入 embedding思路应该是这篇文章最宝贵的地方. 作为其他论文的参考.
最开始了解的时候我确实也担心过K-Means的效果, 但是看效果似乎启发式的使用还是不错的. 以后有机会接触更多聚类算法后希望可以看下更多平行的效果.