模型评估指标

分类模型评估指标

常见的分类模型评估指标有:准确率/召回率/精准率/F值
1)准确率(Accuracy) = 预测正确的样本数/总样本数
2)召回率(Recall) = 预测正确的正例样本数/样本中的全部正例样本数
3)精准率(Precision) = 预测正确的正例样本数/预测为正例的样本数
4)F值 = PrecisionRecall2 / (Precision+Recall) (即F值为正确率和召回率的调和平均值)


准确率的缺陷

准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。

所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。

为了解决这个问题,可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。


精确率与召回率的权衡(P-R曲线)

精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
召回率是指分类正确的正样本个数占真正的正样本个数的比例。

在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用TopN返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的TopN的结果就是模型判定的正样本,然后计算前N个位置上的准确率Precision和前N个位置上的召回率Recall

Precision值和Recall值是既矛盾又统一的两个指标,为了提高Precision值,分类器需要尽量在“更有把握”时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多“没有把握”的正样本,导致Recall值降低。

所以在模型评估时,我们应该同时关注Precision值和Recall值,并且选取不同的Top N的结果进行观察,而且最好绘制出模型的P-R(Precision-Recall)曲线。这里简单介绍一下P-R曲线的绘制方法。

P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率。整条P-R曲线是通过将阈值从高到低移动而生成的。下面是P-R曲线样例图,其中实线代表模型A的P-R曲线,虚线代表模型B的P-R曲线。原点附近代表当阈值最大时模型的精确率和召回率。

由图可见,当召回率接近于0时,模型A的精确率为0.9,模型B的精确率是1,这说明模型B得分前几位的样本全部是真正的正样本,而模型A即使得分最高的几个样本也存在预测错误的情况。并且,随着召回率的增加,精确率整体呈下降趋势。但是,当召回率为1时,模型A的精确率反而超过了模型B。这充分说明,只用某个点对应的精确率和召回率是不能全面地衡量模型的性能,只有通过P-R曲的整体表现,才能够对模型进行更为全面的评估。

除此之外,F1 score和ROC曲线也能综合地反映一个排序模型的性能。其中ROC相对于P-R曲线的一个优点是,当数据集中正负样本的分布变化很大时,ROC曲线能够保持不变。


ROC与AUC

对于分类器,除了以上评价指标,还有ROC和AUC。

ROC曲线的纵轴是“真正例率”(True Positive Rate 简称TPR),横轴是“假正例率” (False Positive Rate 简称FPR)。
ROC曲线反映了FPR与TPR之间权衡的情况,通俗地来说,即在TPR随着FPR递增的情况下,谁增长得更快,快多少的问题。TPR增长得越快,曲线越往上屈,AUC就越大,反映了模型的分类性能就越好。当正负样本不平衡时,这种模型评价方式比起一般的精确度评价方式的好处尤其显著。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而AUC作为数值可以直观的评价分类器的好坏,值越大越好。
1)AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
2)0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
3)AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
4)AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。


ROC相对PR的优势

ROC、AUC相比准确率、召回率、F-score这样的评价指标,有这样一个很好的特性当测试集中正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

下图是ROC曲线和P-R曲线的对比图,其中(a)和图(c)是ROC曲线,图(b)和图(d)是P-R曲线。
图(c)和图(d)则是将测试集中的负样本数量增加10倍后的曲线图。

可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。


回归模型评估指标

  • MSE(Mean squared error):
    均方误差。计算的是预测数据和原始数据对应点误差的平方和的均值,越趋近于0表示模型越拟合训练数据。

  • RMSE(Root mean squared error):
    均方根,也叫回归系统的拟合标准差,是MSE的平方根

  • SSE(The sum of squares due to error)
    和方差、误差平方和。计算的是拟合数据和原始数据对应点的误差的平方和,越趋近于0表示模型越拟合训练数据。

  • MAE(Mean Absolute Error):
    平均绝对误差是绝对误差的平均值。平均绝对误差能更好地反映预测值误差的实际情况.

  • RMS(Root Mean Square):
    均方根值计算方法是先平方、再平均、然后开方,维基百科定义

  • SD(standard Deviation):
    标准差又常称均方差,是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组组数据,标准差未必相同。

  • $R^2(R-Squared)$ :取值范围(负无穷,1],值越大表示模型越拟合训练数据;最优解是1;
    当模型预测为随机值的时候,有可能为负;若预测值恒为样本期望,$R^2$ 为0

Adjusted R-Squared:

$R^2$ 及其校正函数用处详见第18题:机器学习笔试题精选

  • TSS(Total Sum of Squares):总平方和,TSS表示样本之间的差异情况,是伪方差的m倍

  • RSS(Residual Sum of Squares):残差平方和,RSS表示预测值和样本值之间的差异情况,是MSE的m倍


RMSE的缺陷

我们希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?

RMSE经常被用来衡量回归模型的好坏。一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。

上述问题中,模型可能在95%的时间区间内的预测误差都小于1%,这说明,在大部分时间区间内,模型的预测效果都是非常优秀的。然而,实际业务中,RMSE表现却一直很差,很可能就是由于在其他的5%时间区间内存在非常严重的离群点。

针对这个问题,有什么解决方案呢?可以从三个角度来思考。

  • 如果我们认定这些离群点是“噪声点”的话,就需要在数据预处理的阶段把这些噪声点过滤掉。
  • 如果不认为这些离群点是“噪声点”的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去。
  • 可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error,MAPE),它定义为

相比RMSE,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。