模型评估的理解

奔小跑 2021年09月20日 2,381次浏览

一 模型评估概念及指标

模型选择:根据一组不同复杂度的模型表现,即从某个模型空间中挑选最好的模型。
模型评价:选择一个(最好)模型后,在新的数据上来评价其预测误差等评价指标。

模型评估主要分为离线评估和在线评估两个阶段。不同类型的问题,评估指标的选择也有所不同。回归问题通常会用RMSE(均方根误差),MAE(平均绝对误差),R-Square(R平方)等;AUC(Area Under Cure)指标则常被用在分类任务(classification)上;目标检测任务(Object Detection)则经常会用到mAP(Mean Average Precision)。

1.1 不同问题的常用评价指标

1.1.1 对分类和回归问题

(1) 准确率、错误率
(2) 精确率(查准率)、召回率、F1
(3) ROC曲线(横坐标为假正率FPR,纵坐标为真正率TPR)、AUC
(4) 代价矩阵
(5) 计算速度、鲁棒性

1.1.2 目标检测问题

目标检测任务中常用的评价指标:IOU(Intersection over Union)交并比。
IOU具体意义:预测框与标注框的交集与并集之比,数值越大表示该检测器的性能越好。

例子:

图中绿色框是真实感兴趣区域,红色框是预测区域,这种情况下交集确实是最大的,但是红色框并不能准确预测物体位置。需要除以一个并集的大小,就可以规避这种问题。我们控制并集不要让并集太大,对准确预测是有益的,这就有效抑制了“一味地追求交集最大”的情况的发生。下图的第2个和第3个小图就是目标检测效果比较好的情况。

1.2 理解指标术语

1.2.1 混淆矩阵(Confusion matrix)

  • TP + FP + TN + FN = 样本总数
  • 帮助理解:第一个字母表示本次预测的正确性,T就是正确,F就是错误;第二个字母则表示由分类器预测的类别,P代表预测为正例,N代表预测为反例。比如TP我们就可以理解为分类器预测为正例(P),而且这次预测是对的(T),FN可以理解为分类器的预测是反例(N),而且这次预测是错误的(F),正确结果是正例,即一个正样本被错误预测为负样本。
  • 混淆矩阵的四值总结
    • True Positive (真正,TP)被模型预测为正的正样本
    • False Positive(假正 , FP)被模型预测为正的负样本
    • True Negative(真负 , TN)被模型预测为负的负样本
    • False Negative(假负 , FN)被模型预测为负的正样本

1.2.2 Precision、Recall、PRC、F1-score

  • Precision指标(查准率或者精确率):是指在所有系统判定的“真”的样本中,确实是真的的占比
  • Recall指标: (查全率或者是召回率):是指在所有确实为真的样本中,被判为的“真”的占比
  • 查准率 P和查全率 R公式定义:
  • accuracy(正确率)即正确的预测/总的正反例。强调:precision和accuracy不一样,accuracy针对所有样本,precision针对部分样本
  • 查准率和查全率是一对矛盾的度量,一般而言,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。直观理解:我们如果希望好瓜尽可能多地选出来,则可以通过增加选瓜的数量来实现,如果将所有瓜都选上了,那么所有好瓜也必然被选上,但是这样查准率就会越低;若希望选出的瓜中好瓜的比例尽可能高,则只选最有把握的瓜,但这样难免会漏掉不少好瓜,导致查全率较低。
  • PRC,Precision Recall Curve,它以查准率为Y轴,、查全率为X轴做的图,是综合评价整体结果的评估指标。对于交叉的曲线,引入“平衡点”(BEP)来度量,表示“查准率=查全率”时的取值,值越大表明分类器性能越好。这里判断A较B好
  • 比BEP更常用的是F1-score度量,它是一个综合考虑precision和recall的指标

1.2.3 ROC & AUC

  • ROC: “受试者工作特征”(Receiver Operating Characteristic)曲线,ROC曲线以“真正例率”(TPR)为Y轴,以“假正例率”(FPR)为X轴,对角线对应于“随机猜测”模型,而(0,1)则对应“理想模型”。ROC形式如下图所示。
  • TPR和FPR的公式定义:
  • TPR就是查全率Recall,FPR的含义就是:所有确实为“假”的样本中,被误判真的样本。
  • AUC(Area Under Curve)的值为ROC曲线下面的面积,面积大的曲线对应的分类器性能更好。若分类器的性能极好,则AUC为1。一般AUC均在0.5到1之间,如果AUC真的小于0.5,请检查一下是不是好坏标签标反了,或者是模型真的很差。

