论文学习记录随笔 多标签之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\) 标签个数
\(X\) \(n \times d\) 数据矩阵
\(Y\) \(n \times q\) 标签矩阵
\(\phi_{k}(\boldsymbol{x})\) \(1 \times 2m_k\) 在标签\(l_k\)的正负样本影响下构建的全新映射的特征空间, 有\(k \in [1,q]\)

此外还有些表示数据集的含义的符号, 比如\(\mathcal{B}_{k}\)表示依据标签\(l_k\)构造的的大小为\(n \times 2m_k\)的二分类数据集, \(\mathcal{D}\)表示原数据集, \(\mathfrak{L}\)是二分类学习器, \(\boldsymbol{u}\)表示测试数据集.

3.LIFT方法中的算法细节

首先选定某个标签\(k\), 得到一个由正负样本组成的大小为\(l \times 1\)的标签列, 其中正样本组成集合\(\mathcal{P}_{k}\), 负样本组成集合\(\mathcal{N}_{k}\), 有:\[\begin{aligned}
\mathcal{P}_{k} &=\left\{\boldsymbol{x}_{i} \mid\left(\boldsymbol{x}_{i}, Y_{i}\right) \in \mathcal{D}, l_{k} \in Y_{i}\right\} \\ \mathcal{N}_{k} &=\left\{\boldsymbol{x}_{i} \mid\left(\boldsymbol{x}_{i}, Y_{i}\right) \in \mathcal{D}, l_{k} \notin Y_{i}\right\}\end{aligned}  \tag{1}\]这两个集合内部的数据很大程度上是不平衡的(\(|\mathcal{P}_{k}|\neq |\mathcal{N}_{k}|\)), 这是由多标签矩阵本身的不平衡决定的.

之后分别将两个集合的进行聚类操作, 这是对于\(\mathcal{P}_{k}\)与\(\mathcal{N}_{k}\)的信息进一步挖掘的途径. 

To gain insights on the properties o\(P_k\) and \(N_k\), LIFT chooses to employ clustering techniques which have been widely used as stand-alone tools for data analysis

