当前位置: 首页 > news >正文

浅谈模型评估选择及重要性

作者:王同学 来源:投稿
编辑:学姐

模型评估作为机器学习领域一项不可分割的部分,却常常被大家忽略,其实在机器学习领域中重要的不仅仅是模型结构和参数量,对模型的评估也是至关重要的,只有选择那些与应用场景匹配的评估方法才能更好的解决实际问题。

我们平时接触的模型评估一般分成离线评估和在线评估两个阶段,针对不同的机器学习问题,我们选择的评价指标也是不同的。

所以了解不同评价指标的意义,从而针对自己的问题选择不同的评价指标是至关重要的,这也是一位优秀的工程师必须掌握的技能,接下来我会通过两个案例来让大家了解评价指标的重要性,同时也会带大家把常见的几个评价指标展开讨论一下。

案例1

某奢侈品广告主们希望把自家广告定向投放给奢侈品用户。他们先是通过第三方的数据管理平台(DataManagementPlatform,DMP)拿到了一部分奢侈品用户的数据,并以此数据作为训练集和测试集,训练了一个奢侈品用户的分类模型。

该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,那么这是什么原因造成的呢?

这是凸显评价指标作用的一个典型案例,在回答问题之前我们首先要清楚一个概念。即我们经常听到的准确率,准确率是指分类正确的样本数量占总样本数量的比例,即:

准确率虽然是分类问题中最简单最直观的评价指标,但存在明显的缺陷。

比如,当负样本占比99%时,分类器就算把所有样本都预测为负样本,那也可以获得99%的准确率。所以,当正负样本的比例非常不均衡时,准确率这个评价指标对评价模型好坏是没有多大的参考意义的。

继续回到案例1这个问题,奢侈品用户只占据全体用户的一小部分,虽然模型在整体数据上的准确率很高,但是这并不代表仅对奢侈品用户的准确率也达到了相应的高度。那么这就要求我们对评价指标的选择进行进一步的考量。

当然,我这里仅仅是通过这个案例说明一下评价指标的重要性,影响模型好坏的原因有很多,比如该案例中训练集和验证集的划分可能不太合理,也可能模型在训练过程中出现了过拟合的情况,很多因素都会对最终的结果产生影响。

案例2

Youtube提供视频模糊搜索功能,搜索模型返回的Top5准确率非常高,但是用户在实际的使用过程中却还是经常出现找不到自己目标视频的情况。

针对这个问题,我还是要引出俩个概念,即「精确率和召回率」

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

「召回率」是指分类正确的正样本个数占真正的正样本个数的比例。

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

精确率和召回率是既矛盾又统一的两个个体,一方增加必定导致另一方减少,继续回到案例2,模型返回的Precision 5的质量很高。但在实际应用过程中,用户为了找一些冷门的视频,往往会寻找排在较靠后位置的结果。那么也就是说用户还是经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。

显然,问题出在召回率上。如果相关结果有100个,即使Precision 5达到了 100%,那么Recall 5也仅仅有5%。

通过这个案例我想让大家明白的是,在模型评估时,我们应该同时关注Precision值 和Recall值,不能一味的为了提高某一个指标而忽略了其它的指标,那么这里就需要我们找到一个能同时反应模型精确率和召回率的指标,到这里就要引出今天的主角了「P-R曲线(Precision- Recall)」

「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曲线的整体表现,才能够对模型进行更为全面的评估。

总结

当然,评价指标有很多,这里我没有展开讨论太多,这篇文章我只想让大家明白模型评估的重要性,每项评估指标都有其存在的意义,我们在解决实际问题时绝不能只考虑单一片面的指标,这样的得到的结果是没有多大参考意义的,只有选择那些合适的评价指标才能更好的解决实际场景中的问题。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“机器学习

领取机器学习实战导学资料合集

码字不易,欢迎大家点赞评论收藏!

相关文章:

浅谈模型评估选择及重要性

