赞
踩
Some Metrics suitable for machine learning classification model - Confusion Matrix, Precision Score, Recall Score and F1 Score.
本文意在介绍,监督学习(Supervised Learning)中,几个常被用于评估分类模型的指标(model metric),并讨论它们在二分类模型和多分类模型中的具体计算方法。
图 1
混淆矩阵(Confusion Matrix)是一个 n*n 的方阵,n的值等于数据集类别的数量。
如图 2 所示,该 2*2 方阵是一个典型的二分类模型的混淆矩阵,该模型中只有 positive 和 negative 两个类别(标签):
图 2 - 二分类模型的混淆矩阵
TP (True Positive)表示真实值为Positive,模型的预测值为Positive的数据样本数量;
FP (False Positive)表示真实值为Negative,模型的预测值为Positive的数据样本数量;
FN (False Negative)表示真实值为Positive,模型的预测值为Negative的数据样本数量;
TN (True Negative)表示真实值为Negative,模型的预测值为Negative的数据样本数量;
此处的 [True/False Positive/Negative]可以这样理解:“主语” Positive/Negative 描述了模型的预测值,而“形容词” True/False 描述的是预测值与真实值是否一致,一致为True,否则为False。
此外,从【图2】中我们不能发现,混淆矩阵的列(column)表示数据被模型预测的类别(prediction label);混淆矩阵的行(row)表示数据的真实类别(true label)。以及,混淆矩阵每一列的总和表示数据中被模型预测为该类的样本数量;混淆矩阵每一行的总和表示数据中真实标签为该类的样本数量。
上方【图2】是二分类模型的混淆矩阵,下方【图3】将混淆矩阵推广到多分类模型:
图 3 - 多分类模型的混淆矩阵
【图3】为一个n*n的混淆矩阵,该混淆矩阵包含了n个类别(标签),label_1、label_2、… 、label_n ,其中标黄的位置表示被正确分类的样本数量,相当于【图2】中的TP和TN。
查准率(Precision)描述的模型预测的结果中有多少比例的样本是被正确预测的。
对于二分类模型,一般采用Positive(+)的查准率作为整个模型的评估量:
P + = T P T P + F P P_{+} = \frac{TP}{TP + FP} P+=TP+FPTP
类似的,将查准率推广到多分类模型。
首先,每个label都有对应的查准率:
P
l
a
b
e
l
_
k
=
C
k
k
∑
1
≤
i
≤
n
;
j
=
k
C
i
j
,
(
1
≤
k
≤
n
)
P_{label\_k} = \frac{C_{kk}}{\sum_{1 \leq i \leq n; \;j = k} C_{ij}}, \quad(1 \leq k \leq n)
Plabel_k=∑1≤i≤n;j=kCijCkk,(1≤k≤n)
其次,存在两种适用于整个模型的查准率评估量,它们分别是下方【式3】描述的宏查准率(macro precision)和下方【式4】描述的微查准率(micro precision)。
宏查准率,先计算出混淆矩阵中个类别的查准率,然后计算均值。
P m a c r o = 1 n ∑ 1 ≤ k ≤ n P l a b e l _ k P_{macro} = \frac{1}{n} \sum_{1 \leq k \leq n} P_{label\_k} Pmacro=n11≤k≤n∑Plabel_k
微查准率,先对混淆矩阵的“对角线元素”和“列元素的和”计算均值,然后在计算查准率。
P m i c r o = 1 n ∑ 1 ≤ k ≤ n C k k 1 n ∑ 1 ≤ k ≤ n ( ∑ 1 ≤ i ≤ n ; j = k C i j ) P_{micro} = \frac{\frac{1}{n} \sum_{1 \leq k \leq n} C_{kk}}{\frac{1}{n} \sum_{1 \leq k \leq n} (\sum_{1 \leq i \leq n; \;j = k} C_{ij}) } Pmicro=n1∑1≤k≤n(∑1≤i≤n;j=kCij)n1∑1≤k≤nCkk
相比之下,当不同类别间的样本数量不平衡时,微查准率可以涵盖样本数量不均的信息;对于宏查准率而言,每个类别的查准率对整个模型的查准率的贡献量是相同的,所以它无法体现不同类别间样本数量不均的信息。
查全率(Recall)描述的是数据集中有多少比例的样本被模型正确预测。
对于二分类模型,一般采用Positive(+)的查全率作为整个模型的评估量:
R + = T P T P + F N R_{+} = \frac{TP}{TP + FN} R+=TP+FNTP
类似的,将查全率推广到多分类模型。
首先,每个label都有对应的查准率:
R
l
a
b
e
l
_
k
=
C
k
k
∑
i
=
k
;
1
≤
j
≤
n
C
i
j
,
(
1
≤
k
≤
n
)
R_{label\_k} = \frac{C_{kk}}{\sum_{i = k; \;1 \leq j \leq n} C_{ij}}, \quad(1 \leq k \leq n)
Rlabel_k=∑i=k;1≤j≤nCijCkk,(1≤k≤n)
其次,同样存在两种适用于整个模型的查全率评估量,它们分别是下方【式7】描述的宏查全率(macro recall)和下方【式8】描述的微查全率(micro recall)。
宏查全率,先计算出混淆矩阵中个类别的查准率,然后计算均值。
R m a c r o = 1 n ∑ 1 ≤ k ≤ n R l a b e l _ k R_{macro} = \frac{1}{n} \sum_{1 \leq k \leq n} R_{label\_k} Rmacro=n11≤k≤n∑Rlabel_k
微查全率,先对混淆矩阵的对“角线元素”和“行元素的和”计算均值,然后在计算查准率。
R m i c r o = 1 n ∑ 1 ≤ k ≤ n C k k 1 n ∑ 1 ≤ k ≤ n ( ∑ i = k ; 1 ≤ j ≤ n C i j ) R_{micro} = \frac{\frac{1}{n} \sum_{1 \leq k \leq n} C_{kk}}{\frac{1}{n} \sum_{1 \leq k \leq n} (\sum_{i = k; \;1 \leq j \leq n} C_{ij}) } Rmicro=n1∑1≤k≤n(∑i=k;1≤j≤nCij)n1∑1≤k≤nCkk
与宏/微查准率同理,微查全率可以涵盖样本数量不均的信息;宏查全率无法体现不同类别间样本数量不均的信息。
正确率(Accuracy)描述的整个数据集中被正确预测的比例,它的数学表达式如下:
A = T P + T N T P + T N + F P + F N A = \frac{TP + TN}{TP + TN + FP + FN} A=TP+TN+FP+FNTP+TN
A = ∑ 1 ≤ k ≤ n C k k ∑ 1 ≤ i ≤ n ; 1 ≤ j ≤ n C i j A = \frac{\sum_{1 \leq k \leq n} C_{kk}} {\sum_{1 \leq i \leq n; \; 1 \leq j \leq n} C{ij}} A=∑1≤i≤n;1≤j≤nCij∑1≤k≤nCkk
【式9】对应二分类模型的混淆矩阵,【式10】对应多分类模型的混淆矩阵
查准率(Precision)和差全率(Recall)往往是一对矛盾的度量。一般来说,查准率较高时,查全率会较低,而查全率较高时,查准率较低。
我们可以采用一种较为极端的想法来理解这一现象,当模型将数据集中的所有样本都预测为某一特定类别时,该类别的查准率最高(等于1),同时该类别的查全率最低(因为存在大量样本被错误预测)。
为此,常采用F1值来作为模型的评估量,这是一个结合了查准率(Precision)和查全率(Recall)的量:
F 1 m a c r o = 2 × P m a c r o × R m a c r o P m a c r o + R m a c r o F1_{macro} = \frac{2 \times P_{macro} \times R_{macro}}{P_{macro} + R_{macro}} F1macro=Pmacro+Rmacro2×Pmacro×Rmacro
F 1 m i c r o = 2 × P m i c r o × R m i c r o P m i c r o + R m i c r o F1_{micro} = \frac{2 \times P_{micro} \times R_{micro}}{P_{micro} + R_{micro}} F1micro=Pmicro+Rmicro2×Pmicro×Rmicro
【式11】为宏F1值,【式12】为微F1值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。