多标签学习方法-ML

Multi-Label Learning by Exploiting Label Correlations Locally

2012 AAAI

Sheng-Jun Huang Zhi-Hua Zhou

摘要

众所周知,利用标签相关性对于多标签学习很重要。现有方法通常通过假设所有实例共享标签相关性来全局地利用标签相关性。然而,在实际任务中,不同的实例可以共享不同的标签相关性,并且很少有相关性在全局范围内适用。在本文中,我们提出了ML-LOC方法,该方法允许在局部利用标签相关性。

介绍

传统的监督学习处理单标签问题,现实世界中,一个实例常常伴]随着多个标签,为了处理这些任务,多标签学习在过去几年中引起了很多关注(Ghamrawi和Mccallum 2005; Hsu等人2009; Hariharan等人2010; Bucak等人2011)。

多标签问题直接解决方案是对每个类别单独训练,然后这种方案忽略了标签之间的相关性,特别是当某些标签没有足够的训练样例时,标签相关性可能会提供有用的额外信息。标签相关性的利用已被广泛接受为当前多标签学习方法(Tsoumakas等人2009; Dembczynski等人2010; Zhang和Zhang 2010)。

尽管不同的多标签学习方法试图利用标签关联的不同顺序(一阶,二阶和高阶)(Zhang和Zhang 2010),但他们通常通过假设相关性以全局方式利用标签关联。由所有实例共享。然而,在实际任务中,标签关联自然是局部的,其中标签关联可以仅由实例的子集而不是所有实例共享。

例如,如图所示,我们考虑山脉和树木之间的强相关性。对于图像(b),树木不太突出,因此可能难以预测;在这种情况下,山脉和树木之间的相关性可能有助于学习任务,因为标签山脉在此图像中相对容易预测。对于图像(c),随着树清楚地呈现,这种相关性变得具有误导性,因为它将建议包括标签山,而该标签不适合于图像。
多标签学习方法-ML

在本文中,我们提出了ML-LOC方法,该方法视图在局部利用数据中的标签相关性,我们不假设有外部知识来源指定标签相关性的局部性。相反,我们假设实例可以分成不同的组,每个组共享标签相关的子集。为了编码标签相关性的局部影响,我们为每个实例构造了一个LOC代码,并使用此代码作为实力的附加特征。我们通过将全局判别拟合和局部相关敏感性纳入统一框架来制定问题,并为优化开发交替解决方案。

ML-LOC 方法

框架

通过为每个实例 XiX_i 引入向量 CiC_i 来编码标签相关性的局部影响和扩展原始特征表示。由于相似的实例共享相同的标签关联子集,因此相似的标签将会有相似 cc。因此,我们在标签空间中衡量实例之间的相似性而不是在特征空间中,因为具有相似标签向量的实例通常共享相同的相关性。

定义 f=[f1,f2, ,fL]\mathbf { f } = \left[ f _ { 1 } , f _ { 2 } , \cdots , f _ { L } \right],每个函数作用与一个标签,fl(x,c)=wl,[ϕ(x),c]=wlx,ϕ(x)+wlc,cf _ { l } ( \mathbf { x } , \mathbf { c } ) = \left\langle \mathbf { w } _ { l } , [ \phi ( \mathbf { x } ) , \mathbf { c } ] \right\rangle = \left\langle \mathbf { w } _ { l } ^ { x } , \phi ( \mathbf { x } ) \right\rangle + \left\langle \mathbf { w } _ { l } ^ { c } , \mathbf { c } \right\rangle,其中ϕ()\phi ( \cdot )是由核 κκ 引起的特征映射,针对全局判别拟合和局部相关灵敏度,我们优化 ffCC ,使得以下函数最小化:

minf,Ci=1nV(xi,ci,yi,f)+λ1Ω(f)+λ2Z(C)\min _ { f , C } \sum _ { i = 1 } ^ { n } V \left( \mathbf { x } _ { i } , \mathbf { c } _ { i } , \mathbf { y } _ { i } , \mathbf { f } \right) + \lambda _ { 1 } \Omega ( \mathbf { f } ) + \lambda _ { 2 } Z ( C )

其中 VV 是损失函数,$ \Omega$ 是控制模型 ff 的复杂性的正则化器, ZZ是强制执行代码 CC 的局部性的正则化器,其中loss为hamming loss

