测评DL深度学习模型基础指标总结

在训练一个模型,通常我们会用指标去验证模型的效果,对常见的一些测评指标做一个总结。

1 分类问题

假设一个model预测的结果如下:
在这里插入图片描述

那么怎么评估这个model的效果呢?
首先来看几个基本指标:

  • TP ( true positive):预测正确的正样本 (预测正确)
  • TN ( true negative) : 预测正确的负样本 (预测正确)
  • FP (false positive): 预测错误的正样本 (预测错误)
  • FN (false negative): 预测错误的负样本 (预测错误)

那么我们先来看下,对于每个类别,上图的TP (true positive) 是对角线的绿色格子:
在这里插入图片描述
对于A类,TN (true negative) 如下蓝色格子区域:
在这里插入图片描述
对于A类,FP (false positive) 如下红色格子区域
在这里插入图片描述
对于A类,FN (false negative) 如下橙色格子区域
在这里插入图片描述

1.1 准确率 (Accuracy)

对上面几个基本的指标计算了解后,我们来看下,什么叫准确率。
准确率就是正确预测的样本除以总样本:
A c c = c o r r e c t s u m ( s a m p l e s ) = 9 + 15 + 24 + 15 80 Acc = \frac{correct}{sum(samples)}=\frac{9+15+24+15}{80} Acc=sum(samples)correct=809+15+24+15
准确率在各类样本较平衡的时候,对模型效果的衡量较客观,但是如果类别样本很不平衡,则准确率有可能会误判断模型的表现效果。

1.2 精确率 (Precision)

对于上面的A类计算结果如下:
p r e c i s i o n = T P T P + F P = 9 9 + 6 precision= \frac{TP}{TP+FP}=\frac{9}{9+6} precision=TP+FPTP=9+69

1.3 召回率 (Recall)

对于上面的A类计算结果如下:
r e c a l l = T P T P + F N = 9 9 + 1 recall= \frac{TP}{TP+FN}=\frac{9}{9+1} recall=TP+FNTP=9+19

1.4 F1分值

准确率和召回率整体来说是相互制约的,在实际应用中,如果很在意模型预测的精准度,则需要提高准确率,如果希望尽可能的多召回,则可以提高召回率。而F1分值是精确率和召回率的调和平均数,公式如下:

F 1 = 2 1 r e c a l l + 1 p r e c i s i o n = 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}{\frac{1}{recall}+\frac{1}{precision}} =2*\frac{precision*recall}{precision+recall} F1=recall1+precision12=2precision+recallprecisionrecall

从上面公式可以看出,F1分值越高,则recall和precision都相对越高,只要有一个相对较小,比如recall=0.1, precision=1,则F1=0.18, 算出来的F1分值都较低,所以F1分值较好的平衡了准确率和召回率。

1.5 ROC曲线( Receiver Operating Characteristic)

ROC曲线描述了不同阈值下的二分类器的效果,坐标轴的纵轴为预测正确的正样本率,表示为: T P R   ( T r u e P o s i t i v e R a t e ) = T P T P + F N TPR \text { }(True Positive Rate) = \frac{TP}{TP+FN} TPR (TruePositiveRate)=TP+FNTP
其中横轴为预测错误的负样本率,表示为: F P R   ( F a l s e P o s i t i v e R a t e ) = F P F P + T N FPR \text{ }(False Positive Rate) = \frac{FP}{FP+TN} FPR (FalsePositiveRate)=FP+TNFP
从上面两个公式可以看出,理想的分类器应该是TPR越大,FPR越小,最好的是坐标轴的(0,1)点,此时说明分类器全部预测正确。 为什么说ROC曲线对样本不平衡问题不敏感,因为ROC曲线横轴FPR计算的是负样本预测错误的概率,和正样本的多少无关,所以不平衡不影响ROC曲线横轴值的计算。
接下来让我们看看曲线的点都是怎么计算出来的,为什么说会根据阈值threshold变化,如下表所示:

真实样本y标签 预测的分值 0.0阈值y 0.2阈值y 0.5阈值y 1阈值y
1 0.8 1 1 1 0
0 0.96 1 1 1 0
1 0.4 1 1 0 0
1 0.1 1 0 0 0
0 0.15 1 0 0 0
1 0.7 1 1 1 0

