多标签分类性能评估方法

多标签分类是指每个样本可以被分配到多个类别中,即:可以拥有多个标签。比如:某条新闻既可以是军事类新闻、也可以是政治类新闻。

在评估多标签分类模型时,我们使用的是样本平均精确率、样本平均召回率和样本平均 F1 分数。

y_true = [['好评', '中评'], ['好评', '中评', '差评'], ['好评', '差评'], ['中评', '差评'], ['中评', '好评']]
y_pred = [['中评', ], ['好评', '差评'], ['中评', ], ['好评', '差评'], ['中评', '好评']]

Precision samples = 1 N ∑ i = 1 N ∣ Y i ∩ f ( x i ) ∣ ∣ f ( x i ) ∣ \text{Precision}_{\text{samples}} = \dfrac{1}{N}\displaystyle \sum_{i=1}^{N} \dfrac{|\mathcal{Y}_i \cap f(x_i)|}{|f(x_i)|} Precisionsamples=N1i=1Nf(xi)Yif(xi)

Recall samples = 1 N ∑ i = 1 N ∣ Y i ∩ f ( x i ) ∣ ∣ Y i ∣ \displaystyle \text{Recall}_{\text{samples}} = \dfrac{1}{N} \sum_{i=1}^{N} \dfrac{|\mathcal{Y}_i \cap f(x_i)|}{|\mathcal{Y}_i|} Recallsamples=N1i=1NYiYif(xi)

F1 samples = 1 N ∑ i = 1 N 2 ⋅ Precision i ⋅ Recall i Precision i + Recall i \displaystyle \text{F1}_{\text{samples}} = \dfrac{1}{N} \sum_{i=1}^{N} \dfrac{2 \cdot \text{Precision}_i \cdot \text{Recall}_i}{\text{Precision}_i + \text{Recall}_i} F1samples=N1i=1NPrecisioni+Recalli2PrecisioniRecalli

  • N N N 表示样本数量
  • y i y_i yi 表示第 i i i 个样本真实标签集合
  • f ( x i ) f(x_i) f(xi) 表示第 i i i 个样本预测的标签集合
  • P r e c i s i o n i Precision_i Precisioni 表示第 i i i 个样本的精确度
  • R e c a l l i Recall_i Recalli 表示第 i i i 个样本的召回率

接下来,计算每个样本的精确度、召回率、f1-score 值如下:

样本1:
精确度:1.0 
召回率:0.5 
F1-score:0.6666666666666666

样本2:
精确度:1.0 
召回率:0.6666666666666666 
F1-score:0.8

样本3:
精确度:0.0 
召回率:0.0 
F1-score:0.0

样本4:
精确度:0.5 
召回率:0.5 
F1-score:0.5

样本5:
精确度:1.0 
召回率:1.0 
F1-score:1.0

计算每个指标的样本平均值:

精确度:0.7
召回率:0.5333333333333333
F1-score:0.5933333333333334

使用示例:

['中评' '好评' '差评']
[[1 1 0]
 [1 1 1]
 [0 1 1]
 [1 0 1]
 [1 1 0]]
[[1 0 0]
 [0 1 1]
 [1 0 0]
 [0 1 1]
 [1 1 0]]
精确率:		 0.7
召回率:		 0.5333333333333333
f1-score:	 0.5933333333333334

你可能感兴趣的:(杂,分类,数据挖掘,人工智能,机器学习)