深度学习笔记(14) 评估指标

  • 1. 正交化
  • 2. 单一数字评估指标
  • 3. 满足和优化指标
  • 4. 改变开发/测试集和指标

1. 正交化

搭建建立机器学习系统的挑战之一是,可以尝试和改变的东西太多太多了
比如说,有那么多的超参数可以调

效率很高的机器学习专家有个特点,思维清晰
对于要调整什么来达到某个效果,非常清楚,称之为

比如车,方向盘这个维度做的是控制转向角
另一维度油门和刹车来专制速度
互不影响,维度互成90度


2. 单一数字评估指标

比如说对于猫分类器,之前搭建了某个分类器A
通过改变超参数,还有改变训练集等手段
现在训练出来了一个新的分类器B
所以评估分类器的一个合理方式是观察它的查准率(precision)和查全率(recall)

  • 查准率的定义:在分类器标记为猫的例子中,有多少真的是猫
  • 查全率的定义:对于所有真猫的图片,分类器正确识别出了多少百分比

如果分类器A有95%的查准率
这意味着分类器说这图有猫的时候,有95%的机会真的是猫

如果分类器A有90%的查全率
这意味着对于所有的真猫图像,分类器A准确地分辨出了其中的90%

查准率和查全率之间往往需要折衷,两个指标都要顾及到
结合查准率和查全率的标准方法是所谓的 F1分数


这样可以快速选出分类器A,淘汰分类器B


假设开发一个猫应用来服务四个地理大区的爱猫人士,美国、中国、印度还有世界其他地区
除了跟踪分类器在四个不同的地理大区的表现,也要算算平均值
看起来算法C的平均错误率最低,然后可以继续用那个算法


3. 满足和优化指标

要把顾及到的所有事情组合成单实数评估指标有时并不容易
在那些情况里有时设立满足和优化指标是很重要的


假如很看重猫分类器的分类准确度,这可以是F_1分数或者用其他衡量准确度的指标

但除了准确度之外,还需要考虑运行时间,就是需要多长时间来分类一张图
分类器A需要80毫秒,B需要95毫秒,C需要1500毫秒,就是说需要1.5秒来分类图像
所以成本,比如说,总体成本是 cost = accuracy - 0.5 × runningTime

这种组合方式可能太刻意
只用这样的公式来组合准确度和运行时间,两个数值的线性加权求和

假如实际只要运行时间少于100毫秒
不会在乎运行时间是100毫秒还是50毫秒,甚至更快
通过定义优化和满足指标,就可以去选择“最好的”分类器
在这种情况下分类器B最好

如果要考虑N个指标
有时候选择其中一个指标做为优化指标是合理的,尽量优化那个指标
然后剩下N-1个指标都是满足指标
只要达到一定的阈值,超过门槛之后的表现无所谓,但必须达到这个门槛


4. 改变开发/测试集和指标

以上的评估指标必须是在训练集或开发集或测试集上计算或求出来的

机器学习中的工作流程是,尝试很多思路,用训练集训练不同的模型
然后使用开发集来评估不同的思路,然后选择一个,然后不断迭代去改善开发集的性能
直到最后可以得到一个满意的成本,然后再用测试集去评估

假如要开发一个猫分类器,然后在这些区域里运营,美国、中国,其他国家等共8个区域
选择其中4个区域的数据构成开发集
然后剩余四个区域的数据构成测试集,事实证明,这个想法非常糟糕

因为开发集和测试集来自不同的分布
一般使用不同方法去逼近目标,然后不断迭代,不断逼近靶心
所以,如果开发集和测试集来自不同的分布
就像设了一个目标,让花几个月尝试逼近靶心
结果在几个月工作之后发现,测试的时候,目标却移动到别的位置

为了避免这种情况,建议是将所有数据随机洗牌,放入开发集和测试集
所以开发集和测试集都有来自八个地区的数据
即开发集和测试集来自同一分布,这分布就是所有数据混在一起

但有时候在项目进行途中,可能意识到目标的位置放错了
这种情况下,应该移动目标


假设构建猫分类器,试图找到很多猫的照片,向爱猫人士用户展示,决定使用的指标是分类错误率
算法A和B分别有3%错误率和5%错误率,所以算法A似乎做得更好

如果部署算法A,那么用户就会看到更多猫图,因为它识别猫的错误率只有3%
但它同时也会给用户推送一些不良图像,这是完全不能接受的

相比之下,算法B有5%的错误率,这样分类器就得到较少的图像,但它不会推送不良图像
所以从用户接受的角度来看,算法B实际上是一个更好的算法

当评估指标无法正确衡量算法之间的优劣排序时
应该改变评估指标了,或者要改变开发集或测试集

用的分类错误率指标可以写成这样:

用 ypred(i) 表示预测值,其值为0或1
III 这符号表示一个函数,统计出里面这个表达式为真的样本数
权重项 w(i),如果图片x(i)不是不良图片,则w(i)=1,
如果x(i)是不良图片,x(i) 可能就是10甚至100 ,把该项代价放大

这个评估指标的问题在于,它对不良图片和非不良图片一视同仁
但其实希望分类器不会错误标记不良图像

