【笔记】分类问题的模型评估(Precision, recall, F-measures)

1. 二分类问题

1.1 概念

TP FP FN TN

预测类别-正预测类别-负
真实类别-正真正例(True Positive,TP)假负例(False Negative,FN)
真实类别-负假正例(False Positive,FP)真负例(True Negative,TN)

准确率 Precision

准确率,衡量分类器找对正例的能力:
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP}Precision=TP+FPTP

召回率 Recall

召回率,衡量分类器找全正例的能力:
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN}Recall=TP+FNTP

F值 F-score or F-measures

F值,权衡准确率和召回率两个指标:
F β = ( 1 + β 2 ) × P r e c i s i o n × R e c a l l β 2 × P r e c i s i o n + R e c a l l F_{\beta}=\frac{(1+\beta^2)\times Precision\times Recall}{\beta^2 \times Precision+Recall}Fβ=β2×Precision+Recall(1+β2)×Precision×Recall
β \betaβ 的选择:
β &lt; 1 \beta &lt;1β<1 时,准确率更重要,当 β &gt; 1 \beta &gt; 1β>1 时,召回率更重要。
β = 1 \beta =1β=1 时,准确率和召回率同样重要,也是最常用的F1-score:
F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F_{1}=\frac{2\times Precision\times Recall}{Precision+Recall}F1=Precision+Recall2×Precision×Recall
应用中不同侧重的例子:

  • 侧重准确率:搜索
  • 侧重召回率:疾病监测、垃圾邮件检测

经手过的案例:

  • 侧重召回率:mesh的噪声面片检测,检测出噪声面片后用传统方法平滑。检测噪声面片时误识别一些边缘的非噪声面片反而有利于后续的拉普拉斯平滑。

.

1.2 计算方法

在这里插入图片描述
Tips:
precision_score, recall_score, f1_score, fbeta_score 这4个函数内部都调用了precision_recall_fscore_support函数进行结果计算。
.

2. 多分类问题

2.1 介绍

Micro-average 微平均

不区分Class,只以预测Label和真实Label是否一致来计算准确率、召回率、F值。

Macro-average 宏平均

分别统计每个Class的准确率、召回率、F值,然后按Class取平均值

Weighted-average 加权平均

分别统计每个Class的准确率、召回率、F值,然后按每个Class的样本数取加权平均值
.

2.2 计算公式

L LL 标签集合
S SS 样本集合
y yy 样本的预测标签集合
y ^ \widehat{y}y 样本的真实标签集合
P ( A , B ) : = ∣ A ∩ B ∣ ∣ A ∣ P(A,B) :=\frac{\vert A\cap B\vert}{\vert A\vert}P(A,B):=AAB
R ( A , B ) : = ∣ A ∩ B ∣ ∣ B ∣ R(A,B):=\frac{\vert A\cap B\vert}{\vert B\vert}R(A,B):=BAB
F β ( A , B ) : = ( 1 + β 2 ) × P ( A , B ) × R ( A , B ) β 2 × P ( A , B ) + R ( A , B ) F_\beta(A,B):=\frac{(1+\beta^2 ) \times P(A,B)\times R(A,B)}{\beta^2\times P(A,B)+R(A,B)}Fβ(A,B):=β2×P(A,B)+R(A,B)(1+β2)×P(A,B)×R(A,B)

AveragePrecisionRecallF_beta
None⟨ P ( y , y ^ ) ∣ l ∈ L ⟩ \langle P(y, \widehat{y}) \vert l \in L\rangleP(y,y)lL⟨ R ( y , y ^ ) ∣ l ∈ L ⟩ \langle R(y, \widehat{y}) \vert l \in L\rangleR(y,y)lL⟨ F β ( y , y ^ ) ∣ l ∈ L ⟩ \langle F_\beta(y, \widehat{y}) \vert l \in L\rangleFβ(y,y)lL
MicroP ( y , y ^ ) P(y, \widehat{y})P(y,y)R ( y , y ^ ) R(y, \widehat{y})R(y,y)F β ( y , y ^ ) F_\beta(y, \widehat{y})Fβ(y,y)
Macro1 ∣ L ∣ ∑ l ∈ L P ( y l , y ^ l ) \frac{1}{\vert L\vert} \sum_{l \in L}P(y_l, \widehat{y}_ l )L1lLP(yl,yl)1 ∣ L ∣ ∑ l ∈ L R ( y l , y ^ l ) \frac{1}{\vert L\vert} \sum_{l \in L}R(y_l, \widehat{y}_ l )L1lLR(yl,yl)1 ∣ L ∣ ∑ l ∈ L F β ( y l , y ^ l ) \frac{1}{\vert L\vert} \sum_{l \in L}F_\beta(y_l, \widehat{y}_ l )L1lLFβ(yl,yl)
Weighted1 ∑ l ∈ L ∣ y ^ l ∣ ∑ l ∈ L ∣ y ^ l ∣ P ( y l , y ^ l ) \frac{1}{ \sum_{l \in L}\vert \widehat{y}_ l\vert} \sum_{l \in L}\vert \widehat{y}_ l\vert P(y_l, \widehat{y}_ l )lLyl1lLylP(yl,yl)1 ∑ l ∈ L ∣ y ^ l ∣ ∑ l ∈ L ∣ y ^ l ∣ R ( y l , y ^ l ) \frac{1}{ \sum_{l \in L}\vert \widehat{y}_ l\vert} \sum_{l \in L}\vert \widehat{y}_ l\vert R(y_l, \widehat{y}_ l )lLyl1lLylR(yl,yl)1 ∑ l ∈ L ∣ y ^ l ∣ ∑ l ∈ L ∣ y ^ l ∣ F β ( y l , y ^ l ) \frac{1}{ \sum_{l \in L}\vert \widehat{y}_ l\vert} \sum_{l \in L}\vert \widehat{y}_ l\vert F_\beta(y_l, \widehat{y}_ l )lLyl1lLylFβ(yl,yl)

来源:scikit-learn 文档

.

2.3 对比

Micro vs Macro

  • 当数据集每个Class的样本量差不多时,Micro和Macro指标不会有太大差别。
  • 当数据集每个Class的样本量悬殊时(非均衡数据集)
    Micro更侧重表现样本量多的Class,Macro更侧重表现样本量较少的Class。
  • Micro和Macro指标出现较大差异:
    当Micro平均大大低于Macro平均时,检查样本量多的Class;
    当Macro平均大大低于Micro平均时,检查样本量少的Class。

.

2.4 计算方法

在这里插入图片描述


版权声明:本文为suian0424原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。