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

场景描述

在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不同的指标进行评估。在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能。如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论。下面以 Hulu 的业务为背景,假想几个模型评估场景,看看大家能否触类旁通,发现模型评估指标的局限性。


知识点:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、均方根误差(Root Mean Square Error, RESE)


问题1:准确率的局限性

难度:★☆☆☆☆

Hulu 的奢侈品广告主们希望把广告定向投放给奢侈品用户。Hulu 通过第三方的数据管理平台 (Data Management Platform, DMP) 拿到了部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了 95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,这可能是什么原因造成的?

分析:在解答该问题之前,我们先明确一下分类准确率(Accuracy)的定义——准确率是指分类正确的样本个数,占总样本个数的比例,即:

其中Ncorrect为被正确分类的样本个数,Ntotal为总样本的个数。

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

明确这一点,我们这道题也就迎刃而解了。因为奢侈品用户显然只占hulu全体用户的一小部分,模型的整体分类准确率高,不代表着对奢侈品用户的分类准确率高。在线上投放过程中,我们只会对模型判定的“奢侈品用户“进行投放,因此对“奢侈品用户”判定的准确率不够高的问题被放大了。为解决这个问题,使用平均准确率(每个类别下的样本准确率的算术平均)来进行模型评估是更为有效的指标。

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


问题2:精确率与召回率的权衡

难度:★☆☆☆☆

Hulu提供视频的模糊搜索功能,搜索排序模型返回的top 5结果的精确率(precision)非常高,但在实际的使用过程中,用户却还是经常找不到想要找的视频,特别是一些比较冷门的剧集,这有可能是哪个环节出了问题?

分析:要回答这个问题,我们需要首先明确两个概念,精确率(precision)和召回率(recall)。

  • 精确率(precision):分类正确的正样本个数占分类器判定为正样本的样本个数的比例。
  • 召回率(recall):分类正确的正样本个数占真正的正样本个数的比例。

在排序模型中,由于没有一个准确的阈值把结果判定为正负样本,所以往往使用Top N返回结果的Precision和Recall值来衡量排序模型的性能。即我们认为排序模型返回的Top N的结果就是模型判定的正样本,计算Precision@N,和Recall@N。

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

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

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

P-R曲线的横轴是召回率,纵轴是精确率。对于一个排序模型来说,其P-R曲线上的某一个点代表着在某一个正样本阈值(大于该阈值模型预测为正样本,小于该阈值预测为负样本)下所对应的召回率和精确率。而整条P-R曲线是通过从最高到最低滑动正样本阈值生成的。

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

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

ROC曲线将在后面篇章详细解释


问题3:平方根误差的 “平方”

难度:★☆☆☆☆

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

分析:

MSE(Root Mean Square Error,均方根误差)是经常用来衡量一个回归模型好坏的。但按照题目的叙述,RMSE这个指标却失效了。我们首先看一下RMSE的计算方式:

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

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

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

那么有什么解决方法呢?这里有三个角度,第一个角度是如果我们认定这些离群点是“噪声点”的话,我们就需要在数据预处理的阶段就把这些噪声点过滤掉;第二个角度,如果我们不认为这些离群点是噪声点的话,我们其实是需要进一步提高模型的预测能力,将离群点产生的机制建模进去。关于流量预估模型如何改进这个问题是一个宏大的话题,我们就不展开讨论了;第三个角度,我们希望找一个更合适评估该模型的指标,关于这个问题,其实是存在比RMSE鲁棒性更好的指标的,比如MAPE(Mean Absolute Percent Error平均绝对百分比误差),定义如下:

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


四、总结

本篇文章,我们基于三个假想的hulu的应用场景,主要说明了评估指标选择的重要性。每个评估指标都有其价值,但是如果只从单一的评估指标出发去评价模型,往往会得出片面甚至错误的结论。只有通过一组互补的评价指标去验证试验结果,我们才能够更好的发现并解决模型存在的问题,从而更好的解决实际业务场景的问题。

上述学习笔记参考:葫芦书百面机器学习


