1. 多标签学习
多标签学习起源于文本分类问题中遇到的概念歧义的困难,每个文本可能同时属于多个主题。再多标签学习中,训练集由样本同时与多个标签相关,我们的任务是通过分析已知标签集的训练样本来预测未观测样本的标签集。我将在这里介绍一个多标签lazy学习方法–ML-KNN,它是由传统的K-Nearest Neighbor(K最近邻算法)衍生而来。首先,与KNN一样,对于每个未观测样本,找出其训练集中的K个最近邻。然后基于这些近邻样本的标签集合的统计信息来确定未观测样本的标签集,例如:属于每个可能类别的近邻样本数,最大化后验准则MAP(maximum a posteriori principle)。
多标签学习任务在现实世界问题中无处不在。例如,在文本分类中,每个文本可能属于多个主题,例如政治,健康等。在基因学中,每个基因与多个功能类别相关,例如代谢,转录和蛋白质合成。在景色分类中,每个景色图片可能属于多个语义类别,例如海滩、城市。在所有这些案例中,训练集中的样本都同时与多个标签相关,而我们要做的就是预测每个未知样本的标签集,其大小事先是未知的。
解决多标签问题的一个直觉的方法就是将多标签问题分解为多个独立的二分类问题。但是这种方法没有考虑到样本不同标签之间的相关性,所以表达能力会比较弱。 幸运的是,已经有一些为多标签学习任务设计的一些方法,例如多标签文本分类算法,多标签决策树还有多标签kernels方法和多标签神经网络。
2. Preliminaries
X
\mathcal{X}
X代表输入空间,
Y
=
{
1
,
2
,
.
.
.
,
Q
}
\mathcal{Y}=\{1,2,...,Q\}
Y={1,2,...,Q}代表标签空间。给定一个训练集
T
=
{
(
x
1
,
Y
1
)
,
(
x
2
,
Y
2
)
,
.
.
.
,
(
x
m
,
Y
m
)
}
,
(
x
i
∈
X
,
Y
i
⊆
Y
)
T=\{ (x_1, Y_1), (x_2, Y_2),...,(x_m,Y_m)\}, (x_i \in \mathcal{X}, Y_i \subseteq \mathcal{Y})
T={(x1,Y1),(x2,Y2),...,(xm,Ym)},(xi∈X,Yi⊆Y)。我们的目标是学习一个多标签分类器
h
:
X
→
2
Y
h:\mathcal{X} \rightarrow 2^{\mathcal{Y}}
h:X→2Y,通过优化一些特定的评估标准来进行学习。
在大多数情况下,学习系统将产生一个真实值函数,形式为:
f
:
X
×
Y
→
R
f:\mathcal{X} \times \mathcal{Y} \rightarrow \mathcal{R}
f:X×Y→R。一个成功的学习系统将对于在
Y
i
Y_i
Yi中的标签相比不在
Y
i
Y_i
Yi中的标签输出更大的值,也就是
f
(
x
i
,
y
1
)
>
f
(
x
i
,
y
2
)
f(x_i, y_1)>f(x_i, y_2)
f(xi,y1)>f(xi,y2)对于每个
y
1
∈
Y
i
a
n
d
y
2
∉
Y
i
y_1 \in Y_i \ and\ y_2 \notin Y_i
y1∈Yi and y2∈/Yi。
多标签分类器
h
h
h可以由函数
f
f
f推到而来:
h
(
x
i
)
=
{
y
∣
f
(
x
i
,
y
)
>
t
(
x
i
)
,
y
∈
Y
}
h(x_i)=\{ y|f(x_i,y) > t(x_i), y\in \mathcal{Y}\}
h(xi)={y∣f(xi,y)>t(xi),y∈Y}
其中
t
(
.
)
t(.)
t(.)是一个threshold,通常被设置为0。
真实值函数
f
f
f也可以被转换为一个排名函数
r
a
n
k
f
rank_f
rankf,如果
f
(
x
i
,
y
1
)
>
f
(
x
i
,
y
2
)
f(x_i, y_1)>f(x_i, y_2)
f(xi,y1)>f(xi,y2),那么
r
a
n
k
f
(
x
i
,
y
1
)
<
r
a
n
k
f
(
x
i
,
y
2
)
rank_f(x_i, y_1) < rank_f(x_i, y_2)
rankf(xi,y1)<rankf(xi,y2)(排名越靠前代表该标签评分越高)。
多标签问题的性能评估与经典的单标签问题不同,相对的要更加复杂。关于多标签问题的评价指标的详细介绍。
3. ML-KNN
为方便起见,在呈现ML-KNN之前引入了几种符号。 给定实例x及其关联的标签集
Y
⊆
Y
Y⊆\mathcal{Y}
Y⊆Y, 令
y
x
y_x
yx是x的类别向量,其中,如果
l
∈
Y
l \in Y
l∈Y,则其第l个分量
y
x
(
l
)
(
l
∈
Y
)
y_x(l)\ (l \in \mathcal{Y})
yx(l) (l∈Y)取值1,否则取0。 另外,令
N
(
x
)
N(x)
N(x)表示训练集中x的k个最近邻居的集合。 基于这些近邻的标签集,a membership counting vector可以被定义为:
C
x
(
l
)
=
∑
a
∈
N
(
x
)
y
a
(
l
)
,
l
∈
Y
C_x(l) = \sum_{a \in N(x)}y_a(l), l\in \mathcal{Y}
Cx(l)=a∈N(x)∑ya(l),l∈Y
其代表近邻中与
l
l
l类相关的样本数。对于每个测试样本t, ML-KNN首先识别它在训练集中的k个最近邻
N
(
t
)
N(t)
N(t)。让
H
1
l
H_1^l
H1l代表t与标签l相关,
H
0
l
H_0^l
H0l代表不相关。此外,让
E
j
l
(
j
∈
{
0
,
1
,
.
.
.
,
K
}
)
E_j^l(j \in \{ 0,1,...,K\})
Ejl(j∈{0,1,...,K})表示在t的K个近邻中,有j个样本与标签l相关的事件。所以,基于
C
t
C_t
Ct,类别向量
y
t
y_t
yt可以使用下列最大化后验准则来确定:
y
t
(
l
)
=
a
r
g
m
a
x
b
∈
{
0
,
1
}
P
(
H
b
l
∣
E
C
t
(
l
)
l
)
,
l
∈
Y
y_t(l) = arg\ max_{b \in \{0,1\}}P(H_b^l|E^l_{C_t(l)}), l\in \mathcal{Y}
yt(l)=arg maxb∈{0,1}P(Hbl∣ECt(l)l),l∈Y
(已知样本t的k个近邻中有
C
t
(
l
)
C_t(l)
Ct(l)个样本与类
l
l
l相关,而样本t与类标签l相关或不相关的概率更大的那一个。)
使用贝叶斯准则,上式可以被重写为:
y
t
(
l
)
=
a
r
g
m
a
x
b
∈
{
0
,
1
}
P
(
H
b
l
)
P
(
E
C
t
(
l
)
l
∣
H
b
l
)
P
(
E
C
t
(
l
)
l
)
,
l
∈
Y
=
a
r
g
m
a
x
b
∈
{
0
,
1
}
P
(
H
b
l
)
P
(
E
C
t
(
l
)
l
∣
H
b
l
)
,
l
∈
Y
y_t(l) = arg\ max_{b \in \{0,1\}} \frac{P(H^l_b)P(E^l_{C_t(l)} | H_b^l)}{P(E^l_{C_t(l)})}, l\in \mathcal{Y} \\ = arg\ max_{b \in \{0,1\}} P(H^l_b)P(E^l_{C_t(l)} | H_b^l), l\in \mathcal{Y}
yt(l)=arg maxb∈{0,1}P(ECt(l)l)P(Hbl)P(ECt(l)l∣Hbl),l∈Y=arg maxb∈{0,1}P(Hbl)P(ECt(l)l∣Hbl),l∈Y
如上式所示,为了确定类别向量
y
t
y_t
yt,需要的信息有先验概率
P
(
H
b
l
)
(
l
∈
Y
,
b
∈
{
0
,
1
}
)
P(H^l_b) (l \in \mathcal{Y}, b \in \{0,1\})
P(Hbl)(l∈Y,b∈{0,1})和后验概率
P
(
E
j
l
∣
H
b
l
)
(
j
∈
{
0
,
1
,
.
.
.
,
K
}
)
P(E^l_j | H_b^l)(j \in \{0,1,...,K\})
P(Ejl∣Hbl)(j∈{0,1,...,K})。 实际上,这些先验和后延概率可以直接从训练集中根据频次计数来获得。
4. 算法伪代码:
-
第1-2行计算先验概率(其中s是平滑参数,控制均匀先验的强度,s被设置为1产生Laplace平滑)。
-
2-13行计算后验概率
-
第3行,计算每个样本的近邻
-
第6行,
c[j]:与标签l相关的训练样本的数目,并且这些样本它们的k个近邻中包含j个与标签l相关的样本。
c’[j]:与标签l不相关的训练样本的数目,并且这些样本它们的k个近邻中包含j个与标签l相关的样本。 -
第8行计算 x i x_i xi的近邻中属于类l的数目 δ \delta δ
-
第9,10行,如果 x i x_i xi与类l相关,则 c [ δ ] c[\delta] c[δ]加1,否则 c ′ [ δ ] c'[\delta] c′[δ]加1。
-
第11-13行计算后验概率,
-
12行计算:已知样本与类l相关,近邻中有j个样本与类l相关的概率。
-
13行计算:已知样本与类l不相关, 近邻中有j个样本与类l相关的概率。
-
最终使用贝叶斯规则,从14-18行基于估计的概率计算算法的输出。
-
第17行:根据后验概率来判断样本是否属于类l。
-
第18行: r t r_t rt是一个实数值向量计算 Y \mathcal{Y} Y的标签排名,其中 r t ( l ) r_t(l) rt(l)对应于后验概率 P ( H 1 l ∣ E C t ( l ) l ) P(H_1^l|E^l_{C_t(l)}) P(H1l∣ECt(l)l),是一个连续值。
有了 r t r_t rt就可以使用多标签分类准则来评价分类算法的性能。
5.总结
ML-KNN借鉴了KNN的思想寻找K个近邻样本,基于未观测样本的近邻样本标签集的统计信息,利用最大后验概率准则来确定未观测样本的标签集。并运用贝叶斯条件概率,来计算当前标签为1和0的概率,概率大的标签定为样本最终的标签,并计算样本属于类l的后验概率大小(为了便于评估性能),这就是ML-KNN的大致思想。