V(xi,ci,yi,f)=l=1Lloss(xi,ci,yil,fl)V \left( \mathbf { x } _ { i } , \mathbf { c } _ { i } , \mathbf { y } _ { i } , \mathbf { f } \right) = \sum _ { l = 1 } ^ { L } \operatorname { loss } \left( \mathbf { x } _ { i } , \mathbf { c } _ { i } , y _ { i l } , f _ { l } \right)
其中loss为SVM的Hinge losss,
loss(x,c,y,f)=max{0,1yf([ϕ(x),c])}\operatorname { loss } ( \mathbf { x } , \mathbf { c } , y , f ) = \max \{ 0,1 - y f ( [ \phi ( \mathbf { x } ) , \mathbf { c } ] ) \}
对于第二项式子我们定义为
Ω(f)=l=1Lwl2\Omega ( \mathbf { f } ) = \sum _ { l = 1 } ^ { L } \left\| \mathbf { w } _ { l } \right\| ^ { 2 }

对于第三项式子,我们假定训练数据可以分为m组 {G1,G2, ,Gm}\left\{ G _ { 1 } , G _ { 2 } , \cdots , G _ { m } \right\},可以通过聚类的方法发现这些组,定义 SjS_j表示 GjG_j当中的相关子集,由于标签相关性通常不可用且很难获得,我们用Gj中的所有实例的原型代表SjS_j,用pjp_j表示
pj=1GjxkGjyk\mathbf { p } _ { j } = \frac { 1 } { \left| G _ { j } \right| } \sum _ { \mathbf { x } _ { k } \in G _ { j } } \mathbf { y } _ { k }
然后,对于一个实例 xix_i ,定义 cijc_{ij} 来衡量 SjS_j 对于 xix_i 局部影响,yjy_jpjp_j 越相似,xix_iGjG_j中的实例具有相同的相关性的可能性越大,cijc_{ij} 值越大表明 SjS_jxix_i 有帮助的概率更高,我们将连接的矢量命名为LOC code (LOcal Correlation code) ci=[ci1,ci2, ,cim]\mathbf { c } _ { i } = \left[ c _ { i 1 } , c _ { i 2 } , \cdots , c _ { i m } \right],对于xix_i,定义LOC codes的正则化式子为
Z(C)=i=1nj=1mcijyipj2Z ( C ) = \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } c _ { i j } \left\| \mathbf { y } _ { i } - \mathbf { p } _ { j } \right\| ^ { 2 }

使用上述展开公式代替优化函数中的三项,则框架可以写为
minW,C,Pi=1nl=1Lξil+λ1l=1Lwl2++λ2i=1nj=1mcijyipj2\min _ { W , C , P } \sum _ { i = 1 } ^ { n } \sum _ { l = 1 } ^ { L } \xi _ { i l } + \lambda _ { 1 } \sum _ { l = 1 } ^ { L } \left\| \mathbf { w } _ { l } \right\| ^ { 2 } + + \lambda _ { 2 } \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } c _ { i j } \left\| \mathbf { y } _ { i } - \mathbf { p } _ { j } \right\| ^ { 2 }
s.t.yilwl,[ϕ(xi),ci]1ξilξil0i{1, ,n},l{1, ,L}j=1mcij=1i{1, ,n}0cij1i{1, ,n},j{1, ,m}\left. \begin{array} { c l } { \text {s.t.} } & { y _ { i l } \left\langle \mathbf { w } _ { l } , \left[ \phi \left( \mathbf { x } _ { i } \right) , \mathbf { c } _ { i } \right] \right\rangle \geq 1 - \xi _ { i l } } \\ { } & { \xi _ { i l } \geq 0 \quad \forall i \in \{ 1 , \cdots , n \} , l \in \{ 1 , \cdots , L \} } \\ { } & { \sum _ { j = 1 } ^ { m } c _ { i j } = 1 \quad \forall i \in \{ 1 , \cdots , n \} } \\ { 0 \leq c _ { i j } } & { \leq 1 \quad \forall i \in \{ 1 , \cdots , n \} , j \in \{ 1 , \cdots , m \} } \end{array} \right.

####交替解决方案
通过固定三个变量其中的两个,来优化第三个变量,当固定C和P来求W,优化函数可以写为
minWi=1nl=1Lξil+λ1l=1Lwl2\min _ { W } \sum _ { i = 1 } ^ { n } \sum _ { l = 1 } ^ { L } \xi _ { i l } + \lambda _ { 1 } \sum _ { l = 1 } ^ { L } \left\| \mathbf { w } _ { l } \right\| ^ { 2 }
 s.t. yilwl,[ϕ(xi),ci]1ξilξil0i={1, ,n},l={1, ,L}\left. \begin{array} { c l } { \text { s.t. } } & { y _ { i l } \left\langle \mathbf { w } _ { l } , \left[ \phi \left( \mathbf { x } _ { i } \right) , \mathbf { c } _ { i } \right] \right\rangle \geq 1 - \xi _ { i l } } \\ { } & { \xi _ { i l } \geq 0 \quad \forall i = \{ 1 , \cdots , n \} , l = \{ 1 , \cdots , L \} } \end{array} \right.