[KO机器学习] Day 7 模型评估:评估指标的局限性相关推荐

  1. python分类预测降低准确率_【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值...

    [火炉炼AI]机器学习011-分类模型的评估:准确率,精确率,召回率,F1值 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19 ...

  2. 机器学习中的模型评估方法和指标

    机器学习模型的评估方法和指标 1.选择怎样的评估指标 1.1 Online metrics vs Offline metrics Online metrics是直接在线上环境做AB测试,比较两个实验组 ...

  3. 图解机器学习之回归模型性能评估指标

    一个房价预测的任务,老板说你看看这个模型咋样? 我们先绘制一个坐标轴: Y 轴为房价,X 轴为年份.将过去房价数据绘制为绿色,回归模型绘制为蓝色. 关键问题是,怎么知道这个模型的好坏呢? 为了评估该模 ...

  4. 机器学习:分类模型的评估精确率Presicion和召回率Recall

    estimator.score() 准确率:预测结果正确的百分比 混淆矩阵 预测结果Predicted Condition 正确标记 True Condition 预测结果 正例 假例 真实 正例 真 ...

  5. ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失、L1损失、L2损失、Logistic损失)求梯度/求导、案例应用之详细攻略

    ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失.L1损失.L2损失.Logistic损失)求梯度/求导.案例应用之详细攻略 目录 常见损失函数求梯度案例 1.线性回归求梯度 2.L ...

  6. ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介、损失函数/代价函数/目标函数之间区别、案例应用之详细攻略

    ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介.损失函数/代价函数/目标函数之间区别.案例应用之详细攻略 目录 损失函数的简介 损失函数/代价函数/目标函数之间区别 损失 ...

  7. [机器学习与scikit-learn-51]:模型评估-图解回归模型的评估指标MSE、MAE、RMSE、R2、RSS与代码示例

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  8. 多分类f1分数_机器学习之分类模型评估总结

    一.概述 在机器学习模型搭建好之后,需要对模型进行评估,针对不同的算法模型有不同的评估方法,比如:分类算法.回归算法.聚类算法等,本文主要是针对分类算法的模型评估方法进行总结整理,便于自己对评估方法的 ...

  9. 关于模型的评估指标(超详细)

    文章目录 正负样本的选择 标准评估指标 回归问题的评估指标 SSE 和方差 均方误差(MSE) 均方根误差(RMSE) R Squared 分类问题的评估指标 错误率 召回率(查全率) 精确率(查准率 ...

最新文章

  1. 1106 Lowest Price in Supply Chain
  2. 基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
  3. java线程同步barrier_Java多线程同步工具类之CyclicBarrier
  4. Bootstrap 栅格 样式 组件 插件
  5. 3_python基础—运算符 2
  6. Spring : Bean依赖注解(@DependsOn)
  7. Python + OpenCV 环境配置
  8. Android中Webview自适应屏幕
  9. 关于iptables配置的心得
  10. 布线问题----回溯法
  11. WORD/OFFICE排版时插入脚注和分栏冲突的解决方法
  12. pandas之DataFrame常用方法
  13. 北邮iptv用WindowsMediaplayer打不开的解决的方法
  14. Centos7设置开机自动运行脚本
  15. SPIR-V 研究:编译器基本原理(二)
  16. hp计算机如何重装win7,惠普笔记本重装Win7系统过程详解
  17. 【基础系列】赏析刘洪普《PyTorch深度学习实践》与《实战:基于CNN的MNIST手写数字识别》(Python版)
  18. linux下刻录光盘读取不了_Linux下刻录光盘
  19. 未签收延误一天的快递单号是怎么查找的
  20. 软件测试面试宝典(2022面试预测)——软件测试大厂试题

热门文章

  1. NG-ZORRO + Angular11增加自定义全局样式,不影响其他页面全局样式,仅作用于当前页面
  2. A_Star 康托展开 八数码问题
  3. 基于c语言Easyx库的捕鱼达人小游戏
  4. 基于WEB纯JAVA应用的框架太棒了-WUI
  5. web管理员登录页面
  6. 「永恒之塔私服」- 区块链基础设施之跨链通信协议层-Aionsf详解
  7. Oracle 11g 在audit_file_dest目录下产生大量的aud文件
  8. 计算机本科毕业后还需要参加培训吗?我来聊聊java程序员找工作的经验
  9. 信捷XC PLC与西门子V20变频器通讯程序
  10. Nginx的安装基础配置(windows、linux)以及搭建图片服务器(windows、阿里云),文件上传