原作者用的K-Means. 自然使用K-Means就必须考虑一个合适的\(k\)值, 这个选定确实是一个比较麻烦的是, 原作者采用了一种启发式的算法:\[m_{k}^{+}=m_{k}^{-}=\left\lceil r \cdot \min \left\{\left|\mathcal{P}_{k}\right|,\left|\mathcal{N}_{k}\right|\right\}\right\rceil \tag{2}\] 这里的\(m_{k}^{+}\)代表集合\(\mathcal{P}_k\)的K-Means的\(k\)值, \(m_{k}^{-}\)代表集合\(\mathcal{N}_k\)的. 这里的\(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. \(|P_{k}| ≪ |N_{k}|\). To mitigate potential risks brought by the class-imbalance problem, LIFT sets equivalent number of clusters for \(P_{k}\) and \(N_{k}\), i.e. \(m_{k}^{+}=m_{k}^{-}=m_{k}\). In this way, clustering information gained from positive instances as well as negative instances are treated with equal importance.

于是我们可以得到2个相同数目的聚类中心集合 \(\{p^{k}_{1},p^{k}_{2},\dots,p^{k}_{m^{+}_k}\}\)与\(\{n^{k}_{1},n^{k}_{2},\dots,n^{k}_{m^{-}_k}\}\). 每个值都代表一个\(d\)维度向量, 现在我们任意取出一个原数据集中的实例\(\boldsymbol{x}\), 可以分别求得其到这\(2m_k\)个聚类中心的距离, 然后将这\(2m_k\)个聚类中心构成一个全新的\(1\times 2m_k\)的关于\(k\)的实例\(\phi_{k}(\boldsymbol{x})\):\[
\phi_{k}(\boldsymbol{x})= {\left[d\left(\boldsymbol{x}, \boldsymbol{p}_{1}^{k}\right), \cdots, d\left(\boldsymbol{x}, \boldsymbol{p}_{m_{k}}^{k}\right), d\left(\boldsymbol{x}, \boldsymbol{n}_{1}^{k}\right), \cdots, d\left(\boldsymbol{x}, \boldsymbol{n}_{m_{k}}^{k}\right)\right]}
 \tag{3} \] 这种构建的性特征集就是关于标签\(l_k\)的" label-specific features ", 原文修饰这个结构: " which can be served as appropriate building blocks (prototypes) for the construction of label-specific features. "

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

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

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

这样全新的二分类问题中, 2\(m_{k}\)维度相比于原本的\(d\)维度承载的信息更多了.

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

4.LIFT的流程与预测

论文学习记录随笔 多标签之LIFT_第1张图片 原文中的流程表示

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

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

  1. label-specific features construction
  2. classifier induction

第一步在刚刚已经描述过了, 简单来说, \(1\)~\(q\)遍历所有的标签, 确定每个标签\(l_k\)后取出其正负样本构成两个集合\(\mathcal{P}_{k}\)与\(\mathcal{N}_{k}\), 然后在这两个集合上分别以Eq.(2)中得到的\(m_k\)为聚类\(k\)值进行聚类. 然后任意取得\(\boldsymbol{x}_i \in \mathcal{D}\), 求这个实例到\(2m_k\)个正负样本的距离, 得到\(\phi_{k}(\boldsymbol{x}_i) = \{ d\left(\boldsymbol{x}_i, \boldsymbol{p}_{1}^{k}\right),\dots,d\left(\boldsymbol{x}_i, \boldsymbol{p}_{2m_k}^{k}\right)  \}\)

第二步, 由此第一步得到的全部\(\phi_{k}\)资料,  于是再度通过\(1\)~\(q\)遍历所有的标签, 确定不同的\(\phi_{k}\)资料, 再由\(n\)个\(\phi_{k}(\boldsymbol{x}_i)\) 构造出一个二分类器\(\mathcal{B}_{k}\). 宏观来看也可以说是\(\mathcal{D}\)基于\(l_k\)构造出了一个二分类器\(\mathcal{B}_{k}\). 这个二分类器满足:\[\begin{array}{r}
\mathcal{B}_{k}=\left\{\left(\phi_{k}\left(\boldsymbol{x}_{i}\right), Y_{i}(k)\right) \mid\left(\boldsymbol{x}_{i}, Y_{i}\right) \in \mathcal{D}\right\} \text { where } \\
Y_{i}(k)=+1 \text { if } l_{k} \in Y_{i} ; \text { Otherwise, } Y_{i}(k)=-1
\end{array} \tag{4}\]后续使用二分类器\(\mathfrak{L}\)训练每个数据集\(\mathcal{B}_{k}\), 例如\(g_{k} \leftarrow \mathcal{L}\left(\mathcal{B}_{k}\right)\), 这个的\(g_k\)是一个关于标签\(l_k\)的一个完善的分类器模型, 可以用于预测. (任意标签\(l_k\)对应的数据集\(\mathcal{B}_{k}\)的训练也是要以\(n\)个训练集样本为依据的)

之后任意一个测试集\(u \in \mathcal{X}\), 我们可以调用全部的\(q\)个分类器模型, 来对这个测试集的任意一个测试样本\(\boldsymbol{x}\)进行预测, 当然要注意, 测试集中的每个样本要进入模型\(g_k\)预测之前, 惯例地要按照聚类的流程走一套, 得到基本的\(\phi_{k}\)资料后才能喂到模型中预测. 因此才有最终有预测输出:\[Y=\left\{l_{k} \mid g_{k}\left(\phi_{k}(\boldsymbol{u})\right)>0,1 \leq k \leq q\right\} \tag{5}\]

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

简单总结

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

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

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

你可能感兴趣的:(多标签,论文笔记,多标签,论文,聚类,kmeans,机器学习)