【深度学习】常用的模型评估指标

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 【深度学习】常用的模型评估指标

没有测量,就没有科学。”这是科学家门捷列夫的名言。在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要。只有选择与问题相匹配的评估方法,我们才能够快速的发现在模型选择和训练过程中可能出现的问题,迭代地对模型进行优化。本文将总结机器学习最常见的模型评估指标,其中包括:


从混淆矩阵谈起


看一看下面这个例子:假定瓜农拉来一车西瓜,我们用训练好的模型对这些西瓜进行判别,显然我们可以使用错误率来衡量有多少比例的瓜被判别错误。但如果我们关心的是“挑出的西瓜中有多少比例是好瓜”,或者“所有好瓜中有多少比例被挑出来了”,那么错误率显然就不够用了,这时我们需要引入新的评估指标,比如“查准率”和查全率更适合此类需求的性能度量。


在引入查全率和查准率之前我们必须先理解到什么是混淆矩阵(Confusion matrix)。这个名字起得是真的好,初学者很容易被这个矩阵搞得晕头转向。下图 a 就是有名的混淆矩阵,而下图 b 则是由混淆矩阵推出的一些有名的评估指标。


d6b21751bb92210a8c75992493a0e828.png


我们首先好好解读一下混淆矩阵里的一些名词和其意思。根据混淆矩阵我们可以得到 TP,FN,FP,TN 四个值,显然 TP+FP+TN+FN=样本总数。这四个值中都带两个字母,单纯记忆这四种情况很难记得牢,我们可以这样理解:第一个字母表示本次预测的正确性,T 就是正确,F 就是错误;第二个字母则表示由分类器预测的类别,P 代表预测为正例,N 代表预测为反例。比如 TP 我们就可以理解为分类器预测为正例(P),而且这次预测是对的(T),FN 可以理解为分类器的预测是反例(N),而且这次预测是错误的(F),正确结果是正例,即一个正样本被错误预测为负样本。我们使用以上的理解方式来记住 TP、FP、TN、FN 的意思应该就不再困难了。,下面对混淆矩阵的四个值进行总结性讲解:


  • True Positive (真正,TP)被模型预测为正的正样本
  • True Negative(真负 , TN)被模型预测为负的负样本
  • False Positive (假正, FP)被模型预测为正的负样本
  • False Negative(假负 , FN)被模型预测为负的正样本


Precision、Recall、PRC、F1-score

Precision 指标在中文里可以称为查准率或者是精确率,Recall 指标在中卫里常被称为查全率或者是召回率,查准率 P 和查全率 R 分别定义为:


cbfe046771bb6f5b722b96720ceb1020.png


查准率 P 和查全率 R 的具体含义如下:

  • 查准率(Precision)是指在所有系统判定的“真”的样本中,确实是真的的占比
  • 查全率(Recall)是指在所有确实为真的样本中,被判为的“真”的占比


这里想强调一点,precision 和 accuracy(正确率)不一样的,accuracy 针对所有样本,precision 针对部分样本,即正确的预测/总的正反例:


8f1ced82f9afc86a83a8ce7e49fafe6d.png


查准率和查全率是一对矛盾的度量,一般而言,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。我们从直观理解确实如此:我们如果希望好瓜尽可能多地选出来,则可以通过增加选瓜的数量来实现,如果将所有瓜都选上了,那么所有好瓜也必然被选上,但是这样查准率就会越低;若希望选出的瓜中好瓜的比例尽可能高,则只选最有把握的瓜,但这样难免会漏掉不少好瓜,导致查全率较低。通常只有在一些简单任务中,才可能使查全率和查准率都很高。


再说 PRC, 其全称就是 Precision Recall Curve,它以查准率为 Y 轴,、查全率为 X 轴做的图。它是综合评价整体结果的评估指标。所以,哪总类型(正或者负)样本多,权重就大。也就是通常说的『对样本不均衡敏感』,『容易被多的样品带走』。



b8b3d659c599b560083c5bcf817a90f1.png


上图就是一幅 P-R 图,它能直观地显示出学习器在样本总体上的查全率和查准率,显然它是一条总体趋势是递减的曲线。在进行比较时,若一个学习器的 PR 曲线被另一个学习器的曲线完全包住,则可断言后者的性能优于前者,比如上图中 A 优于 C。但是 B 和 A 谁更好呢?因为 AB 两条曲线交叉了,所以很难比较,这时比较合理的判据就是比较 PR 曲线下的面积,该指标在一定程度上表征了学习器在查准率和查全率上取得相对“双高”的比例。因为这个值不容易估算,所以人们引入“平衡点”(BEP)来度量,他表示“查准率=查全率”时的取值,值越大表明分类器性能越好,以此比较我们一下子就能判断 A 较 B 好。


BEP 还是有点简化了,更常用的是 F1 度量:



0ba2f1466fe6708f748a3432a7544440.png


F1-score 就是一个综合考虑 precision 和 recall 的指标,比 BEP 更为常用。

ROC & AUC


ROC 全称是“受试者工作特征”(Receiver Operating Characteristic)曲线,ROC 曲线以“真正例率”(TPR)为 Y 轴,以“假正例率”(FPR)为 X 轴,对角线对应于“随机猜测”模型,而(0,1)则对应“理想模型”。ROC 形式如下图所示。


5ed5bcef5702cab8e6c0013792be3ba3.png

TPR 和 FPR 的定义如下:


830d6e70126474877b9536c61d5744a1.png


