模型评估:评估指标的局限性

“没有测量,就没有科学。”这是科学家门捷列夫的名言。在计算机科学特别是机器学习领域中,对模型的评估同样至关重要。只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。模型评估主要分为离线评估和在线评估两个阶段。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。知道每种评估指标的精确定义、有针对性地选择合适的评估指标、根据评估指标的反馈进行模型调整,这些都是机器学习在模型评估阶段的关键问题,也是一名合格的算法工程师应当具备的基本功。

在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不同的指标进行评估。在诸多评估指标中,大部分指标只能片面地反映模型的一部分性能。如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。

1.准确率的局限性

假设公司客户希望把产品定向投放给目标用户。而公司通过第三方渠道拿到一部分目标用户的数据,并以此为训练集和测试集,训练和测试目标用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非目标用户。这可能是什么原因造成的?

在解答该问题之前,我们首先回顾一下分类准确率的定义。准确率是指分类正确的样本占总样本个数的比例,即

Accuracy=\frac{n_{correct}}{n_{total}}

其中,n_{correct}为被正确分类的样本个数,n_{total}为总样本个数。

准确率是分类问题中最简单,也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以当不同类别的样本比例非常不均衡时,占比大的类别往往称为影响准确率的最主要因素。

明确了这一点,这个问题也就迎刃而解了。第三方数据给的目标用户只占全体用户的一小部分,虽然模型的分类准确率高,但是不代表对目标用户整体的分类准确率也很高。在线上投放过程中,我们只会对模型判定的“目标用户”进行投放,因此,对目标用户判定的准确率不够高的问题就被放大了。为了解决这个问题,可以使用更为有效地平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

事实上,这是一道比较开放的问题,可以根据遇到的问题一步步地排查原因。标准答案也不限于指标的选择,即使评估指标选择对了,仍会存在模型过拟合或欠拟合、测试集和训练集划分不合理、线下评估与线上测试的样本分布存在差异等一系列问题,但评估指标的选择是最容易被发现,也是最可能影响评估结果的因素。

2.精确率与召回率的权衡

假设公司提供视频的模糊搜索功能,搜索排序模型返回的Top5的精确率非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集,这可能是哪个环节出了问题呢?

要回答这个问题,首先明确两个概念,精确率和召回率。

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

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

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

回到问题中来,模型返回的Precision@5的结果非常好,也就是说排序模型Top5的返回值的质量是很高的。但在实际应用过程中,用户为了找一些冷门的视频,往往会寻找排在较靠后位置的结果,甚至翻页去查找目标视频。但根据题目描述,用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。显然,问题出现在召回率上:如果相关结果有100个,即使Precision@5达到了100%,而Recall@5却仅仅只有5%。在模型评估时,我们是否应该同时关注Precision值和Recall值?是否应该选取更高阶的评估指标来更全面地反映模型在Precision值和Recall值两方面的表现?

答案都是肯定的,为了综合评估一个排序模型的好坏,不仅要看模型在不同Top N下的Precision@N和Recall@N,而且最好绘制出模型的P-R(Precision-Recall)曲线。这里简单介绍一下P-R曲线的绘制方法。

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

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

除此之外,F1score和ROC曲线也能综合地反映一个排序模型的性能。F1score是精确率和召回率的调和平均值,它定义为

F1=\frac{2\times precision\times recall}{precision+recall}

3.平方根误差的意外

假设一家流媒体公司,拥有众多的美剧资源,预测每部美剧的流量趋势对于广告投放、用户增长都非常重要。我们希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能原因是什么?

 RMSE经常被用来衡量回归模型的好坏,但按照题目的叙述,RMSE这个指标却失效了。先看一下RMSE的计算公式为

RMSE=\sqrt{\frac{\sum\limits_{i=1}^n(y_i-\widehat y_i)^2}{n}}

其中,yi 是第 i 个样本点的真实值,\widehat y_i 是第 i 个样本点的预测值,n是样本点的个数。

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

