传统的监督学习是单标签学习,但是现实中一个实例可能对应多个标签。这篇文章介绍了多标签分类的定义和评价指标、多标签学习的算法还有其他相关的任务。
假设 X = R d X = R^d X=Rd,表示d维的输入空间, Y = ( y 1 , y 2 , y 3 . , . . . , y q Y = (y_1, y_2, y_3., ..., y_q Y=(y1?,y2?,y3?.,...,yq?表示输出的可能q个类别。多标签任务是学习一个方程,在训练集合 D = { ( x i , Y i ) ∣ 1 ≤ i ≤ m } D = \{(x_i, Y_i)|1 \leq i \leq m\} D={(xi?,Yi?)∣1≤i≤m}学习一个X到Y的函数。对于每个多标签实例, x i ∈ X x_i \in X xi?∈X是d维特征空间 ( x i 1 , x i 2 , . . . , x i d ) T (x_{i1}, x_{i2}, ..., x_{id})^T (xi1?,xi2?,...,xid?)T, Y i ? Y Y_i \subseteq Y Yi??Y是对应于 x x x的标签几何。多标签学习任务就是学习一个多标签分类器 h ( . ) h(.) h(.),对于没有见到过的实例 x ∈ X x \in X x∈X,可以预测他的标签 h ( x ) ? Y h(x) \subseteq Y h(x)?Y。
有几个有用的多标签指示符可以用于描述多标签数据集的特性。
学习策略
多标签学习的主要难点在于输出空间的爆炸增长,有效的挖掘标签之间的相关性,是多标签学习成功的关键。根据对相关性挖掘的强弱,可以把多标签算法分为三类。
一. 某个类别对应样例可能远多于另一个类别,类别之间不平衡
二. 某个类别对应的正样本可能远多于负样本(类别之内不平衡)
多标签学习中的一种常见做法是返回一些实值函数
f
(
?
,
?
)
f(·,·)
f(?,?)作为学习模型。为了决定最后的输出结果,每个标签上的实值输出应根据阈值函数输出
t
(
x
)
t(x)
t(x)进行校准。
通常有两种方法设置
t
(
?
)
t(*)
t(?),设置
t
(
?
)
t(*)
t(?)为常量或者从训练数据中预测。对于前者,
f
f
f是一个实值函数,所以t可设置为0。当
f
f
f的输出为概率时,
t
t
t设置为0.5。或者当测试集可见时,阈值可以设置为训练集合测试集的多标签程度指标区别最小的数。
对于后一个策略,可以用stacking-style的步骤来决定阈值函数。假设
t
t
t是一个线性模型,即
t
(
x
)
=
<
w
,
f
(
x
)
>
+
b
t(x) = <w, f(x)> + b
t(x)=<w,f(x)>+b,这里
f
(
x
)
=
(
f
(
x
,
y
1
)
,
.
.
.
,
f
(
x
,
y
q
)
)
T
∈
R
q
f(x) = (f(x, y1),...,f(x,y_q))^T \in R^q
f(x)=(f(x,y1),...,f(x,yq?))T∈Rq是一个
q
q
q维stacking向量。为了学习
w
?
w^*
w?和
b
?
b^*
b?,需要求解线性最小二乘。
m
i
n
w
?
,
b
?
∑
i
?
1
m
(
<
w
?
,
f
?
(
x
i
)
>
+
b
?
?
s
(
x
i
)
)
2
min_{w^*,b^*}\sum_{i-1}^m(<w^*,f^*(x_i)> + b^* - s(x_i))^2
minw?,b??i?1∑m?(<w?,f?(xi?)>+b??s(xi?))2
s
(
x
i
)
=
a
r
g
m
i
n
a
∈
R
(
∣
{
y
j
∣
y
j
∈
Y
i
,
f
(
x
i
,
y
j
)
≤
a
}
∣
+
∣
{
y
k
∣
y
k
∈
Y
^
i
,
f
(
x
i
,
y
k
)
≥
a
}
∣
)
s(x_i)=argmin_{a\in R}(|\{y_j | y_j \in Y_i, f(x_i, y_j) \leq a\}|+|\{y_k|y_k \in \hat Y_i, f(x_i, y_k) \geq a\}|)
s(xi?)=argmina∈R?(∣{yj?∣yj?∈Yi?,f(xi?,yj?)≤a}∣+∣{yk?∣yk?∈Y^i?,f(xi?,yk?)≥a}∣)表示模型的输出目标,对每个样本,它以最小误差将
Y
Y
Y划分为相关和不相关。
下面对每个指标进行介绍
基于样本的评价指标
AUC-macro(“排序正确”的数据对的占比,先对单个标签计算,再平均)
A
U
C
m
a
c
r
o
=
1
q
∑
j
=
1
q
A
U
C
j
=
1
q
∑
i
=
1
q
∣
{
(
x
′
,
x
′
′
)
∣
f
(
x
′
,
y
j
)
≥
f
(
x
′
,
y
j
)
,
(
x
′
,
x
′
′
)
∈
Z
j
×
Z
^
j
}
∣
∣
Z
j
∣
∣
Z
^
j
∣
AUC_{macro} = \frac{1}{q}\sum_{j=1}^q AUC_j = \frac{1}{q}\sum_{i=1}^q\frac{|\{(x', x'')|f(x',y_j) \geq f(x',y_j), (x', x'') \in Z_j \times \hat Z_j\}|}{|Z_j||\hat Z_j|}
AUCmacro?=q1?j=1∑q?AUCj?=q1?i=1∑q?∣Zj?∣∣Z^j?∣∣{(x′,x′′)∣f(x′,yj?)≥f(x′,yj?),(x′,x′′)∈Zj?×Z^j?}∣?
Z
j
=
{
x
i
∣
y
j
∈
Y
i
,
1
≤
i
≤
p
}
Z_j = \{x_i|y_j \in Y_i, 1\leq i \leq p\}
Zj?={xi?∣yj?∈Yi?,1≤i≤p}表示的是含有
y
j
y_j
yj?标签的样本数量,
Z
^
j
=
{
x
i
∣
y
j
?
Y
i
,
1
≤
i
≤
p
}
\hat Z_j = \{x_i|y_j \notin Y_i, 1\leq i \leq p\}
Z^j?={xi?∣yj?∈/Yi?,1≤i≤p}表示的是不含有
y
j
y_j
yj?标签的样本数量
AUC-micro(“排序正确”的数据对的占比,把多个标签考虑在内来计算占比)
A
U
C
m
i
c
r
o
=
1
q
∑
j
=
1
q
A
U
C
j
=
1
q
∑
i
=
1
q
∣
{
(
x
′
,
x
′
′
,
y
′
,
y
′
′
)
∣
f
(
x
′
,
y
′
)
≥
f
(
x
′
′
,
y
′
′
)
,
(
x
′
,
y
′
)
∈
S
+
,
(
x
′
′
,
y
′
′
)
∈
S
?
}
∣
∣
S
+
∣
∣
S
?
∣
AUC_{micro} = \frac{1}{q}\sum_{j=1}^q AUC_j = \frac{1}{q}\sum_{i=1}^q\frac{|\{(x', x'', y', y'')|f(x',y') \geq f(x'',y''),(x',y')\in S^+,(x'', y'') \in S^-\}|}{|S^+||S^-|}
AUCmicro?=q1?j=1∑q?AUCj?=q1?i=1∑q?∣S+∣∣S?∣∣{(x′,x′′,y′,y′′)∣f(x′,y′)≥f(x′′,y′′),(x′,y′)∈S+,(x′′,y′′)∈S?}∣?
S
+
=
(
x
i
,
y
)
∣
y
∈
Y
i
,
1
≤
i
≤
p
S^+ = {(x_i, y)|y\in Y_i, 1 \leq i \leq p}
S+=(xi?,y)∣y∈Yi?,1≤i≤p表示的是相关的样本标签对,
S
?
=
(
x
i
,
y
)
∣
y
?
Y
i
,
1
≤
i
≤
p
S^- = {(x_i, y)|y\notin Y_i, 1 \leq i \leq p}
S?=(xi?,y)∣y∈/Yi?,1≤i≤p表示的是不相关的样本标签对
两种学习方法: