多标签分类介绍
一、概念策略及评估标准
1、概念
同一个实例,可以有多个标签, 或者被分为多个类。
例如,以该电影的分类为例,影片类型可以为剧情/动作/犯罪。而最顶上的label豆瓣电影Top250则只有一个,是或者不是;或者在其他国家电影分级机制中的U12(Under 12)。
即多分类的label必须是N取1,多标签的label是N取M(M≥1)。
2、评估标准
任务是学习一个多标签分类器 h ( ⋅ ) h(\cdot ) h(⋅),预测 h ( x ) ⊆ Y h(x) \subseteq Y h(x)⊆Y作为𝑥的正确标签集。常见的做法是学习一个衡量𝑥和𝑦相关性的函数作为x的正确标签集。通过学习一个衡量x和y相关性的函数 f ( x , y j ) f(x, y_j) f(x,yj),希望,希望 f ( x , y j 1 ) > f ( x , y j 2 ) f(x, y_{j1}) > f(x, y_{j2}) f(x,yj1)>f(x,yj2),其中 y j 1 ∈ y , y j 2 ∉ y y_{j1} \in y, \quad y_{j2} \notin y yj1∈y,yj2∈/y 。 h ( x ) h(x) h(x)可以由可以由 f ( x ) f(x) f(x)衍生得到 h ( x ) = y j ∣ f ( x , y j ) > t ( x ) , y j ∈ Y h(x) = {y_j | f(x,y_j) > t(x), y_j \in Y} h(x)=yj∣f(x,yj)>t(x),yj∈Y。 t ( x ) t(x) t(x)扮演阈值函数的角色,把标签空间对分成相关的标签集和不相关的标签集。阈值函数可由训练集产生,可以设为常数。当 f ( x , y j ) f(x, y_j) f(x,yj)返回的是一个概率值时,阈值函数可设为常数0.5。
- 基于样本的评价指标(先对单个样本评估表现,然后对多个样本取平均)
- 基于标签的评价指标(先考虑单个标签在所有样本上的表现,然后对多个标签取平均)
(1)基于样本的评价指标
令Q表示多标签评价数据集,有q个多标签样本。令H为一个多标签分类器,令 h ( x i ) h\left(x_{i}\right) h(xi)为H基于的预测结果集。
1)Subset Accuracy(衡量正确率,预测的样本集和真实的样本集完全一样才算正确。)
subsetacc ( h ) = 1 p ∑ i = 1 p [ h ( x i ) = Y i ] \operatorname{subsetacc}(h)=\frac{1}{p} \sum_{i=1}^{p}\left[h\left(x_{i}\right)=Y_{i}\right] subsetacc(h)=p1∑i=1p[h(xi)=Yi]
相当于单标签预测的accuracy,当q很大时评价标准过于严苛。
2)Hamming Loss(衡量错分的标签比例,正确标签没有被预测以及错误标签被预测的标签占比)
h l o s s ( h ) = 1 p ∑ i = 1 p 1 q ∣ h ( x i ) Δ Y i ∣ hloss(h)=\frac{1}{p} \sum_{i=1}^{p} \frac{1}{q}\left|h\left(x^{i}\right) \Delta Y^{i}\right| hloss(h)=p1∑i=1pq1∣∣h(xi)ΔYi∣∣
其中 Δ \Delta Δ表示两个集合的对称差,返回只在其中一个集合出现的那些值。
3)Accuracy, Precision, Recall, F值(单标签学习中准确率、召回率、F1值的天然拓展)
A c c u r a c y e x a m ( h ) = 1 p ∑ i = 1 p ∣ Y i ∩ h ( x i ) ∣ ∣ Y i ∪ h ( x i ) ∣ A c c u r a c y_{\mathrm{exam}}(h)=\frac{1}{p} \sum_{i=1}^{p} \frac{\left|Y_{i} \cap h\left(x_{i}\right)\right|}{\left|Y_{i} \cup h\left(x_{i}\right)\right|} Accuracyexam(h)=p1∑i=1p∣Yi∪h(xi)∣∣Yi∩h(xi)∣(Jaccard系数, J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B)=\frac{|A \cap B|}{|A \cup B|} J(A,B)=∣A∪B∣∣A∩B∣)
P r e c i s i o n e x a m ( h ) = 1 p ∑ i = 1 p ∣ Y i ∩ h ( x i ) ∣ ∣ h ( x i ) ∣ Precision _{\mathrm{exam}}(h)=\frac{1}{p} \sum_{i=1}^{p} \frac{\left|Y_{i} \cap h\left(x_{i}\right)\right|}{\left|h\left(x_{i}\right)\right|} Precisionexam(h)=p1∑i=1p∣h(xi)∣∣Yi∩h(xi)∣
R e c a l l exam ( h ) = 1 p ∑ i = 1 p ∣ Y i ∩ h ( x i ) ∣ ∣ Y i ∣ Recall_{\operatorname{exam}}(h)=\frac{1}{p} \sum_{i=1}^{p} \frac{\left|Y_{i} \cap h\left(x_{i}\right)\right|}{\left|Y_{i}\right|} Recallexam(h)=p1∑i=1p∣Yi∣∣Yi∩h(xi)∣
F 1 exam ( h ) = 2 × P r e c i s i o n e x a m ( h ) × R e c a l l exam ( h ) P r e c i s i o n e x a m ( h ) + R e c a l l exam ( h ) F1_{\operatorname{exam}}(h)=\frac{2\times Precision _{\mathrm{exam}}(h)\times Recall_{\operatorname{exam}}(h)}{Precision _{\mathrm{exam}}(h)+Recall_{\operatorname{exam}}(h)} F1exam(h)=Precisionexam(h)+Recallexam(h)2×Precisionexam(h)×Recallexam(h)
4)基于排序思路的评价指标One-error,Coverage,RankingLoss,Average Precision
(2)基于标签的评价指标
T
P
j
=
∣
{
x
i
∣
y
j
∈
Y
i
∧
y
j
∈
h
(
x
i
)
,
1
≤
i
≤
p
}
∣
T P_{j}=\left|\left\{x_{i} \mid y_{j} \in Y_{i} \wedge y_{j} \in h\left(x_{i}\right), 1 \leq i \leq p\right\}\right|
TPj=∣{xi∣yj∈Yi∧yj∈h(xi),1≤i≤p}∣
F
P
j
=
∣
{
x
i
∣
y
j
∉
Y
i
∧
y
j
∈
h
(
x
i
)
,
1
≤
i
≤
p
}
∣
F P_{j}=\left|\left\{x_{i} \mid y_{j} \notin Y_{i} \wedge y_{j} \in h\left(x_{i}\right), 1 \leq i \leq p\right\}\right|
FPj=∣{xi∣yj∈/Yi∧yj∈h(xi),1≤i≤p}∣
T
N
j
=
∣
{
x
i
∣
y
j
∉
Y
i
∧
y
j
∉
h
(
x
i
)
,
1
≤
i
≤
p
}
∣
T N_{j}=\left|\left\{x_{i} \mid y_{j} \notin Y_{i} \wedge y_{j} \notin h\left(x_{i}\right), 1 \leq i \leq p\right\}\right|
TNj=∣{xi∣yj∈/Yi∧yj∈/h(xi),1≤i≤p}∣
F
N
j
=
∣
{
x
i
∣
y
j
∈
Y
i
∧
y
j
∉
h
(
x
i
)
,
1
≤
i
≤
p
}
∣
F N_{j}=\left|\left\{x_{i} \mid y_{j} \in Y_{i} \wedge y_{j} \notin h\left(x_{i}\right), 1 \leq i \leq p\right\}\right|
FNj=∣{xi∣yj∈Yi∧yj∈/h(xi),1≤i≤p}∣
1)Macro-averaging
B macro ( h ) = 1 q ∑ j = 1 q B ( T P j , F P j , T N j , F N j ) B_{\text {macro }}(h)=\frac{1}{q} \sum_{j=1}^{q} B\left(T P_{j}, F P_{j}, T N_{j}, F N_{j}\right) Bmacro (h)=q1∑j=1qB(TPj,FPj,TNj,FNj)
2)Micro-averaging
B micro ( h ) = B ( ∑ j = 1 q T P j , ∑ j = 1 q F P j , ∑ j = 1 q T N j , ∑ j = 1 q F N j ) B_{\text {micro }}(h)=B\left(\sum_{j=1}^{q} T P_{j}, \sum_{j=1}^{q} F P_{j}, \sum_{j=1}^{q} T N_{j}, \sum_{j=1}^{q} F N_{j}\right) Bmicro (h)=B(∑j=1qTPj,∑j=1qFPj,∑j=1qTNj,∑j=1qFNj)
B相当于二分类评价矩阵, B ∈ { Accuracy, Precision, Recall , F β } 4 B \in\left\{\text {Accuracy, Precision, Recall}, F^{\beta}\right\}^{4} B∈{Accuracy, Precision, Recall,Fβ}4。
macro是先对单个标签下的数量特征计算得到常规指标,再对多个标签取平均。(相当于针对于labels的权重相等)
micro是先对多个标签下的数量特征取平均,再根据数量特征计算得到常规指标。(相当于针对于examples的权重相等)
A c c u r a c y m a c r o ( h ) = A c c u r a c y m i c r o ( h ) Accuracy_{macro} (h) = Accuracy_{micro} (h) Accuracymacro(h)=Accuracymicro(h)
A c c u r a c y m i c r o ( h ) + H a m m i n g L o s s ( h ) = 1 Accuracy_{micro} (h)+HammingLoss(h)=1 Accuracymicro(h)+HammingLoss(h)=1
举例:
y_gt = np.array ([[1,0,1],[0,1,1],[0,1,0]])
y_pred = np.array ([[0,0,1],[1,1,1],[1,1,1]])
f1_score(y_gt,y_pred,average = "macro")#0.6
f1_score(y_gt,y_pred,average = "micro")#0.666666666666
macro
对于macro,我们通过每一个class的confusion matrix算出它的precision和recall,并计算出对与那个class的F1 score,最后通过平均所有class的𝐹1F1 score得到𝐹1
Class 0:
gt/pred | 1 | 0 |
---|---|---|
1 | 0 | 1 |
0 | 2 | 0 |
P 0 = 0 0 + 2 = 0 P_{0}=\frac{0}{0+2}=0 P0=0+20=0 ,$ R_{0}=\frac{0}{0+1}=0 , , ,F 1_{0}=\frac{2 \times 0 \times 0}{0+0}=0$
Class1:
gt/pred | 1 | 0 |
---|---|---|
1 | 2 | 0 |
0 | 0 | 1 |
P 1 = 2 2 + 0 = 1 P_{1}=\frac{2}{2+0}=1 P1=2+02=1 ,$ R_{1}=\frac{2}{2+0}=1 , , ,F 1_{1}=\frac{2 \times 1 \times 1}{1+1}=1$
Class2:
gt/pred | 1 | 0 |
---|---|---|
1 | 2 | 0 |
0 | 1 | 0 |
P 2 = 2 2 + 1 = 2 3 P_{2}=\frac{2}{2+1}=\frac{2}{3} P2=2+12=32 ,$ R_{2}=\frac{2}{2+0}=1 , , ,F1_{2}=\frac{2 \times \frac{2}{3} \times 1}{\frac{2}{3}+1}=\frac{4}{5}$
P m a c r o = 1 3 ( 0 + 1 + 2 3 ) = 0.5556 P_{macro} = \frac{1}{3}(0+1+\frac{2}{3}) = 0.5556 Pmacro=31(0+1+32)=0.5556
R m a c r o = 1 3 ( 0 + 1 + 1 ) = 0.6667 R_{macro} = \frac{1}{3}(0+1+1) = 0.6667 Rmacro=31(0+1+1)=0.6667
F 1 m a c r o = 1 3 ( 0 + 1 + 0.8 ) = 0.6 F1_{macro} = \frac{1}{3}(0+1+0.8) = 0.6 F1macro=31(0+1+0.8)=0.6
micro
对于micro,我们把所有class的binary confusion matrix整合成一个大的2x2confusion matrix,然后并对于整合成的confusion matrix算出一个precision和recall值,最后通过公式得到𝐹1𝑚𝑖𝑐𝑟𝑜。
Combined All Classes:
gt/pred | 1 | 0 |
---|---|---|
1 | 4 | 1 |
0 | 3 | 1 |
P m i c r o = 4 4 + 3 = 0.5714 P_{micro} = \frac{4}{4+3} = 0.5714 Pmicro=4+34=0.5714
R m i c r o = 4 4 + 1 = 0.8 R_{micro} = \frac{4}{4+1} = 0.8 Rmicro=4+14=0.8
F 1 m i c r o = 2 ∗ P ∗ R P + R = 0.6667 F1_{micro} = \frac{2*P*R}{P+R} = 0.6667 F1micro=P+R2∗P∗R=0.6667
3)AUC-macro&AUC-micro(度量的是:“排序正确”的数据对的占比)
3、策略
多标签学习的主要难点在于输出空间的爆炸增长(L个标签对应的输出空间有 2 L 2^L 2L个)为了应对指数复杂度的标签空间,需要挖掘标签之间的相关性。(比如一部电影出现朝鲜、战争等标签,那他具有韩国的标签就很高)。
有效的挖掘标签之间的相关性,是多标签学习成功的关键。根据对相关性挖掘的强弱,可以把多标签算法分为三类。
- 一阶策略:忽略和其它标签的相关性,比如把多标签分解成多个独立的二分类问题。
- 二阶策略:考虑标签之间的成对关联,比如为相关标签和不相关标签排序。
- 高阶策略:考虑多个标签之间的关联,比如对每个标签考虑所有其它标签的影响。
(1)问题转化:
X | y1 | y2 | y3 | y4 |
---|---|---|---|---|
X1 | 0 | 1 | 1 | 0 |
X2 | 1 | 0 | 0 | 0 |
X3 | 0 | 1 | 0 | 0 |
X4 | 0 | 1 | 1 | 0 |
1)Binary Relevance
分别训练(X,y1),(X,y2),(X,y3),(X,y4)四个分类器。one-order;未考虑标签之间的关联性。
2)Classifier Chains
类似于Decoder中的GL传输。
分别训练(X,y1),([X,y1],y2),([X,y1,y2],y3),([X,y1,y2,y3],y4)四个分类器。high-order;链式结构决定其丢失了平行计算的缺陷。
3)Calibrated Label Ranking
对于两个标签j,k, ( y j , y k ) ∈ Y i × Y ˉ i ( j < k ) \left(y_{j}, y_{k}\right) \in Y_{i} \times \bar{Y}_{i}(j<k) (yj,yk)∈Yi×Yˉi(j<k)对应于正例, ( y j , y k ) ∈ Y ˉ i × Y i ( j < k ) \left(y_{j}, y_{k}\right) \in \bar{Y}_{i} \times Y_{i}(j<k) (yj,yk)∈Yˉi×Yi(j<k)对应于负例。将y1,y2,y3,y4两两分类,共 q ( q − 1 ) 2 = 6 \frac{q(q-1)}{2}=6 2q(q−1)=6个分类器。分类器之间例如训练(X,[y1,y2]),其中也[y1 = 1,y2=0] y 12 = 1 y_{12}=1 y12=1。[y1 = 0,y2=1] y 12 = 0 y_{12}=0 y12=0。
second-order,复杂性高。
4)Random k-labelsets
将四个样本的标签集合视作各自单独的标签,如X1,X4的label相同,转化为多分类问题。High-order;标签集是训练集中已经出现的,泛化能力差,且如果|Q|类别太大,低效。
(2)算法适应
1)Multi-Label k-Nearest Neighbor(ML-KNN)
用N(x)表示x的𝑘个邻居,则𝐶𝑗=∑(𝑥,𝑦)∈𝑁(𝑥)1{𝑦𝑗∈𝑦}表示样本x的邻居中带有标签𝑦𝑗的邻居个数。 用
H
j
H_j
Hj表示样本
x
x
x含有标签
y
j
y_j
yj,根据后验概率最大化的规则,有
h ( x ) = { y j ∣ P ( H j ∣ C j ) / P ( ¬ H j ∣ C j ) > 1 , 1 ≤ j ≤ q } h(\boldsymbol{x})=\left\{y_{j}\left|\mathbb{P}\left(H_{j} \mid C_{j}\right) / \mathbb{P}\left(\neg H_{j} \mid C_{j}\right)>1,1 \leq j \leq q\right\}\right. h(x)={yj∣P(Hj∣Cj)/P(¬Hj∣Cj)>1,1≤j≤q}
后验概率 P ( H j ∣ C j ) \mathbb{P}\left(H_{j} \mid C_{j}\right) P(Hj∣Cj)大于后验概率 P ( ¬ H j ∣ C j ) \mathbb{P}\left(\neg H_{j} \mid C_{j}\right) P(¬Hj∣Cj)时,即将标记 y j y_j yj赋予示例x。
通过统计具有标记 y j y_j yj且其 k 个近邻中恰好有 r 个近邻具有标记 y j y_j yj的训练样本个数及不具有标记 y j y_j yj且其 k 近邻中恰好有 r 个近邻具有标记 y j y_j yj的训练样本个数,结合贝叶斯公式确定未知标签样本X的标签。
first-order;样本带有或不带有标签 y j y_j yj的条件下,它有 C j C_j Cj个邻居带有标签 y j y_j yj的概率。
2)Multi-Label Decision Tree(ML-DT)
使用决策树的思想来处理多标签数据,数据集T中,使用第
I
I
I个特征,划分值为
θ
\theta
θ,计算出如下信息增益:
I G ( T , l , θ ) = M L E n t ( T ) − ∑ ρ ∈ { − , + } ∣ T ρ ∣ ∣ T ∣ ⋅ M L Ent ( T ρ ) I G(T, l, \theta)=M L E n t(T)-\sum_{\rho \in\{-,+\}} \frac{\left|T^{\rho}\right|}{|T|} \cdot M L \operatorname{Ent}\left(T^{\rho}\right) IG(T,l,θ)=MLEnt(T)−∑ρ∈{−,+}∣T∣∣Tρ∣⋅MLEnt(Tρ)
first-order;新样本到来时,向下遍历决策树的结点,找到叶子结点,若 p j p_j pj大于0.5则表示含有标签 y j y_j yj
3)Ranking Support Vector Machine(Rank-SVM)
使用最大间隔的思想来处理多标签数据。
Rank-SVM考虑系统对相关标签和不相关标签的排序能力。
考虑最小化𝑥𝑖xi到每一个“相关-不相关”标签对的超平面的距离,来得到间隔。
min ( x i , y i ) ∈ D ( y j , y k ) ∈ y i × y i ˉ ⟨ w j − w k , x i ⟩ + b j − b k ∥ w j − w k ∥ \min _{\left(x^{i}, y^i\right) \in D_{\left(y_{j}, y_{k}\right) \in y^{i} \times y^{\bar{i}}}} \frac{\left\langle w_{j}-w_{k}, x^{i}\right\rangle+b_{j}-b_{k}}{\left\|w_{j}-w_{k}\right\|} min(xi,yi)∈D(yj,yk)∈yi×yiˉ∥wj−wk∥⟨wj−wk,xi⟩+bj−bk
构建了”相关-不相关“标签对的超平面,second-order
4)Collective Multi-Label Classifier(CML)
该算法的核心思想最大熵原则。用(x,y)表示任意的一个多标签样本,其中
y
=
(
y
1
,
y
2
,
…
,
y
q
)
∈
{
1
,
0
}
q
y=\left(y_{1}, y_{2}, \ldots, y_{q}\right) \in\{1,0\}^{q}
y=(y1,y2,…,yq)∈{1,0}q。
算法的任务等价于学习一个联合概率分布𝑝(𝑥,𝑦),用
H
p
(
x
,
y
)
H_p(x,y)
Hp(x,y)表示给定概率分布p时(x,y)的信息熵,熵最大的模型是最好的模型。