回到问题中来,模型在95%的时间区间内的预测误差都小于1%,这说明,在大部分时间区间内,模型的预测效果都是非常优秀的。然而,RMSE却一直很差,这很可能是由于在其他的5%时间区间内存在非常严重的离群点。事实上,在流量预估这个问题中,噪声点确实是很容易产生的,比如流量特别小的美剧、刚上映的美剧或者刚获奖的美剧,甚至一些相关社交媒体突发事件带来的流量,都可能会造成离群点。

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

第一,如果我们认定这些离群点是噪声点的话,就需要在数据预处理的阶段把这些噪声点过滤掉。

第二,如果不认为这些离群点是噪声点的话,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去(这又是一个宏大的话题)。

第三,可以找一个更合适的指标来评估该模型。关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(Mean Absolute Percent Error, MAPE),它定义为

MAPE=\sum\limits_{i=1}^{n}|\frac{y_i-\widehat y_i}{y_i}|\times \frac{100}{n}

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


总结:本文基于三个假想的实际应用场景和遇到的问题,说明了选择合适的评估指标的重要性。每个评估指标都有其价值,但如果只从单一的评估指标出发去评估模型,往往会得出片面甚至错误的结论;只有通过一组互补的指标去评估模型,才能更好地发现并解决模型存在的问题,从而更好地解决实际业务场景中遇到的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【华为】IPsec VPN 实验配置(动态地址接入)

【华为】IPsec VPN 实验配置(动态地址接入) 注意实验需求配置思路配置命令拓扑R1基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA ISP_R2基础配置 R3基础配置配置第一阶段 IKE SA配置第二阶段 IPsec SA PCPC1PC2 检查建立成功查看命令清除IKE / IPsec…

Acrel-EIoT能源物联网云平台助力电力物联网数据服务 ——安科瑞 顾烊宇

摘要:Acrel-EIOT能源物联网云平台是一个结合在线销售的互联网商业模式,为分布广泛的互联网用户提供PAAS服务的平台。安科瑞物联网产品安装完成后,用户可以通过手机扫描代码轻松实现产品访问平台,无需注意调试和平台运行过程&#…

【深度学习:Self-supervised learning (SSL) 】自我监督学习解释

【深度学习:SSL Self-supervised learning 】自我监督学习解释 什么是自我监督学习?比较自我监督学习与监督学习和无监督学习 为什么计算机视觉模型需要自监督学习?自我监督学习的好处自监督学习的局限性 自我监督学习如何运作?对…

使用Redhat操作系统下载MySQL

一、本地下载安装 方法一 ①在虚拟机火狐浏览器中搜索MySQL官网(选择第一个下载) ②下载完毕使用xshell远程连接解压及安装 [rootlocalhost ~]# cd /Downloads/ [rootlocalhost Downloads]# mkdir /mysql/ [rootlocalhost Downloads]# mv mysql-8.0.3…

HIS医院信息化、数字医学影像、DICOM、PACS源码

PACS系统适合卫生院、民营医院、二甲或以下公立医院的放射科、超声科使用。功能强大且简洁,性能优异,具备MPR(三维重建)、VR(容积重建)、胶片打印功能,能够快速部署。 支持DR、CT、磁共振提供D…

可移动的div