1.2.4 RMSE & MAPE

  • 均方根误差(RMSE):一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但实际问题中,如存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差。
  • 平均绝对百分比误差(MAPE):(下图),鲁棒性更好,与RMSE相比,MAPE相当于把每个点的误差进行了归一化,降低了个别离群点带来的绝对误差的影响。

1.3 怎么选择评估指标?

需要结合实际场景给出合适的回答,即具体问题具体分析。举例两个场景如下:

  1. 地震的预测。我们希望每次地震都预测出来,情愿发出1000次警报,把10次地震都预测正确了,也不要预测100次对了8次漏了两次。所以,这种情景需要Recall非常高,可以牺牲Precision。
  2. 嫌疑人定罪。基于不错怪一个好人的原则,我们希望对嫌疑人的定罪是非常准确的。即使有时候放过了一些罪犯(Recall低),但也是值得的。

二 模型评估方法

模型评估方法要求训练集和测试集都要保证是从样本真实分布中独立同分布采样而得,并且训练集和测试集要互斥,无交集。
基于划分方式的不同,评估方法可以分为:Holdout检验(留出)法,交叉验证法及自助法。

2.1 Holdout检验法

Holdout 检验是最简单也是最直接的验证方法,它将原始的样本集合随机划分成训练集和验证集两部分。比方说,对于一个点击率预测模型,我们把样本按照70%~30% 的比例分成两部分,70% 的样本用于模型训练;30% 的样本用于模型验证,包括绘制ROC曲线、计算精确率和召回率等指标来评估模型性能。

Holdout 检验的缺点很明显,即在验证集上计算出来的最后评估指标与原始分组有很大关系。为了消除随机性,研究者们引入了“交叉检验”的思想。

2.2 交叉验证法

交叉验证法(Cross Validation)的基础思路和留出法大致相同,都是讲数据集划分成训练集和测试集,而在划分细节上差异会比较大,而且交叉验证法还有诸多不同的分类形式。
k-fold交叉验证:首先将全部样本划分成k个大小相等的样本子集;依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集,进行模型的训练和评估;最后把k次评估指标的平均值作为最终的评估指标。在实际实验中,k经常取10。

2.3 自助法

自助法(BootstrapMethod)在统计学上是一种有放回的抽样方法,不同于留出法和交叉验证法无放回的抽样方式。在做数据集分类时,如果我们对整体样本n进行n次有放回抽样得到n个样本,然后把抽到的n个样本作为训练集,其中会出现部分样本重复,同时有一部分样本一次也没被抽到,这部分作为测试集。
在有放回的n次抽样中,每次每个样本被抽中的概率为1/n,反过来,未被抽中的概率为1-1/n,进行n次抽样后,这个样本不被抽中的概率为1-1/n的n次方,当n的取值趋近于无穷大时,样本未被抽中的概率为e的负一次方,约等于0.368,因此可以认为测试集的样本大概会是整体样本的36.8%。


三 模型评估AB测试

3.1 为什么进行A/B测试?

  1. 离线评估无法完全消除模型过拟合的影响,因此,得出的离线评估结果无法完全代替线上评估结果;
  2. 离线评估无法完全还原线上的工程环境。离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据丢失等情况;
  3. 线上系统的某些商业指标在离线评估中无法计算。例如,上线新的推荐算法,离线评估往往关注的是ROC曲线,P-R曲线等的改进,而线上评估可以全面了解该推荐算法带来的用户点击率、留存时长、PV访问量等的变化。

3.2 如何进行A/B测试?

  1. 进行用户分桶,即将用户分成实验组和对照组。对实验组的用户施以新模型,对对照组施以旧模型。
  2. 在分桶的过程中,要注意样本的独立性和采样方式的无偏性,避免散列、稀疏、有偏。

四 模型评估工具

sklearn工具包,有 3 种不同的 API, 用于评估模型预测的质量:

  1. estimator score method(估计器得分的方法): estimators(估计器)有一个 score(得分) 方法,为解决的问题提供了默认的 evaluation criterion (评估标准)。
  2. scoring parameter(评分参数): model-evaluation tools (模型评估工具)使用 cross-validation (如 model_selection.cross_val_score 和 model_selection.GridSearchCV) 依靠 internal scoring strategy (内部 scoring(得分) 策略)。
  3. metric functions(指标函数): metrics 模块实现了针对特定目的评估预测误差的函数。

五 模型评估参考样例

1 阿里云-机器学习PAI平台: 二分类训练模型评估报告例子


2 百度-AI开发平台: 图片分类识别模型评估检验例子