作者:王同学 来源:投稿 编辑:学姐 模型评估作为机器学习领域一项不可分割的部分,却常常被大家忽略,其实在机器学习领域中重要的不仅仅是模型结构和参数量,对模型的评估也是至关重要的,只有选择那…...

多线程的初识和创建

✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:知不足而奋进,望远山而前行。 目 录💤一. 认识线程(Thread)🍎1. 线程的引入🍏2. 线程…...

一句话设计模式3:工厂模式

工厂模式:new多种对象的简单方式。 文章目录 工厂模式:new多种对象的简单方式。前言一、两种工厂模式二、如何实现工厂模式1. 简单工厂2. 抽象工厂总结前言 工厂模式可以说比较常见的设计模式,仔细观察在很多源码中都有此种模式的应用;用来解决创建对象的创建问题; 一、两种工…...

【Codeforces Round #853 (Div. 2)】C. Serval and Toxel‘s Arrays【题解】

题目 Toxel likes arrays. Before traveling to the Paldea region, Serval gave him an array aaa as a gift. This array has nnn pairwise distinct elements. In order to get more arrays, Toxel performed mmm operations with the initial array. In the iii-th opera…...

100天精通Python(数据可视化篇)——第77天:数据可视化入门基础大全(万字总结+含常用图表动图展示)

文章目录1. 什么是数据可视化?2. 为什么会用数据可视化?3. 数据可视化的好处?4. 如何使用数据可视化?5. Python数据可视化常用工具1)Matplotlib绘图2)Seaborn绘图3)Bokeh绘图6. 常用图表介绍及其…...

PMP考前冲刺2.27 | 2023新征程,一举拿证

题目1-2:1.在产品开发过程中,项目发起人向项目团队推荐了一种新材料,新材料比现有的材料更便宜而且性能更好。如果团队采用新材料,不但有利于提升产品质量,而且可以显著降低成本。项目经理应该怎么办?A.采用新材料&am…...

【C++】map和set的封装(红黑树)

map和set的封装一、介绍二、stl源码剖析三、仿函数获取数值四、红黑树的迭代器五、map的[]5.1 普通迭代器转const迭代器六、set源码七、map源码八、红黑树源码一、介绍 首先要知道map和set的底层都是用红黑树实现的 【数据结构】红黑树 set只需要一个key,但是map既…...

【批处理脚本】-1.14-移动文件(夹)命令move

"><--点击返回「批处理BAT从入门到精通」总目录--> 共10页精讲(列举了所有move的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

逻辑地址和物理地址转换

在操作系统的学习中&#xff0c;很多抵挡都会涉及虚拟地址转换为物理地址的计算&#xff0c;本篇就简单介绍一下在分页存储管理、分段存储管理、磁盘存储管理中涉及的地址转换问题。 虚拟地址与物理地址 编程一般只有可能和逻辑地址打交道&#xff0c;比如在 C 语言中&#x…...

HyperGBM用4记组合拳提升AutoML模型泛化能力

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 如何有效提高模型的泛化能力&#xff0c;始终是机器学习领域的重要课题。经过大量的实践证明比较有效的方式包括&#xff1a; 利用Early Stopping防止过拟合通过正则化降低模型的复杂度使用更多的训练数…...

P6软件中的前锋线设置

卷首语 所谓前锋线&#xff0c;是指从评估时刻的时标点出发&#xff0c;用点划线一次连接各项活动的实际进展位置所形成的的线段&#xff0c;其通常为折线。 关键路径法 前锋线比较法&#xff0c;是通过在进度计划中绘制实际进度前锋线以判断活动实际进度与计划进度的偏差&a…...

Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<二>---后端架构完善与接口开发

数据库准备&#xff1a; 在上一次Spring Boot Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建已经将SpringBoot相关的配置环境给搭建好了&#xff0c;接下来则需要为咱们的项目创建一个数据库。 1、mysql的安装&#xff1a; 关于mysql的安装这里就…...

如何在logback.xml中自定义动态属性