一、实验题目 做一个可移动的div 二、实验代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>*{margin: 0;padding: 0;}div{width: 100px;height: 100px;background-color: rebeccapurple…

【操作系统】BIOS与MBR之间的过渡实践

一&#xff0e;概述 根据以前写的一篇文章&#xff1a;【操作系统】MBR主引导目录结构以及作用&#xff0c;我们了解到BIOS在检测完内存、显卡&#xff0c;把硬盘等一系列外设简单检测之后&#xff0c;下一步将和主引导程序MBR进行交接&#xff0c;将主控权交付给下一位嘉宾&am…

js viewer 图片浏览器

示例1 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><script src"js/viewer.min.js"></script><link rel"stylesheet" href"css/viewer.min.css…

计算机网络 - 路由器查表过程模拟 C++(2024)

1.题目描述 参考计算机网络教材 140 页 4.3 节内容&#xff0c;编程模拟路由器查找路由表的过程&#xff0c;用&#xff08;目的地址 掩码 下一跳&#xff09; 的 IP 路由表以及目的地址作为输入&#xff0c;为目的地址查找路由表&#xff0c;找出正确的下一跳并输出结果。 1.…

[C#]C# OpenVINO部署yolov8-pose姿态估计模型

【源码地址】 github地址&#xff1a;https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8-Pose算法是一种基于深度神经网络的目标检测算法&#xff0c;用于对人体姿势进行准确检测。该算法在Yolov8的基础上引入了姿势估计模块&#xff0c;通过联合检测和姿势…

UE5 C++(十三)— 创建Character,添加增强输入

文章目录 创建Character第三人称模板添加增强输入引用在脚本中实现移动、旋转 创建Character第三人称模板 创建MyCharacter C类 添加增强输入引用 在DEMO.Build.cs 脚本中添加增强输入模块 有个容易出错的点&#xff0c;这里的设置一定要正确 然后添加引用到C头文件中 …

面向设计师的11个必备AI工具

在当今快速发展的设计领域&#xff0c;人工智能&#xff08;AI&#xff09;工具已成为不可或缺的创新催化剂。这些工具专门用于提高效率和创造力&#xff0c;从而重新定义传统的设计方法。AI正在彻底改变设计师的工作方式&#xff0c;从自动处理任务到发掘新的创造力机会&#…

HTAP(Hybrid Transactional/Analytical Processing)系统之统一存储的实时之道

文章目录 HTAP与时俱进LASER中的存储关键知识LSM&#xff08;Log-Structured Merge Tree&#xff09;SkipList&#xff08;跳表&#xff09;CDC&#xff08;Changed Data Capture&#xff09;SST&#xff08;Sorted Sequence Table&#xff09; 特性列组&#xff08;Column Gro…

Arthas,你真是Java程序员的大力丸

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

印章管理详解|契约锁帮助提前预防99%的印章风险

传统实体印章不仅存在私刻私盖、盗用乱用、易伪造等安全隐患&#xff0c;此外&#xff0c;线下面签的方式也不便于异地、非工作时间用印&#xff0c;分公司用印常常两地来回跑。组织的印章到底怎么“管”才能保障安全和使用效率&#xff1f; 一、 印章管理风险有哪些&#xff…

系统概要设计说明书

系统概要设计说明书 1.整体架构 2.功能架构 3.技术架构 4.运行环境设计 5.设计目标 6.接口设计 7.性能设计 8.运行设计 9.出错设计 全文档获取进主页

面试算法107:矩阵中的距离

题目 输入一个由0、1组成的矩阵M&#xff0c;请输出一个大小相同的矩阵D&#xff0c;矩阵D中的每个格子是矩阵M中对应格子离最近的0的距离。水平或竖直方向相邻的两个格子的距离为1。假设矩阵M中至少有一个0。 例如&#xff0c;图&#xff08;a&#xff09;是一个只包含0、1的…

Docker安装Jenkins,配置Maven和Java

前言 这是一个java的springboot项目&#xff0c;使用maven构建 安装准备 需要将maven和jdk安装在服务器上&#xff0c;Jenkins需要用到&#xff0c;还有创建一个jenkins的目录&#xff0c;安装命令如下&#xff1a; docker run -d -uroot -p 9095:8080 -p 50000:50000 --n…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip

influxdb influxdb: 有收费版本、有开源版本 docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口docker pull chronograf docker run -d -p 8888:8888 --name chronograf-dev chronografsudo netst…

对比fwrite、mmap、DirectIO 的内存、性能开销,剖析 Page Cache

背景 如上图所示&#xff1a;应用程序写文件有三种形式。 fwrite : 应用程序 -> fwrite(Buffered IO) -> File System -> Page Cache -> Block IO Layer -> Device & Disk etc.mmap : 应用程序 -> mmap -> Page Cache -> Block IO Layer -> De…