多标签学习:LIFT: Multi-Label Learning with Label-Specific Features

多标签学习:LIFT: Multi-Label Learning with Label-Specific Features

@(Machine Learning)

Intro

LIFT是张敏灵教授提出的多标签(multi-label)的学习方法。关于multi-label的介绍可以看我这篇博客,其中主要描述了multi-class、multi-label、multi-task的定义和区别。
本人根据论文总结了LIFT算法,并根据提供的matlab语言的code,完成了LIFT算法的Python版本,主要用到了sklearn提供的api,以便我自己使用该算法。

论文原文、论文代码和我重写的Python版本的LIFT代码可以在文末的Source找到

Algorithm

论文给出的伪代码

多标签学习:LIFT: Multi-Label Learning with Label-Specific Features_第1张图片

根据论文,LIFT可以分为两个步骤:
1. label-specific features construction
2. classification models induction

其中主要的是第一个步骤,构造标签间关系定义的特征,其也可以包括下面的步骤:

  1. 将训练样本划分为正类和负类:

    2

  2. 在正类和负类中聚类,保存centers,聚类的数目由下式给出:(论文提到,这个选择的原因是class-imbalance问题)

    3

  3. 将原特征映射为新特征:(该步骤也就是求每一个原特征到每一个class得到的所有centers的欧式距离)

    4

需要注意的是第三个步骤中,论文提到”which can be served as appropriate building blocks”,这个的意思是做映射的时候,可以将原特征分为一个一个的block进行映射,最后一个block可能会不够一个block的数量,需要特殊处理,这可能是论文给出的代码中需要花时间理解的部分。

然后就可以把得到的特征放入分类器中进行分类,也就是说LIFT的第二个步骤。该步骤在论文给出的代码中使用的是SVM,利用了matlab的libsvm库,论文提到可以使用其他二分类器。为了方便使用其他二分类器,我才将源码重写为python的版本,这样就可以非常方便地调用sklearn的二分类器了。

描述完算法后,论文用很大的篇幅写了Experiments,使用了很多metrics,来说明LIFT是多标签分类的有效的方法。关于怎么去测试和评判一个算法的好坏,论文非常严谨,也是非常值得学习的地方。

Source

From Prof. MinLing Zhang:
Paper Download
Code Download

From my github:
LIFT in Python

你可能感兴趣的:(Machine,Learning)