进一步,对于某个标签:
minwli=1nξil+λ1wl2\min _ { \mathbf { w } _ { l } } \sum _ { i = 1 } ^ { n } \xi _ { i l } + \lambda _ { 1 } \left\| \mathbf { w } _ { l } \right\| ^ { 2 }
 s.t. yilwl,[ϕ(xi),ci]1ξilξil0i={1, ,n},l={1, ,L}\left. \begin{array} { c l } { \text { s.t. } } & { y _ { i l } \left\langle \mathbf { w } _ { l } , \left[ \phi \left( \mathbf { x } _ { i } \right) , \mathbf { c } _ { i } \right] \right\rangle \geq 1 - \xi _ { i l } } \\ { } & { \xi _ { i l } \geq 0 \quad \forall i = \{ 1 , \cdots , n \} , l = \{ 1 , \cdots , L \} } \end{array} \right.

这是一个标准的SVM模型,因此,可以通过独立训练L SVM模型来优化W。

当固定W和P来求C,这个式子将变成:
minCi=1nl=1Lξil+λ2i=1nj=1mcijyipj2\min _ { C } \sum _ { i = 1 } ^ { n } \sum _ { l = 1 } ^ { L } \xi _ { i l } + \lambda _ { 2 } \sum _ { i = 1 } ^ { n } \sum _ { j = 1 } ^ { m } c _ { i j } \left\| \mathbf { y } _ { i } - \mathbf { p } _ { j } \right\| ^ { 2 }
s.t.yilwl,[ϕ(xi),ci]1ξilξil0i={1, ,n},l={1, ,L}j=1mcij=1i={1, ,n}0cij1i={1, ,n},j={1, ,m}\left. \begin{array} { c l } { \text {s.t.} } & { y _ { i l } \left\langle \mathbf { w } _ { l } , \left[ \phi \left( \mathbf { x } _ { i } \right) , \mathbf { c } _ { i } \right] \right\rangle \geq 1 - \xi _ { i l } } \\ { } & { \xi _ { i l } \geq 0 \quad \forall i = \{ 1 , \cdots , n \} , l = \{ 1 , \cdots , L \} } \\ { } & { \sum _ { j = 1 } ^ { m } c _ { i j } = 1 \quad \forall i = \{ 1 , \cdots , n \} } \\ { 0 \leq c _ { i j } \leq 1 } & { \forall i = \{ 1 , \cdots , n \} , j = \{ 1 , \cdots , m \} } \end{array} \right.
进一步,对于某个实例:
mincil=1Lξil+λ2j=1mcijyipj2\min _ { \mathbf { c } _ { i } } \sum _ { l = 1 } ^ { L } \xi _ { i l } + \lambda _ { 2 } \sum _ { j = 1 } ^ { m } c _ { i j } \left\| \mathbf { y } _ { i } - \mathbf { p } _ { j } \right\| ^ { 2 }
s.t.yilwl,[ϕ(xi),ci]1ξilξil0i={1, ,n},l={1, ,L}j=1mcij=1i={1, ,n}0cij1i={1, ,n},j={1, ,m}\left. \begin{array} { c l } { \text {s.t.} } & { y _ { i l } \left\langle \mathbf { w } _ { l } , \left[ \phi \left( \mathbf { x } _ { i } \right) , \mathbf { c } _ { i } \right] \right\rangle \geq 1 - \xi _ { i l } } \\ { } & { \xi _ { i l } \geq 0 \quad \forall i = \{ 1 , \cdots , n \} , l = \{ 1 , \cdots , L \} } \\ { } & { \sum _ { j = 1 } ^ { m } c _ { i j } = 1 \quad \forall i = \{ 1 , \cdots , n \} } \\ { 0 \leq c _ { i j } \leq 1 } & { \forall i = \{ 1 , \cdots , n \} , j = \{ 1 , \cdots , m \} } \end{array} \right.

接着更新p
pj=i=1ncijyi\mathbf { p } _ { j } = \sum _ { i = 1 } ^ { n } c _ { i j } \mathbf { y } _ { i }

由于分类模型是基于特征向量和LOC codes训练得来的,给定一个测试用例 xtx_t,它的LOC code ctc_t是不知道的,因此我们通过训练实例和它们的LOC codes训练 mm 个回归模型。

对于ML—LOC算法,P和C通过使用k-meas聚类方法初始化,pkp_k初始化为聚类的中心, 当 yiy_i属于第k的类时 cikc_{ik} 被赋值为1,否则为0。

算法流程

多标签学习方法-ML