评价模型的标准
在根据具体的问题实现一个模型后,我们需要对它的性能进行度量,但是在对比不同模型的能力时,使用不同的性能度量方式往往会导致不同的评判结果,这意味着模型的好坏是相对的。所以我们需要根据具体的需求,选择合适的度量方式。下面给出几种模型评估中常用的度量方式,希望大家可以有一个基本的了解。
分类准确率(Classification Accuracy)
分类的准确率表示了预测正确的样本数占总样本数的比例,数学定义如下:
A c c u r a c y = N u m b e r o f C o r r e c t p r e d i c t i o n s T o t a l n u m e r o f p r e d i c t i o n s m a d e Accuracy=\frac{Number\ of\ Correct\ predictions}{Total\ numer\ of\ predictions\ made} Accuracy=Total numer of predictions madeNumber of Correct predictions
它只适用于每一个类别的数目相等的情况下,当存在类别不平衡问题时,无法正常工作。
对数损失(Logarithmic Loss)
它适用于多分类问题,它会为所有样本中的每一个类给定一个概率。假如由N个样本包含M个类别,则对数损失定义如下:
L o g a r i t h m i c L o s s = − 1 N ∑ i = 1 N ∑ j = 1 M y i j ∗ l o g ( p i j ) LogarithmicLoss=\frac{-1}{N} \sum_{i=1}^N \sum_{j=1}^M y_{ij}\ast log(p_{ij}) LogarithmicLoss=N−1i=1∑Nj=1∑Myij∗log(pij)
其中 y i j y_{ij} yij 表示第 i i i 个样本是否属于第 j j j 类; p i j p_{ij} pij 表示第 i i i 个样本属于第 j j j 类的概率值。
对数损失的取值范围为 [ 0 , ∞ ] [0,\infty] [0,∞] ,它的值越接近0表示越高的精度。
混淆矩阵(Confusion Matrix)
混淆矩阵给出了一个矩阵作为输出,并描述了模型的完整性能。假设一个二分类问题,它只有是和否两个类别,将其输入到分类器中就可以预测输入样本的类别,我们有165个样本,结果如下所示:
| Predicted : NO | Predicted:YES | |
|---|---|---|
| Actual NO: | 50 | 10 |
| Actual YES: | 5 | 100 |
- 真阳性(True Positives):真实类别和预测类别都是YES
- 真阴性(True Negatives):真实类别和预测类别都是NO
- 假阳性(False Positives):真实类别是NO,预测类别是YES
- 假阴性(False Negatives):真实类别是YES。预测类别是NO
矩阵的精度可以通过取横过“主对角线”的值的平均值来计算,如下所示:
A c c u r a c y = T r u e P o s i t i v e s + F a l s e N e g a t i v e s T o t a l N u m b e r o f S a m p l e s = 100 + 50 165 = 0.91 Accuracy=\frac{TruePositives+FalseNegatives}{Total\ Number\ of\ Samples}=\frac{100+50}{165}=0.91 Accuracy=Total Number of SamplesTruePositives+FalseNegatives=165100+50=0.91
ROC和AUC
在基本的二分类问题中,我们的输出如果只有0、1,则1表示正类,0表示反类。但是在很多分类问题中,并不是直接给出0、1,而是给出属于某个类的概率值,它需要跟提前设定好的阈值进行比较,大于阈值则为正类,小于阈值则为反类。因此在根据输出值对样本进行排序后,使用不同的阈值就会有不同的效果。如果我们希望查的准,则在靠前的位置设定阈值;如果希望查的全一些,就在靠后的位置设定阈值。
因此对样本排序质量的好坏,体现了综合考虑模型在不同任务下的期望泛化性能的的好坏,ROC(Receiver Operating Characteristic)曲线就是从上面的这个角度研究模型的泛化性能。
在定义它的表达式之前,让我们先了解两个基本术语:
- 真阳率(True Positive Rate)
T r u e P o s i t i v e R a t e = T P F N + T P True\ Positive\ Rate=\frac{TP}{FN+TP} True Positive Rate=FN+TPTP
真阳性率对应于正确认为为正的阳性数据点占所有阳性数据点的比例。 - 假阳率(False Positive Rate)
F a l s e P o s i t i v e R a t e = F P F P + T N False\ Positive\ Rate=\frac{FP}{FP+TN} False Positive Rate=FP+TNFP
假阳性率对应于误以为阳性的阴性数据占所有阴性数据的比例。
它们的取值范围都是 [ 0 , 1 ] [0,1] [0,1] ,在选定阈值的范围(0.00,0.02,0.04,…)后画一个图,如下所示。ROC曲线如下图中黄色折线所示,对角的蓝色虚线表示随机猜测的结果,自然曲线越接近左上角,表示模型的效果越好。
这里ROC曲线之所以是锯齿型的,是因为在实际中绘制ROC曲线时只有有限个样本可使用,所以无法画出平滑的曲线。
在对不同的模型进行评估时,如果一个模型的ROC曲线包住了另一个的ROC曲线,自然前者的效果要更好一些。但是如果俩者是有交叉的,就无法做出很好的判断了,这时AUC(Area Under ROC Curve)就提供了一种更合理的方式。它是图中假阳性率与真阳性率在 [ 0 , 1 ] [0,1] [0,1] 不同时刻曲线下的面积 。显然,AUC的取值范围为 [ 0 , 1 ] [0,1] [0,1] ,它值越大,模型的性能越好。
假设图中坐标定义为 { ( x 1 , y 1 , . . . , x m , y m ) } \{(x_{1},y_{1},...,x_{m},y_{m})\} {(x1,y1,...,xm,ym)} 的点按序连接而成,则AUC可通过下面的公式进行计算:
A U C = 1 2 ∑ i = 1 m − 1 ( x i + 1 − x i ) ( y i + y i + 1 ) AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_{i})(y_{i}+y_{i+1}) AUC=21i=1∑m−1(xi+1−xi)(yi+yi+1)
F1 Score
F1 score 是正确率与查全率之间的调和平均值,体现了两者的一种平衡。它的取值范围是 [ 0 , 1 ] [0,1] [0,1] ,它显示了模型的准确性,同时也体现了模型的鲁棒性。精度高但召回率低,可以提供非常准确的结果,但它会遗漏大量难以分类的实例。F1分数越大,我们的模型性能越好。数学上可表示为:
F 1 = 2 ∗ 1 1 p r e c i s i o n + 1 r e c a l l F1=2\ast \frac{1}{\frac{1}{precision}+\frac{1}{recall}} F1=2∗precision1+recall11
- 查准率(Precision):
P = T r u e p o s i t i v e s T r u e P o s i t i v e s + F a l s e p o s i t i v e s P=\frac{True\ positives}{True\ Positives + False\ positives} P=True Positives+False positivesTrue positives - 查全率(Recall):
R = T r u e P o s i t i v e s T r u e P o s i t i v e s + F a l s e N e g a t i v e s R=\frac{True\ Positives}{True\ Positives + False\ Negatives} R=True Positives+False NegativesTrue Positives
F1 Score更加一般的形式是 F β F_{\beta} Fβ ,它表示了对查准率/查全率的不同偏好,数学定义如下:
F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_{\beta}=\frac{(1+\beta^2)\times P\times R}{(\beta^2 \times P)+R} Fβ=(β2×P)+R(1+β2)×P×R
其中 β > 0 \beta>0 β>0 度量了查全率对查准率的相对重要性, β > 1 \beta>1 β>1 时查全率有更大的影响, β < 1 \beta <1 β<1 时查准率有更大的影响。
Mean Absolute Error
平均绝对误差是原始值和预测值差距的平均值,通过计算预测值与实际输出值的距离给出。然而我们无法从中知道预测值是高了还是低了。它的数学定义如下:
M e a n A b s o l u t e E r r o r = 1 N ∑ j = 1 N ∣ y j − y j ^ ∣ Mean\ Absolute Error=\frac{1}{N}\sum_{j=1}^N|y_{j}-\hat{y_{j}}| Mean AbsoluteError=N1j=1∑N∣yj−yj^∣
Mean Squared Error
均方误差和上面的平均绝对误差的区别仅在于它是计算预测值和真实值差距的平方,但是它的优点是计算梯度更容易;较大误差带来的影响比较小误差更明显,因此模型现在可以更多的关注较大误差的项。它的数学定义如下:
M e a n S q u a r e d E r r o r = 1 N ∑ j = 1 N ( y j − y j ^ ) 2 Mean\ Squared\ Error=\frac{1}{N} \sum_{j=1}^N ({y_{j}-\hat{y_{j}}})^2 Mean Squared Error=N1j=1∑N(yj−yj^)2
此外还有很多的度量方式,我们需要根据具体的任务进行合适的选择。