分类任务的F1-score

背景:BERT的分类器源码run_classifier.py的评估指标部分只有accuracy和loss,没有F1-score。详情见 metric_fn

二分类模型的准确率、精确率、召回率以及F-score

对于二分类模型:

预测 1’ 0’ Total
实值
1 TP(真正例) FN(假反例) P
0 FP(假正例) TN(真反例) N
Total P’ N’ S
  1. 准确率(Accuracy):
    Accuracy=TP+TNTP+FN+FP+TN=TP+TNS
  2. 精确率/查准率(Precision):
    Precision=TPTP+FP=TPP
  3. 召回率/查全率(Recall):
    Recall=TPTP+FN=TPP
  4. F-score:
    Fscore=(1+β2)precisionrecallβ2precision+recall
    F-score的本质是Precision和Recall的加权调和平均。(加权的积在和上飞)
  5. F1-score:
    β2=1 时:
    Fscore=2precisionrecallprecision+recall

多分类任务的F1-score

在多分类任务中,由于没有固定的正反例,没有统一的精确率、召回率等定义。
通常有两种算法F1_micro以及F1_macro。

对于N分类模型中的第i类有:

预测 i’ 其他’ Total
实值
i TP1(真正例) FN1(假反例) P
其他 FP1(假正例) TN1(真反例) N
Total P’ N’ S

这样的 针对第i类的实值-预测值 困惑矩阵 可通过总的 N类实值-N类预测值 困惑矩阵 查表得到,共可得到N个。

根据这N个困惑矩阵的数据给出如下定义:

  1. F1_micro:
    Recallmicro=Ni=1TPiNi=1TPi+Ni=1FNiPrecisionmicro=Ni=1TPiNi=1TPi+Ni=1FPiF1micro=2precisionrecallprecision+recall

    意义:F1_micro将所有样本都视为具有同样权重的样本,并针对全部样本作为整体,计算整体的Recall和Precision,并以此进一步计算F1-score。
    缺点:对于类别样本不均衡的数据集,如A:B = 10:1。由于F1_micro将所有样本都视为同样权重的样本,A类样本的统计学特征将分配到10倍于B类样本的权重,造成不同类别样本的权重分配不均匀
  2. F1_macro:
    \begin{equation} Recall_i = \frac{TP_i}{TP_i + FN_i}\\ Precision_i = \frac{TP_i}{TP_i + FP_i}\\ F1_i = \frac{2 \cdot precision_i \cdot recall_i}{precision_i + recall_i}\\ F1_{macro} = \frac{1}{N}\sum_{i=1}^{N}F1_i \end{equation}
    意义:F1_macro将所有类别都视为具有同样权重的类别,并针对每个类别作为整体,分别计算每个类别的Recall和Precision,并以此进一步计算F1-score。
    优点:对于类别样本不均衡的数据集,如A:B = 10:1。由于F1_macro将所有类别都视为同样权重的类别,A类样本的统计学特征将分配到与B类样本相同的权重,不会造成不同类别样本的权重分配不均匀
Powered By Valine
v1.5.2

喵喵喵?