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


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
I I I 这符号表示一个函数,统计出里面这个表达式为真的样本数
权重项 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) 优化算法(一)


谢谢!

氢键H-H CSDN认证博客专家 机器人软件 运动控制 深度学习
一位永远相信美好的事情即将发生,从事自动化机器人软件开发,不忘初心,牢记使命,为实现中华民族伟大复兴而奋斗的社会主义接班人。
©️2020 CSDN 皮肤主题: 我行我“速” 设计师:Amelia_0503 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值