文章目录
- 0. 数学约定
- 1. 回归型任务
- 2. 分类型任务
0. 数学约定
模型的“好坏”是相对的,取决于算法和数据,也取决于任务需求。
衡量模型的“好坏”的过程叫模型评估,也叫性能度量(performance measure)。
本篇数学约定如下:
- x i \boldsymbol {x}_i xi为样本向量
- f f f为模型
- f ( x ) f(\boldsymbol {x}) f(x)为模型预测结果
- y i y_i yi为样本 x i \boldsymbol {x}_i xi对应的真实结果。
- E ( y i ) E(y_i) E(yi)表示结果集 { y i } \{y_i\} {yi}的期望, E ( y i ) = y ˉ = 1 n ∑ i = 1 n y i E(y_i)=\bar y =\frac{1}{n} \sum_{i=1}^{n}y_i E(yi)=yˉ=n1∑i=1nyi。
- V a r ( y ) Var(y) Var(y)表示y的方差。 V a r ( y ) = E ( ( y i − y ˉ ) 2 ) Var(y)=E((y_i-\bar y)^2 ) Var(y)=E((yi−yˉ)2)
1. 回归型任务
简要总结如下:
评估法 | 函数 | 数学公式 | 说明 |
---|---|---|---|
MSE | mean_squared_error | M S E = 1 n ∑ i = 1 n ( f ( x i ) − y i ) 2 , n 为样本量 MSE=\frac{1}{n}\sum_{i=1}^{n}(f(\boldsymbol x_i)-y_i)^2,n为样本量 MSE=n1i=1∑n(f(xi)−yi)2,n为样本量 | MSE即预测误差的数学期望,是最常用的一个性能度量方法。 |
R 2 {R^2} R2 | r2_score | R 2 = 1 − ∑ i = 1 n ( f ( x i ) − y i ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2=1-\frac{\sum_{i=1}^{n}(f(\boldsymbol x_i)-y_i)^2}{\sum_{i=1}^{n}(y_i-\bar y)^2} R2=1−∑i=1n(yi−yˉ)2∑i=1n(f(xi)−yi)2 | 【维基百科:】在统计学中用于度量应变数的变异中可由自变量解释部分所占的比例,以此来判断回归模型的解释力。 |
MAE | mean_absolute_error | M S E = 1 n ∑ i = 1 n ∣ f ( x i ) − y i ∣ MSE=\frac{1}{n}\sum_{i=1}^{n}|f(\boldsymbol x_i)-y_i| MSE=n1i=1∑n∣f(xi)−yi∣ | |
MSLE | mean_squared_log_error | M S L E = 1 n ∑ i = 1 n ( l o g e ( 1 + f ( x i ) ) − l o g e ( 1 + y i ) ) 2 MSLE=\frac{1}{n}\sum_{i=1}^{n}(log_e(1+f(\boldsymbol x_i))-log_e(1+y_i))^2 MSLE=n1i=1∑n(loge(1+f(xi))−loge(1+yi))2 | 该指标最适合用于具有指数增长的目标,例如人口数量、商品在几年内的平均销售额等。请注意,该指标对低估的估计值比高估的估计值的惩罚更大。 |
MAPE | mean_absolute_percentage_error | M A P E = 1 n ∑ i = 1 n ∣ f ( x i ) − y i ∣ max ( ϵ , ∣ y i ∣ ) MAPE=\frac{1}{n}\sum_{i=1}^{n}\frac{|f(\boldsymbol x_i)-y_i|}{\max(\epsilon,|y_i|)} MAPE=n1i=1∑nmax(ϵ,∣yi∣)∣f(xi)−yi∣ | MSLE会忽略小幅度值,只反映最高幅度值的预测误差。但是这个问题在 MAPE 的情况下得到了解决,因为它计算了相对于实际输出的相对百分比误差。 |
MedAE | median_absolute_error | M e d A E = m e d i a n ( ∣ f ( x 1 ) − y 1 ∣ , ∣ f ( x 2 ) − y 2 ∣ , ⋯ , ∣ f ( x n ) − y n ∣ ) MedAE=median(|f(\boldsymbol x_1)-y_1|,|f(\boldsymbol x_2)-y_2|,\cdots,|f(\boldsymbol x_n)-y_n|) MedAE=median(∣f(x1)−y1∣,∣f(x2)−y2∣,⋯,∣f(xn)−yn∣) | MedAE它对异常值具有鲁棒性。损失是通过取目标和预测之间的所有绝对差的中值来计算的。 |
MaxError | max_error | M a x E r r o r = max ( ∣ f ( x i ) − y i ∣ ) Max Error=\max(|f(\boldsymbol x_i)-y_i|) MaxError=max(∣f(xi)−yi∣) | |
EVS | explained_variance_score | E V S = 1 − V a r ( y i − f ( x i ) ) V a r ( y i ) EVS =1-\frac{Var(y_i-f(\boldsymbol x_i))}{Var(y_i)} EVS=1−Var(yi)Var(yi−f(xi)) | E V S EVS EVS和 R 2 {R^2} R2得分之间的差异: R 2 {R^2} R2是当 E V S EVS EVS不考虑预测中的系统偏移时的情况。出于这个原因, R 2 {R^2} R2通常应该是首选。 |
MTDE | mean_tweedie_deviance | M T D E = 1 n ∑ i = − 1 n { ( f ( x i ) − y ) 2 , p = 0 2 ( y i l o g ( y i f ( x i ) ) + f ( x i ) − y i ) , p = 1 2 ( l o g ( f ( x i ) y i ) + y i f ( x i ) − 1 ) , p = 2 2 ( max ( y i , 0 ) 2 − p ( 1 − p ) ( 2 − p ) − y i f ( x i ) 1 − p 1 − p + f ( x i ) 2 − p 2 − p ) , 其他 \def\bsl{\boldsymbol}MTDE=\frac{1}{n}\sum_{i=-1}^n\begin{cases}(f(\bsl x_i)-y)^2 &,p=0\\2(y_i log(\frac{y_i}{f(\bsl x_i)})+f(\bsl x_i)- y_i) &,p=1\\2(log(\frac{f(\bsl x_i)}{y_i})+\frac{y_i}{f(\bsl x_i)}-1) &,p=2\\2(\frac{\max(y_i,0)^{2-p}}{(1-p)(2-p)}-\frac{y_if(\bsl x_i)^{1-p}}{1-p}+\frac{f(\bsl x_i)^{2-p}}{2-p}) &,其他\\\end{cases} MTDE=n1i=−1∑n⎩ ⎨ ⎧(f(xi)−y)22(yilog(f(xi)yi)+f(xi)−yi)2(log(yif(xi))+f(xi)yi−1)2((1−p)(2−p)max(yi,0)2−p−1−pyif(xi)1−p+2−pf(xi)2−p),p=0,p=1,p=2,其他 | 深度理解这个偏差是比较困难的,我们只要简单的了解p越大,求和时真实目标和预测目标之间的极端偏差的权重就越小。 |
pinball | mean_pinball_loss | p i n b a l l = 1 n ∑ i = 1 n α max ( ( y i − f ( x i ) ) , 0 ) + ( 1 − α ) max ( ( f ( x i ) − y i ) , 0 ) pinball=\frac{1}{n}\sum_{i=1}^{n}\alpha\max((y_i-f(\boldsymbol x_i)),0)+(1-\alpha)\max((f(\boldsymbol x_i)-y_i),0) pinball=n1i=1∑nαmax((yi−f(xi)),0)+(1−α)max((f(xi)−yi),0) | 可用于构造评分器,再通过交叉验证评估分位数回归模型的泛化性能,见示例 |
D 2 D^2 D2 score | 略 | 略 | 比较难理解,少见,略 |
可通过sklearn.metrics
的Regression metrics(官方说明) 调用。
1.1 MSE(西瓜书只介绍了这种)
最常用的评估方法是MSE(mean squared error),即均方误差:
M
S
E
=
1
n
∑
i
=
1
n
(
f
(
x
i
)
−
y
i
)
2
,
n
为样本量
MSE=\frac{1}{n}\sum_{i=1}^{n}(f(\boldsymbol x_i)-y_i)^2,n为样本量
MSE=n1i=1∑n(f(xi)−yi)2,n为样本量
MSE即预测误差的数学期望,是最常用的一个性能度量方法。
1.2 R 2 \boldsymbol {R^2} R2
R
2
{R^2}
R2叫可决系数(coefficient of determination),或测定系数、决定系数。
R
2
=
1
−
∑
i
=
1
n
(
f
(
x
i
)
−
y
i
)
2
∑
i
=
1
n
(
y
i
−
y
ˉ
)
2
R^2=1-\frac{\sum_{i=1}^{n}(f(\boldsymbol x_i)-y_i)^2}{\sum_{i=1}^{n}(y_i-\bar y)^2}
R2=1−∑i=1n(yi−yˉ)2∑i=1n(f(xi)−yi)2
其中,
y
ˉ
=
1
n
∑
i
=
1
n
y
i
\bar y =\frac{1}{n} \sum_{i=1}^{n}y_i
yˉ=n1∑i=1nyi ,即平均真实值。
作用:
【维基百科:】在统计学中用于度量应变数的变异中可由自变量解释部分所占的比例,以此来判断回归模型的解释力。
1.3 MAE
平均绝对误差,MAE(mean absolute error):
M
S
E
=
1
n
∑
i
=
1
n
∣
f
(
x
i
)
−
y
i
∣
,
n
为样本量
MSE=\frac{1}{n}\sum_{i=1}^{n}|f(\boldsymbol x_i)-y_i|,n为样本量
MSE=n1i=1∑n∣f(xi)−yi∣,n为样本量
1.4 MSLE
均方对数误差,MSLE(mean_squared_log_error):
M
S
L
E
=
1
n
∑
i
=
1
n
(
l
o
g
e
(
1
+
f
(
x
i
)
)
−
l
o
g
e
(
1
+
y
i
)
)
2
,
n
为样本量
MSLE=\frac{1}{n}\sum_{i=1}^{n}(log_e(1+f(\boldsymbol x_i))-log_e(1+y_i))^2,n为样本量
MSLE=n1i=1∑n(loge(1+f(xi))−loge(1+yi))2,n为样本量
该指标最适合用于具有指数增长的目标,例如人口数量、商品在几年内的平均销售额等。请注意,该指标对低估的估计值比高估的估计值的惩罚更大。
1.5 MAPE
平均绝对百分比误差, MAPE( mean_absolute_percentage_error):
M
A
P
E
=
1
n
∑
i
=
1
n
∣
f
(
x
i
)
−
y
i
∣
max
(
ϵ
,
∣
y
i
∣
)
,
n
为样本量
MAPE=\frac{1}{n}\sum_{i=1}^{n}\frac{|f(\boldsymbol x_i)-y_i|}{\max(\epsilon,|y_i|)},n为样本量
MAPE=n1i=1∑nmax(ϵ,∣yi∣)∣f(xi)−yi∣,n为样本量
ϵ
\epsilon
ϵ是一个任意小的但严格为正的数,以避免当 y 为零时出现未定义的结果。MSLE会忽略小幅度值,只反映最高幅度值的预测误差。但是这个问题在 MAPE 的情况下得到了解决,因为它计算了相对于实际输出的相对百分比误差。
1.6 MedAE
中值绝对误差,MedAE(median_absolute_error),
M
e
d
A
E
=
m
e
d
i
a
n
(
∣
f
(
x
1
)
−
y
1
∣
,
∣
f
(
x
2
)
−
y
2
∣
,
⋯
,
∣
f
(
x
n
)
−
y
n
∣
)
MedAE=median(|f(\boldsymbol x_1)-y_1|,|f(\boldsymbol x_2)-y_2|,\cdots,|f(\boldsymbol x_n)-y_n|)
MedAE=median(∣f(x1)−y1∣,∣f(x2)−y2∣,⋯,∣f(xn)−yn∣)
MedAE它对异常值具有鲁棒性。损失是通过取目标和预测之间的所有绝对差的中值来计算的。
1.7 MaxError
最大误差, Max Error(max_error)
M
a
x
E
r
r
o
r
=
max
(
∣
f
(
x
i
)
−
y
i
∣
)
Max Error=\max(|f(\boldsymbol x_i)-y_i|)
MaxError=max(∣f(xi)−yi∣)
这是一个衡量预测值和真实值之间最坏情况误差的指标
1.8 EVS
解释方差分数,EVS explained_variance_score:
E
V
S
=
1
−
V
a
r
(
y
i
−
f
(
x
i
)
)
V
a
r
(
y
i
)
EVS =1-\frac{Var(y_i-f(\boldsymbol x_i))}{Var(y_i)}
EVS=1−Var(yi)Var(yi−f(xi))
E
V
S
EVS
EVS和
R
2
{R^2}
R2得分之间的差异:
R
2
{R^2}
R2是当
E
V
S
EVS
EVS不考虑预测中的系统偏移时的情况。出于这个原因,
R
2
{R^2}
R2通常应该是首选。
1.9 MTDE
平均Tweedie偏差,MTDE(mean_tweedie_deviance),由超参数p控制:
M
T
D
E
=
1
n
∑
i
=
−
1
n
{
(
f
(
x
i
)
−
y
)
2
,
p
=
0
2
(
y
i
l
o
g
(
y
i
f
(
x
i
)
)
+
f
(
x
i
)
−
y
i
)
,
p
=
1
2
(
l
o
g
(
f
(
x
i
)
y
i
)
+
y
i
f
(
x
i
)
−
1
)
,
p
=
2
2
(
max
(
y
i
,
0
)
2
−
p
(
1
−
p
)
(
2
−
p
)
−
y
i
f
(
x
i
)
1
−
p
1
−
p
+
f
(
x
i
)
2
−
p
2
−
p
)
,
其他
\def\bsl{\boldsymbol} MTDE=\frac{1}{n}\sum_{i=-1}^n\begin{cases} (f(\bsl x_i)-y)^2 &,p=0\\ 2(y_i log(\frac{y_i}{f(\bsl x_i)})+f(\bsl x_i)- y_i) &,p=1\\ 2(log(\frac{f(\bsl x_i)}{y_i})+\frac{y_i}{f(\bsl x_i)}-1) &,p=2\\ 2(\frac{\max(y_i,0)^{2-p}}{(1-p)(2-p)}-\frac{y_if(\bsl x_i)^{1-p}}{1-p}+\frac{f(\bsl x_i)^{2-p}}{2-p}) &,其他\\ \end{cases}
MTDE=n1i=−1∑n⎩
⎨
⎧(f(xi)−y)22(yilog(f(xi)yi)+f(xi)−yi)2(log(yif(xi))+f(xi)yi−1)2((1−p)(2−p)max(yi,0)2−p−1−pyif(xi)1−p+2−pf(xi)2−p),p=0,p=1,p=2,其他
深度理解这个偏差是比较困难的,我们只要简单的了解p越大,求和时真实目标和预测目标之间的极端偏差的权重就越小。
举个例子:
>>> from sklearn.metrics import mean_tweedie_deviance
>>> mean_tweedie_deviance([1.0], [1.5], power=0)
0.25
>>> mean_tweedie_deviance([100.], [150.], power=0)
2500.0
>>> mean_tweedie_deviance([1.0], [1.5], power=1)
0.18...
>>> mean_tweedie_deviance([100.], [150.], power=1)
18.9...
>>> mean_tweedie_deviance([1.0], [1.5], power=2)
0.14...
>>> mean_tweedie_deviance([100.], [150.], power=2)
0.14...
可以看到
y
=
1.0
,
f
(
x
)
=
1.5
y=1.0,f(\boldsymbol x)=1.5
y=1.0,f(x)=1.5 和
y
=
100
,
f
(
x
)
=
150
y=100,f(\boldsymbol x)=150
y=100,f(x)=150,随着p变大,MTDE趋近相同。
所以, 从这个角度看,MTDE有点类似MAPE的感觉。
1.10 pinball
弹球损失,pinball loss (mean_pinball_loss):
p
i
n
b
a
l
l
=
1
n
∑
i
=
1
n
α
max
(
(
y
i
−
f
(
x
i
)
)
,
0
)
+
(
1
−
α
)
max
(
(
f
(
x
i
)
−
y
i
)
,
0
)
pinball=\frac{1}{n}\sum_{i=1}^{n}\alpha\max((y_i-f(\boldsymbol x_i)),0)+(1-\alpha)\max((f(\boldsymbol x_i)-y_i),0)
pinball=n1i=1∑nαmax((yi−f(xi)),0)+(1−α)max((f(xi)−yi),0)
α
=
0
,
5
\alpha=0,5
α=0,5时,pinball等于MAE。
可用于构造评分器,再通过交叉验证评估分位数回归模型的泛化性能,见示例。
1.11 D 2 D^2 D2 score
比较少见,比较难懂,省略。有兴趣自行查看,官方。
2. 分类型任务
2.0 错误率和精度
e
r
r
o
r
_
r
a
t
e
=
1
n
∑
i
=
1
n
(
f
(
x
i
)
≠
y
i
时取值
1
)
,
n
为样本量
error\_rate=\frac{1}{n}\sum_{i=1}^{n}(f(\boldsymbol x_i)\neq y_i时取值1),n为样本量
error_rate=n1i=1∑n(f(xi)=yi时取值1),n为样本量
a
c
c
u
r
a
c
y
_
r
a
t
e
=
1
−
e
r
r
o
r
_
r
a
t
e
=
1
n
∑
i
=
1
n
(
f
(
x
i
)
=
y
i
时取值
1
)
,
n
为样本量
accuracy\_rate=1-error\_rate=\frac{1}{n}\sum_{i=1}^{n}(f(\boldsymbol x_i)= y_i时取值1),n为样本量
accuracy_rate=1−error_rate=n1i=1∑n(f(xi)=yi时取值1),n为样本量
2.1 混淆矩阵
首先,针对二分类型的任务,介绍下混淆矩阵(confusion matrix),因为较多的评估指标,都是基于混淆矩阵设计的。假设二分类类别为1和0,我们将1作为正类(positive)和0作为负类(negative),则所有样本分类的结果有4种,表格如下:
预测值1 | 预测值0 | 合计 | |
---|---|---|---|
真实值1 | TP | FN | 真实为1的总数:TP+FN |
真实值0 | FP | TN | 真实为0的总数:FP+TN |
合计 | 预测为1的总数:TP+FP | 预测为0的总数:FN+TN | 总样本数=总预测数=总真实数=TP+FP+FN+TN |
注意行列合计的含义。
说明:
- TP(True Positive): 真正类。 真实为1,预测也为1
- FN(False Negative): 假负类。真实为1,预测为0
- FP(False Positive): 假正类。真实为0,预测为1
- TN(True Negative): 真负类。真实为0,预测也为0
2.2 初阶:precision、recall、sensitivity、specificity、TPR、TNR、FPR、NPV、PPV
预测值1 | 预测值0 | 预测正确的比例 | |
---|---|---|---|
真实值1 | TP=20 | FN=180 | r e c a l l \color{blue}{recall} recall ( 查全率、 (查全率、 (查全率、 T P R \color{red}TPR TPR ) = 1 预测正确数 真实为 1 的总数 = T P T P + F N )=\frac{1预测正确数}{真实为1的总数}=\frac{TP}{TP+FN} )=真实为1的总数1预测正确数=TP+FNTP |
真实值0 | FP=10 | TN=1820 |
s
p
e
c
i
f
i
c
i
t
y
(
特异度、
T
N
R
)
=
0
预测正确数
真实为
0
的总数
=
T
N
F
P
+
T
N
specificity(特异度、TNR)=\frac{0预测正确数}{真实为0的总数}=\frac{TN}{FP + TN}
specificity(特异度、TNR)=真实为0的总数0预测正确数=FP+TNTN F P R \color{red}FPR FPR = 1 − T N R = F P F P + T N = 1- TNR =\frac{FP}{FP + TN} =1−TNR=FP+TNFP |
预测正确的比例 | p r e c i s i o n \color{blue}precision precision ( 查准率、 P P V ) = 1 预测正确数 预测为 1 的总数 = T P T P + F P (查准率、PPV)=\frac{1预测正确数}{预测为1的总数}=\frac{TP}{TP+FP} (查准率、PPV)=预测为1的总数1预测正确数=TP+FPTP | N P V = T N F N + T N NPV=\frac{TN}{FN+TN} NPV=FN+TNTN |
T
P
R
\color{red}TPR
TPR和
F
P
R
\color{red}FPR
FPR构成
R
O
C
\color{red}ROC
ROC曲线 p r e c i s i o n \color{blue}precision precision和 r e c a l l \color{blue}recall recall构成 P - R \color{blue}P\raisebox{0mm}{-}R P-R曲线 |
注意1:各指标的分子,和前面混淆矩阵合计一样。各值可自行计算看看。
注意2:最重要的是recall和precision,后续计算中分别用
R
R
R和
P
P
P表示。
等价命名和作用:
- recall:召回率、查全率、sensitivity( 敏感度)、真正率TPR(True positive rate)=TP/ (TP+ FN),通常用 R R R表示。一般情况下,Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。特别的,如果一个系统,更关心真实正样本不被漏掉,则要求查全率更高(如预测对象是否为罪犯的系统)。
- precision: 正确率、准确率、查准率,通常用 P P P表示,PPV:正预测(Positive predictive value)=TP / (TP + FP)。一般情况下,查准率越高,说明模型的效果越好。特别的,如果一个系统,更关心预测正样本要准确,则要求查准率更高(如预测用户是否喜欢某个推送消息的系统,可减少对用户的打扰)。
- specificity: 特异度、真负率TNR(True negative rate)= TN / (FP + TN)
- FPR:假正率(FPR,false positive rate) = 1- TNR = FP/(FP+TN),由于我们比较关心正样本,所以需要查看有多少负样本被错误地预测为正样本,所以使用(1-特异度),而不是特异度。
- NPV:负预测(Negative predictive value)=TN / (FN + TN)
性质:
- P P P和 R R R通常会相互矛盾。一个值变大的同时,另一个值往往比较小,只有在一些简单的任务中, P P P和 R R R才会都比较高。
2.3 中阶1:Accuracy、 F 1 F_1 F1-score、 F β F_\beta Fβ-score、macro、micro
一般情况下,这些值越大,说明模型的效果越好。
2.3.1 Accuracy
按章节2.0的定义可知,精度Accuracy为:
A
C
C
=
预测正确数
总样本数
=
T
P
+
T
N
T
P
+
F
P
+
F
N
+
T
N
ACC=\frac{预测正确数}{总样本数}=\frac{TP+TN}{TP+FP+FN+TN}
ACC=总样本数预测正确数=TP+FP+FN+TNTP+TN
2.3.2 F 1 F_1 F1-score
综合考虑
P
P
P和
R
R
R得到的一个分数:
F
1
=
2
P
⋅
R
P
+
R
F_1=2\frac{P\cdot R}{P+R}
F1=2P+RP⋅R
2.3.3 F β F_\beta Fβ-score
F
1
F_1
F1中
P
P
P和
R
R
R重要性一样,在前面
P
P
P和
R
R
R的介绍中,我们知道不同系统对
P
P
P和
R
R
R的关注度是不同的,这就引申出了
F
β
F_\beta
Fβ-score:
F
β
=
(
1
+
β
2
)
P
⋅
R
β
2
P
+
R
F_\beta=\frac{(1+\beta^2)P\cdot R}{\beta^2P+R}
Fβ=β2P+R(1+β2)P⋅R
β
=
1
\beta=1
β=1时为
F
1
F_1
F1-score。
β
>
1
\beta\gt 1
β>1时查全率
R
R
R有更大影响,
β
<
1
\beta\lt 1
β<1时查准率
P
P
P有更大影响。
说明,F值是用到调和平均:
1
F
β
=
1
(
1
+
β
2
)
(
1
P
+
β
2
R
)
\frac{1}{F_\beta}=\frac{1}{(1+\beta^2)}(\frac{1}{P}+\frac{\beta^2}{R})
Fβ1=(1+β2)1(P1+Rβ2)
调和平均更重视较小值。考虑极限情况
β
→
+
∞
\beta \rightarrow +\infty
β→+∞时,
1
F
β
\frac{1}{F_\beta}
Fβ1只和
1
R
\frac{1}{R}
R1有关,
β
→
0
\beta \rightarrow 0
β→0时,
1
F
β
\frac{1}{F_\beta}
Fβ1只和
1
P
\frac{1}{P}
P1有关。
2.3.4 macro、micro
当我们由多个二分类混淆矩阵的时候,可能来自
- 多次训练/测试
- 在多个数据集上训练/测试
- 多分类任务,每两两类别组合都对应一个混淆矩阵
假设一共有n组
{
(
P
i
,
R
i
)
}
\{(P_i,R_i)\}
{(Pi,Ri)},我们希望估计算法的“全能”性能时,就要用到macro性能:
{
m
a
c
r
o
-
P
=
1
n
∑
i
=
1
n
P
i
m
a
c
r
o
-
R
=
1
n
∑
i
=
1
n
R
i
m
a
c
r
o
-
F
1
=
2
m
a
c
r
o
-
P
⋅
m
a
c
r
o
-
R
m
a
c
r
o
-
P
+
m
a
c
r
o
-
R
\def\dh{\raisebox{0mm}{-}} \begin{cases} macro \dh P=\frac{1}{n}\sum_{i=1}{n}P_i\\ macro \dh R=\frac{1}{n}\sum_{i=1}{n}R_i\\ macro \dh F_1=2\frac{macro \dh P\cdot macro \dh R}{macro \dh P+macro \dh R} \end{cases}
⎩
⎨
⎧macro-P=n1∑i=1nPimacro-R=n1∑i=1nRimacro-F1=2macro-P+macro-Rmacro-P⋅macro-R
也可以根据
{
(
P
i
,
R
i
)
}
\{(P_i,R_i)\}
{(Pi,Ri)}先计算各
T
P
、
F
P
、
T
N
、
F
N
TP、FP、TN、FN
TP、FP、TN、FN的平均值
T
P
‾
、
F
P
‾
、
T
N
‾
、
F
N
‾
\overline{TP}、\overline{FP}、\overline{TN}、\overline{FN}
TP、FP、TN、FN,得到micro性能:
{
m
i
c
r
o
-
P
=
T
P
‾
T
P
‾
+
F
N
‾
m
i
c
r
o
-
R
=
1
n
∑
i
=
1
n
R
i
m
i
c
r
o
-
F
1
=
2
m
i
c
r
o
-
P
⋅
m
i
c
r
o
-
R
m
i
c
r
o
-
P
+
m
i
c
r
o
-
R
\def\dh{\raisebox{0mm}{-}} \begin{cases} micro \dh P=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}\\ micro \dh R=\frac{1}{n}\sum_{i=1}{n}R_i\\ micro \dh F_1=2\frac{micro \dh P\cdot micro \dh R}{micro \dh P+micro \dh R} \end{cases}
⎩
⎨
⎧micro-P=TP+FNTPmicro-R=n1∑i=1nRimicro-F1=2micro-P+micro-Rmicro-P⋅micro-R
可类似地定义出 m a c r o - F β 和 m i c r o - F β macro \raisebox{0mm}{-} F_\beta和 micro \raisebox{0mm}{-} F_\beta macro-Fβ和micro-Fβ,略。
2.4 中阶2:P-R、ROC、AUC、Precision@N、Recall@N
2.4.1 P-R
曲线的画法:二分类问题中,我们一般有个阈值(thredshold,记为
t
h
r
thr
thr),当预测概率大于阈值
t
h
r
thr
thr,则预测为正,否则预测为负。这样不同的阈值
t
h
r
thr
thr都会产生一组
(
P
t
h
r
,
R
t
h
r
)
(P_{thr},R_{thr})
(Pthr,Rthr),把
t
h
r
thr
thr从
100
%
100\%
100%以一定的步长降到
0
%
0\%
0%,则可得到一系列
(
P
t
h
r
,
R
t
h
r
)
(P_{thr},R_{thr})
(Pthr,Rthr),就可以画出一条P-R曲线。
曲线画法2:在推荐问题中,通常模型返回的是一组推荐列表,没有一个确定的阈值来把预测结果直接判定为正样本或负样本,而是采用 Top N 排序结果的精确率(Precision@N)和召回率(Recall@N)来衡量排序模型的性能。具体操作,就是认为模型排序的前 N 个结果就是模型判定的正样本,然后分别计算 Precision@N 和 Recall@N。而ROC曲线则可以通过取不同的N画出来。(本质上,不同N对应的也是不同的预测得分阈值,因为返回结果都会按得分从高到底排列。只不过对于不同的用户,返回列表的得分可能差异很大,不合适用一个固定的得分作为阈值,而是用Top N 这样的方法)。
A、B、C表示三个不同算法画出的P-R曲线。
模型选择:
- 如果一个模型的P-R曲线完全被另一个模型的曲线保住,则另一个好,如C、B中B好。
- 如果模型有交叉,如A、B,则不一定哪个好,看系统更关注且阈值设置为什么。例如,如果系统更关注查全率,则thr为1%时的B比A更好。
- 通常情况,不好比较的时候,比较平衡点,平衡点表示查全率和查准率都比较高的情况。所以平衡点离原点越远的越好,A>B>C。
- 但是,P-R曲线一般不需要用来选择模型了,前面讲的F-score能很好地完成P和R两个维度下的模型选择。
极限情况: t h r = 0 % thr=0\% thr=0%,100个样本,80个1,20个0,预测值都为1,则:
预测值1 | 预测值0 | 合计 | |
---|---|---|---|
真实值1 | TP=80 | FN=0 | R = T P T P + F N = 100 % R=\frac{TP}{TP+FN}=100\% R=TP+FNTP=100% |
真实值0 | FP=20 | TN=0 | |
合计 | P = T P T P + F P = 80 % P=\frac{TP}{TP+FP}=80\% P=TP+FPTP=80% |
极限情况: t h r = 100 % thr=100\% thr=100%,100个样本,80个1,20个0,预测值几乎都为0,则:
预测值1 | 预测值0 | 合计 | |
---|---|---|---|
真实值1 | TP=1 | FN=79 | R = T P T P + F N = 1.25 % R=\frac{TP}{TP+FN}=1.25\% R=TP+FNTP=1.25% |
真实值0 | FP=0 | TN=20 | |
合计 | P = T P T P + F P = 100 % P=\frac{TP}{TP+FP}=100\% P=TP+FPTP=100% |
2.4.2 ROC、AUC
曲线的画法:同P-R,只不过ROC曲线横轴为假正率(FPR) = 1- TNR = FP/(FP+TN),纵轴为查全率,也叫真正率(TPR)=TP/ (TP+ FN)。
模型选择:
- 如果一个模型的ROC曲线完全被另一个模型的曲线保住,则另一个好。
- 如果模型有交叉,则不能很好的选择。
- 通常情况,不好比较的时候,比较ROC下面的面积大小,这个面积就是AUC。
极限情况: t h r = 0 % thr=0\% thr=0%,100个样本,80个1,20个0,预测值都为1,则:
预测值1 | 预测值0 | 合计 | |
---|---|---|---|
真实值1 | TP=80 | FN=0 | T P R = R = T P T P + F N = 100 % TPR=R=\frac{TP}{TP+FN}=100\% TPR=R=TP+FNTP=100% |
真实值0 | FP=20 | TN=0 | F P R = F P F P + T N = 100 % FPR=\frac{FP}{FP + TN}=100\% FPR=FP+TNFP=100% |
合计 |
极限情况: t h r = 100 % thr=100\% thr=100%,100个样本,80个1,20个0,预测值几乎都为0,则:
预测值1 | 预测值0 | 合计 | |
---|---|---|---|
真实值1 | TP=1 | FN=79 | R = T P T P + F N = 1.25 % R=\frac{TP}{TP+FN}=1.25\% R=TP+FNTP=1.25% |
真实值0 | FP=0 | TN=20 | F P R = F P F P + T N = 0 % FPR=\frac{FP}{FP + TN}=0\% FPR=FP+TNFP=0% |
合计 |
2.5 中阶3:平均精度均值MAP(Mean Average Precision)
平均精度均值 mAP(mAP,mean average precision),它除了在推荐系统中比较常用,在信息检索领域也很常用。mAP 其实是对平均精度(AP,average precision)的再次平均。
平均精度(AP):假设,推荐系统对某一用户测试集的排序结果是 1, 0, 0, 1, 1, 1。其中,1 代表正样本,0 代表负样本。接下来,按照前面提过的绘图方法2,计算这个序列中每个位置上的 precision@N:
计算平均精度 AP 的时候,我们只取正样本处的 precision 进行平均,根据得到的表格 AP =(1/1 + 2/4 + 3/5 + 4/6)/4 = 0.6917。
mAP:如果对测试集中的每个用户都进行样本排序,那么每个用户都会计算出一个 AP 值,再对所有用户的 AP 值进行平均,就得到了 mAP。也就是说,mAP 是对精确度平均的平均。
注意,mAP 的计算方法和 P-R 曲线、ROC 曲线的计算方法是完全不同的,因为 mAP 需要对每个用户的样本进行分用户排序,而 P-R 曲线和 ROC 曲线均是对全量测试样本进行排序。
2.6 中阶4:平均倒数排名MRR (Mean Reciprocal Rank)
tf平价指标:https://tensorflow.google.cn/api_docs/python/tf/keras/metrics
参考:
《西瓜书》
混淆矩阵(Confusion Matrix)
机器学习笔记 混淆矩阵(Confusion Matrix)
信息检索-评价指标
wiki-平均倒数排名MRR