从上表中可以看出,会根据阈值的变化,输出不同的label标签,则相应的指标计算都会发生变化,计算TPR和FPR如下:

不同的阈值 TPR FPR
0.0 4 4 + 0 = 1.0 \frac{4}{4+0}=1.0 4+04=1.0 2 2 + 0 = 1.0 \frac{2}{2+0}=1.0 2+02=1.0
0.2 3 3 + 1 = 0.75 \frac{3}{3+1}=0.75 3+13=0.75 1 1 + 1 = 0.5 \frac{1}{1+1}=0.5 1+11=0.5
0.5 2 2 + 2 = 0.5 \frac{2}{2+2}=0.5 2+22=0.5 1 1 + 1 = 0.5 \frac{1}{1+1}=0.5 1+11=0.5
1 0 0 + 4 = 0 \frac{0}{0+4}=0 0+40=0 0 0 + 2 = 1 \frac{0}{0+2}=1 0+20=1

所以根据不同的阈值,( FPR,TPR)会在坐标轴上的不同的点,(1,0)和(0,1)分别代表了模型在某个特定的阈值情况下,全部预测样本为负样本和全部预测样本为正样本。根据不同阈值得到点描述的图像可能形状如下:

在这里插入图片描述

1.6 AUC曲线(Area Under the Curve)

理解了ROC曲线,那么我们来看下,什么是AUC。AUC是ROC曲线构成的面积,如下图所示,红色和蓝色曲线分别代表了两个模型的ROC曲线,根据ROC曲线构成的面积大小,也就是AUC,红线曲线AUC要比蓝色曲线AUC大,指标效果会更好,从图的点的含义也可以理解,相同的横轴坐标,纵坐标取值越大,说明FPR一样,TPR越大,模型当然表现越好。
在这里插入图片描述
其中绿色虚线形成的三角形面积就是 1 2 \frac{1}{2} 21,一般随机模型效果差不多AUC可以到达0.5,所以我们评估的模型AUC一般是在0.5~1之间,越大效果越好。

2 回归问题

预测的labe是数值类型,则评估指标一般通过数值差距进行度量,主要通过均方误差(MSE)和绝对误差(MSE)进行度量。

2.1 MAE误差

根据真实label值和模型预测的值进行绝对误差评估,值越小,说明模型预测越精准,MAE的数学表达式如下:
M A E = 1 n ∑ j = 1 n ∣ y i − y ^ i ∣ MAE=\frac{1}{n}\sum_{j=1}^n\begin{vmatrix} y_i-\hat{y}_i \end{vmatrix} MAE=n1j=1nyiy^i

2.2 MSE误差

均方误差一样也是评估两个数值的差距,数学表达式如下:
M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 MSE = \frac{1}{N}\sum_{i=1}^N( y_i-\hat{y}_i)^2 MSE=N1i=1N(yiy^i)2

3 排序问题

3.1 向量度量

在排序应用场景中,有些方案用模型对正负样本提取特征向量,通过度量向量之间的距离,来衡量模型是否对正负样本提取的特征有足够的区分性,进而到达排序的目的。
那么用什么指标来评估模型的效果?以下提供一种准确率指标计算方式,比如排序任务中,用triple三元组数据形式作为输入训练模型的,则首先通过计算向量的余弦值计算anchor与正负样本的向量距离,数学公式如下:
L ( r a , r p , r n ) = m a x ( 0 , m + d ( r a , r p ) − d ( r a , r n ) ) L(r_a, r_p, r_n) = max(0, m+d(r_a,r_p)-d(r_a,r_n)) L(ra,rp,rn)=max(0,m+d(ra,rp)d(ra,rn))
其中anchor和negative样本的距离表达为 d ( r a , r n ) d(r_a, r_n) d(ra,rn), anchor和positive的距离表达为 d ( r a , r p ) d(r_a, r_p) d(ra,rp),若 L ( r a , r p , r n ) = 0 L(r_a, r_p, r_n) = 0 L(ra,rp,rn)=0,则为模型预测正确,再通过计算一般的准确率来评估模型的效果。

猜你喜欢

转载自blog.csdn.net/BGoodHabit/article/details/108018939