加权的细节并不重要
实际上要使用这种加权,必须过一遍开发集和测试集,把不良图片标记出来

定义了一个评估指标更好帮助把分类器排序
能够区分出在识别不良图片的不同水平
这实际上是正交化

也许学习算法某个成本函数:
针对这个成本函数优化,要最小化训练集上的损失
可以做的其中一件事是,了引入这些权重
也许最后需要修改这个归一化常数,即:

假设两个猫分类器A和B,分别有用开发集评估得到3%的错误率和5%的错误率
但实际测试时,发现A更适用于高清图片,B适用于低像素或者说模糊的照片
所以不同运用环境下,错误率最低的算法不一定最好

如果当前的指标和当前用来评估的数据与真正关心必须做好的事情关系不大
那就应该更改指标或者开发测试集

建议最好不要在没有评估指标和开发集时跑太久
因为那样可能会减慢团队迭代和改善算法的速度


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(13) Softmax分类
深度学习笔记(12) Batch归一化网络
深度学习笔记(11) 超参数调试
深度学习笔记(10) 优化算法(二)
深度学习笔记(9) 优化算法(一)


谢谢!

深度学习笔记(14) 评估指标相关推荐

  1. 如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?

    参考文章:深度学习-目标检测评估指标P-R曲线.AP.mAP 文章目录 P-R曲线: AP计算: 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence score,每一类( ...

  2. 【深度学习】——模型评估指标MAP计算实例计算

    目录 一.知识储备 1.IOU--交集面积与并集面积之比 2.混淆矩阵(TP.FP.FN.TN) 问题1:上面的TP等具体是如何计算得到的? 3.精度precision&召回率recall 二 ...

  3. [深度学习]动手学深度学习笔记-14

    Task9--目标检测基础 14.1 目标检测和边界框 在前面的一些章节中,我们介绍了诸多用于图像分类的模型.在图像分类任务里,我们假设图像里只有一个主体目标,并关注如何识别该目标的类别.然而,很多时 ...

  4. 深度学习各场景评估指标总结

    下表总结了机器学习在常见场景下使用的评估指标: (PS:原文档包含截图,已上传到个人资源) 类别 场景 场景描述 应用场景 指标说明 图像 图像分类  识别一张图中是否是某类物体/状态/场景,适用于图 ...

  5. 深度学习-目标检测评估指标P-R曲线、AP、mAP

    基本概念 P-R曲线中,P为图中precision,即精准度,R为图中recall,即召回率. Example 下面通过具体例子说明. 首先用训练好的模型得到所有测试样本的confidence  sc ...

  6. 【深度学习笔记】分类指标accuracy,recall,precision等的区别

    在机器学习里面做一些分类任务时,经常会使用到一些评价指标,下面就一些常用的指标进行详细的说明. 上图表示为一个二分类的混淆矩阵(多分类同理,只需要把不属于当前类的其他类都考虑为负例),表格中的四个参数 ...

  7. 深度学习实战14(进阶版)-手写文字OCR识别,手写笔记也可以识别了

    大家好,我是微学AI,今天给大家带来手写OCR识别的项目.手写的文稿在日常生活中较为常见,比如笔记.会议记录,合同签名.手写书信等,手写体的文字到处都有,所以针对手写体识别也是有较大的需求.目前手写体 ...

  8. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  9. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

最新文章

  1. Android --- 夜神模拟器中没有图片怎么办?夜神模拟器中怎么导入图片?
  2. android 状态机的作用,Android 状态机、状态模式 基础框架实现
  3. Apache JMeter:随心所欲进行负载测试
  4. 【转】R函数-diag()函数
  5. 第七届蓝桥杯省赛---蚂蚁感冒
  6. 2020最新文本检测算法TextFuseNet
  7. chmod命令文件权限属性设置(linux/cygwin)
  8. pytest框架学习
  9. php把字符串改成utf8,PHP将字符串改成UTF8的方法
  10. 你朋友圈里原来这些文章最火
  11. 荣耀路由器w831刷linux,华为荣耀路由器登录入口:荣耀路由器WS831设置指南【图解】...
  12. AR law : Privacy
  13. 技术面试(一)认识技术面试
  14. 【解决】瑞星杀毒软件无法卸载,rising进程无法关闭
  15. java 根据list中 | 中、英文名称进行排序
  16. 特殊三角函数求导 和差化积
  17. 腾讯云服务器安装win10
  18. STM32学习笔记(11)电容触摸按键
  19. 202130310164
  20. 银行信用卡OCR识别

热门文章

  1. 《C++高级编程(第3版)》
  2. Java5、Java6、Java7的新特性
  3. 截取含HTML标签的字符串
  4. 大屏监控系统实战(10)-大屏展示前20个博主的排名、票数及名次相对于前一日的升降情况
  5. 解决Spring+Quartz无法自动注入bean问题
  6. 突破技术管理,IT人中年危机变契机
  7. cmake vs qmake
  8. 光学字符识别OCR-6 光学识别
  9. 思科集成管理控制器IMC爆出任意代码执行漏洞CVE-2017-6616 绿盟科技发布安全威胁通告...
  10. [memory]虚拟地址空间分布