【NLP】多标签分类Review

多标签分类介绍

一、概念策略及评估标准

1、概念

同一个实例,可以有多个标签, 或者被分为多个类。

image

例如,以该电影的分类为例,影片类型可以为剧情/动作/犯罪。而最顶上的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 yj1y,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)=yjf(x,yj)>t(x),yjY t ( x ) t(x) t(x)扮演阈值函数的角色,把标签空间对分成相关的标签集和不相关的标签集。阈值函数可由训练集产生,可以设为常数。当 f ( x , y j ) f(x, y_j) f(x,yj)返回的是一个概率值时,阈值函数可设为常数0.5。

  • 基于样本的评价指标(先对单个样本评估表现,然后对多个样本取平均)
  • 基于标签的评价指标(先考虑单个标签在所有样本上的表现,然后对多个标签取平均)

image-20200803141325587

(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)=p1i=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)=p1i=1pq1h(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)=p1i=1pYih(xi)Yih(xi)(Jaccard系数, J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B)=\frac{|A \cap B|}{|A \cup B|} J(A,B)=ABAB

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)=p1i=1ph(xi)Yih(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)=p1i=1pYiYih(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={xiyjYiyjh(xi),1ip}
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={xiyj/Yiyjh(xi),1ip}
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={xiyj/Yiyj/h(xi),1ip}
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={xiyjYiyj/h(xi),1ip}

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)=q1j=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/pred10
101
020

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/pred10
120
001

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/pred10
120
010

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/pred10
141
031

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+R2PR=0.6667

3)AUC-macro&AUC-micro(度量的是:“排序正确”的数据对的占比)

3、策略

多标签学习的主要难点在于输出空间的爆炸增长(L个标签对应的输出空间有 2 L 2^L 2L个)为了应对指数复杂度的标签空间,需要挖掘标签之间的相关性。(比如一部电影出现朝鲜、战争等标签,那他具有韩国的标签就很高)。

有效的挖掘标签之间的相关性,是多标签学习成功的关键。根据对相关性挖掘的强弱,可以把多标签算法分为三类。

  • 一阶策略:忽略和其它标签的相关性,比如把多标签分解成多个独立的二分类问题。
  • 二阶策略:考虑标签之间的成对关联,比如为相关标签和不相关标签排序。
  • 高阶策略:考虑多个标签之间的关联,比如对每个标签考虑所有其它标签的影响。

image-20200803141406673

(1)问题转化:
Xy1y2y3y4
X10110
X21000
X30100
X40110

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(q1)=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)={yjP(HjCj)/P(¬HjCj)>1,1jq}

后验概率 P ( H j ∣ C j ) \mathbb{P}\left(H_{j} \mid C_{j}\right) P(HjCj)大于后验概率 P ( ¬ H j ∣ C j ) \mathbb{P}\left(\neg H_{j} \mid C_{j}\right) P(¬HjCj)时,即将标记 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)ρ{,+}TTρ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ˉwjwkwjwk,xi+bjbk

构建了”相关-不相关“标签对的超平面,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)的信息熵,熵最大的模型是最好的模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值