原文地址&#xff1a;http://blog.jboost.cn/trick-logback-prop.html 当使用logback来记录Web应用的日志时&#xff0c;我们通过在logback.xml中配置appender来指定日志输出格式及输出文件路径&#xff0c;这在一台主机或一个文件系统上部署单个实例没有问题&#xff0c;但是…...

嵌入式系统硬件设计与实践(第一步下载eda软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 现实生活中&#xff0c;我们经常发现有的人定了很多的目标&#xff0c;但是到最后一个都没有实现。这听上去有点奇怪&#xff0c;但确实是实实在在…...

Portraiture4免费磨皮插件支持PS/LR

Portraiture 4免去了繁琐的手工劳动&#xff0c;选择性的屏蔽和由像素的平滑&#xff0c;以帮助您实现卓越的肖像润色。智能平滑&#xff0c;并删除不完善之处&#xff0c;同时保持皮肤的纹理和其他重要肖像的细节&#xff0c;如头发&#xff0c;眉毛&#xff0c;睫毛等。 一键…...

Python学习笔记202302

1、numpy.empty 作用&#xff1a;根据给定的维度和数值类型返回一个新的数组&#xff0c;其元素不进行初始化。 用法&#xff1a;numpy.empty(shape, dtypefloat, order‘C’) 2、logging.debug 作用&#xff1a;Python 的日志记录工具&#xff0c;这个模块为应用与库实现了灵…...

2023年大数据面试开胃菜

1、kafka的message包括哪些信息一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成&#xff0c;header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候&#xff0c;会在magic和crc32之间多一个字节…...

优雅的controller层设计

controller层设计 Controller 层逻辑 ​ MVC架构下&#xff0c;我们的web工程结构会分为三层&#xff0c;自下而上是dao层&#xff0c;service层和controller层。controller层为控制层&#xff0c;主要处理外部请求。调用service层&#xff0c;一般情况下&#xff0c;contro…...

同步、通信、死锁

基础概念竞争资源引起两个问题死锁&#xff1a;因资源竞争陷入永远等待的状态饥饿&#xff1a;一个可运行程序由于其他进程总是优先于它&#xff0c;而被调用程序总是无限期地拖延而不能执行进程互斥&#xff1a;若干进程因相互争夺独占型资源而产生的竞争关系进程同步&#xf…...

【聚类】谱聚类解读、代码示例

【聚类】谱聚类详解、代码示例 文章目录【聚类】谱聚类详解、代码示例1. 介绍2. 方法解读2.1 先验知识2.1.1 无向权重图2.1.2 拉普拉斯矩阵2.2 构建图&#xff08;第一步&#xff09;2.2.1 ϵ\epsilonϵ 邻近法2.2.2 k 近邻法2.2.3 全连接法2.3 切图&#xff08;第二步&#xf…...

最牛逼的垃圾回收期ZGC(1),简介

1丶什么是ZGC? ZGC是JDK 11中引入的一种可扩展的、低延迟的垃圾收集器。ZGC最主要的特点是&#xff1a;在非常短的时间内&#xff08;一般不到10ms&#xff09;&#xff0c;就可以完成一次垃圾回收&#xff0c;而且这个时间是与堆的大小无关的。另外&#xff0c;ZGC支持非常大…...

微服务的Feign到底是什么

Feign是什么 分区是一种数据库优化技术&#xff0c;它可以将大表按照一定的规则分成多个小表&#xff0c;从而提高查询和维护的效率。在分区的过程中&#xff0c;数据库会将数据按照分区规则分配到不同的分区中&#xff0c;并且可以在分区中使用索引和其他优化技术来提高查询效…...

JavaScript 正则表达式

正则表达式&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。搜索模式可用于文本搜索和文本替换。什么是正则表达式&#xff1f;正则表达式是由一…...

【批处理脚本】-1.15-文件内字符串查找命令find

"><--点击返回「批处理BAT从入门到精通」总目录--> 共7页精讲(列举了所有find的用法,图文并茂,通俗易懂) 在从事“嵌入式软件开发”和“Autosar工具开发软件”过程中,经常会在其集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,…...

【手撕面试题】JavaScript(高频知识点二)

目录 面试官&#xff1a;请你谈谈JS的this指向问题 面试官&#xff1a;说一说call apply bind的作用和区别&#xff1f; 面试官&#xff1a;请你谈谈对事件委托的理解 面试官&#xff1a;说一说promise是什么与使用方法&#xff1f; 面试官&#xff1a;说一说跨域是什么&a…...

Web学习1_HTML

在学校期间学的Web知识忘了一些&#xff0c;很多东西摸棱两可&#xff0c;现重新系统的学习一下。 首先下载安装完vsc后并下载拓展文件live server&#xff08;模拟一个服务器&#xff09; Auto Rename Tag&#xff08;在写网页时&#xff0c;自动对齐前后标签&#xff09;在设…...

华为OD机试真题Java实现【靠谱的车】真题+解题思路+代码(20222023)

靠谱的车 题目 程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。 出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。 比如: 23再多一块钱就变为25; 39再多一块钱变…...

【C++入门(下篇)】C++引用,内联函数,auto关键字的学习

前言&#xff1a; 在上一期我们进行了C的初步认识&#xff0c;了解了一下基本的概念还学习了包括&#xff1a;命名空间&#xff0c;输入输出以及缺省参数等相关的知识。今天我们将进一步对C入门知识进行学习&#xff0c;主要还需要大家掌握我们接下来要学习的——引用&#xf…...

基于合作型Stackerlberg博弈的考虑差别定价和风险管理的微网运行策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

2023年全国最新保安员精选真题及答案8

百分百题库提供保安员考试试题、保安职业资格考试预测题、保安员考试真题、保安职业资格证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 81.以下各组情形都属于区域巡逻中异常情况的是&#xff08;&#xff09;。 A&#x…...

福田莲花北网站建设/网站推广优化排名教程

第72届“世界大学生日”刚刚过去不久&#xff0c;这个节日本是为了在大学生中倡导追求和平、民主、自由和进步&#xff0c;如今&#xff0c;战乱过去已久&#xff0c;现今社会对人才的要求和期待越来越高&#xff0c;大学生也有着属于这个时代的使命与目标。现如今&#xff0c;…...

wordpress跳过短代码/广州市口碑seo推广外包

有时需引入外部字体&#xff0c;字体文件过大&#xff0c;页面加载很慢&#xff0c;故使用此方法压缩。 安装 npm install font-spider -g 使用 新建【font】目录&#xff0c;html文件&#xff0c;将项目里需要压缩的文字写入html&#xff1b;将字体文件放入目录&#xff1…...

网站建设 实训/线上电商怎么做

中国移动、中国联通推行的GPRS网络、CDMA网络已覆盖大量的区域&#xff0c;通过无线网络实现数据传输成为可能。无线Modem采用GPRS、CDMA模块通过中国移动、中国联通的GPRS、CDMA网络进行数据传输&#xff0c;并通TCP/IP协议进行数据封包&#xff0c;可灵活地实现多种设备接入&…...

曲靖网站制作一条龙/百度云群组

转自&#xff1a;http://blog.chinaunix.net/space.php?uid22600159&doblog&id2124188 HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案。根据官方数据&#xff0c;其最高极限支…...

有做任务赚钱的网站有哪些/友情链接是免费的吗

clock() 头文件 #include <ctime> 获取当前时钟计数,一般都是ms为单位,也可以通过CLOCKS_PER_SEC宏计算当前second时间,比如: printf("%d",clock()/CLOCKS_PER_SEC);sin() 函数sin的参数是使用弧度制的,需要将角度转换成弧度 比如使用简单的带参宏: #define j…...

那个网站专门做二手衣服的/怎样做一个产品营销方案

python作用域总结将Python与C的作用域规则对比理解试一下模块内变量作用域模块间作用域&#xff08;import&#xff09;总结将Python与C的作用域规则对比理解试一下 下面将Python与C的作用域规则对比理解试一下&#xff1a; 我个人认为python与C在作用域上的最大区别就是块作用…...