从形式上看 TPR 就是我们上面提到的查全率 Recall,而 FPR 的含义就是:所有确实为“假”的样本中,被误判真的样本。


进行学习器比较时,与 PR 图相似,若一个学习器的 ROC 曲线被另一个学习器的曲线包住,那么我们可以断言后者性能优于前者;若两个学习器的 ROC 曲线发生交叉,则难以一般性断言两者孰优孰劣。此时若要进行比较,那么可以比较 ROC 曲线下的面积,即 AUC,面积大的曲线对应的分类器性能更好。


AUC(Area Under Curve)的值为 ROC 曲线下面的面积,若分类器的性能极好,则 AUC 为 1。但现实生活中尤其是工业界不会有如此完美的模型,一般 AUC 均在 0.5 到 1 之间,AUC 越高,模型的区分能力越好,上图 AUC 为 0.81。若 AUC=0.5,即与上图中红线重合,表示模型的区分能力与随机猜测没有差别。若 AUC 真的小于 0.5,请检查一下是不是好坏标签标反了,或者是模型真的很差。


怎么选择评估指标?

这种问题的答案当然是具体问题具体分析啦,单纯地回答谁好谁坏是没有意义的,我们需要结合实际场景给出合适的回答。


考虑下面是两个场景,由此看出不同场景下我们关注的点是不一样的:


地震的预测对于地震的预测,我们希望的是 Recall 非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲 Precision。情愿发出 1000 次警报,把 10 次地震都预测正确了;也不要预测 100 次对了 8 次漏了两次。所以我们可以设定在合理的 precision 下,最高的 recall 作为最优点,找到这个对应的 threshold 点。


  • 嫌疑人定罪基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。及时有时候放过了一些罪犯(Recall 低),但也是值得的。
  • ROC 和 PRC 在模型性能评估上效果都差不多,但需要注意的是,在正负样本分布得极不均匀(highly skewed datasets)的情况下,PRC 比 ROC 能更有效地反应分类器的好坏。在数据极度不平衡的情况下,譬如说 1 万封邮件中只有 1 封垃圾邮件,那么如果我挑出 10 封,50 封,100...封垃圾邮件(假设我们每次挑出的 N 封邮件中都包含真正的那封垃圾邮件),Recall 都是 100%,但是 FPR 分别是 9/9999, 49/9999, 99/9999(数据都比较好看:FPR 越低越好),而 Precision 却只有 1/10,1/50, 1/100 (数据很差:Precision 越高越好)。所以在数据非常不均衡的情况下,看 ROC 的 AUC 可能是看不出太多好坏的,而 PR curve 就要敏感的多。


IOU


上面讨论的是分类任务中的评价指标,这里想简单讲讲目标检测任务中常用的评价指标:IOU(Intersection over Union),中文翻译为交并比。


这里是一个实际例子:下图绿色框是真实感兴趣区域,红色框是预测区域,这种情况下交集确实是最大的,但是红色框并不能准确预测物体位置。因为预测区域总是试图覆盖目标物体而不是正好预测物体位置。这时如果我们能除以一个并集的大小,就可以规避这种问题。这就是 IOU 要解决的问题了。


dd9ad63464635337d44eb819c63b9fa7.png


下图表示了 IOU 的具体意义,即:预测框与标注框的交集与并集之比,数值越大表示该检测器的性能越好。

dd370f8e9a8905189d25c07e32ab60ac.png


使用 IOU 评价指标后,上面提到的问题一下子解决了:我们控制并集不要让并集太大,对准确预测是有益的,这就有效抑制了“一味地追求交集最大”的情况的发生。下图的 2,3 小图就是目标检测效果比较好的情况。



c8e9b5f35aaeb5dddd9d4b987b697fba.png


参考资料:



相关文章
|
9天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品加工优化的深度学习模型
使用Python实现智能食品加工优化的深度学习模型
104 59
|
5天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品市场预测的深度学习模型
使用Python实现智能食品市场预测的深度学习模型
30 5
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的Transformer模型
探索深度学习中的Transformer模型
12 1
|
7天前
|
机器学习/深度学习 算法 开发者
探索深度学习中的优化器选择对模型性能的影响
在深度学习领域,优化器的选择对于模型训练的效果具有决定性作用。本文通过对比分析不同优化器的工作原理及其在实际应用中的表现,探讨了如何根据具体任务选择合适的优化器以提高模型性能。文章首先概述了几种常见的优化算法,包括梯度下降法、随机梯度下降法(SGD)、动量法、AdaGrad、RMSProp和Adam等;然后,通过实验验证了这些优化器在不同数据集上训练神经网络时的效率与准确性差异;最后,提出了一些基于经验的规则帮助开发者更好地做出选择。
|
6天前
|
机器学习/深度学习 算法 数据可视化
使用Python实现深度学习模型:智能食品配送优化
使用Python实现深度学习模型:智能食品配送优化
22 2
|
5天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
11天前
|
机器学习/深度学习 数据采集 数据库
使用Python实现智能食品营养分析的深度学习模型
使用Python实现智能食品营养分析的深度学习模型
37 6
|
8天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现智能食品储存管理的深度学习模型
使用Python实现智能食品储存管理的深度学习模型
23 2
|
9天前
|
机器学习/深度学习 算法
深度学习中的模型优化策略
【10月更文挑战第35天】在深度学习的海洋中,模型优化是那把能够引领我们抵达知识彼岸的桨。本文将从梯度下降法出发,逐步深入到动量、自适应学习率等高级技巧,最后通过一个实际代码案例,展示如何应用这些策略以提升模型性能。

热门文章

最新文章