将所有你关心的方方面面组合成用一个用行索引 就能判别的单一指标并不总是一件容易的事 因此 在某些情况下 建立满足指标(satisficing matrics)和优化指标(optimizing matrics) 是很有用的 我来解释一下 比如 你决定关注 猫分类器的分类准确率(accuracy) 它可以是F1分数(F1 score)或者别的什么精确度度量 但是假设 除了准确率之外你还关心运行时间 也就是对一个图像分类需要多少时间
这个表中分类器A需要80毫秒(millisecond) B需要95毫秒 C需要1,500毫秒 也就是1.5秒才能甄别一个图像 你当然可以将准确率和运行时间组合成一个 整体评价指标(overall evaluation metric) 比如说整体代价是 准确率-0.5*运行时间 但是将准确率和运行时间用这样的公式整合 看起来有些刻意 这就像二者的线性加权和(linear weighted sum) 所以你还可以这样做: 你可能想要选择一个分类器 它在确保运行时间的前提下提供最大准确率 比如说它甄别图像所花费的时间 必须<=100毫秒 在这个例子中我们说准确率是优化指标 因为你想要最大化准确率 你希望准确率尽可能的高 但是运行时间是我们我们所说的满足指标 意味着它必须足够好 必须<100毫秒 一旦超出即不予考虑 至少不大考虑 所以用这种方式对准确率和运行时间
进行权衡或者说通盘考虑 相当合理 有可能的情况是 只要运行时间<100毫秒 你的用户并不在意 它是100毫秒还是50毫秒或更快 通过定义优化指标和满足指标 你就有了挑选"最优"分类器的明确方向 这个例子中中标的是B
因为在所有运行时间 优于100毫秒的分类器中它的准确率最高 更一般的说 如果你有N个关心的指标 有时候选择其中的一个加以优化是个合理的策略 你想要它的表现尽可能的好 那么剩下的N-1就是满足指标 意味着他们只要达到某种阈值(threshold)就可以了 比如说运行时间比100毫秒快之类的 一旦他们达到了阈值 你就不再费心优化他们了 但是必须保证他们达到了阈值 来看另一个例子下面再举另一个例子 假设你在建一个检测唤醒词(wake words)的系统 也叫做触发词(trigger words) 它指的是一些声控设备 如Amazon Echo 你向它说Alexa来唤醒它 或者你用OK Google唤醒Google设备 或者用Hey Siri唤醒Apple设备 或者 ”你好百度“ 用于百度设备 或者 你想阅览中文,比如“你好百度” 那么这就是你用于告诉某个声控设备 你想要表达的意思 叫它开工听你讲话时所用的词句 以及其它关于“你好百度”的中文表达方式 所以你可能会关心这些触发词监测系统的准确度 也就是当有人说了某个触发词 实际上会唤醒你的设备的可能性有多大 你有可能也关心假阳性(false positive)的次数 也就是没人说这个触发词 设备却被随机唤醒的几率是多大 这种情况下 组合这两个评估指标的 一个合理的做法可能是最大化准确度 也就是当有人说了这些触发词的时候 最大化设备会被唤醒的几率 并在此前提下 确保24小时内只有一次不是被触发词唤醒 对吧 即平均来说 你的设备在一天内只有一次 在没有人和它说话的时候被随机唤醒 这个例子中准确率是优化指标 24小时因为其他原因被随机唤醒的次数 是满足指标 你必须确保24小时内只有最多一次被随机唤醒 总而言之 如果你同时关心多项指标 你可以将其中的一样设为优化指标 使其表现尽可能的好 将另外的一项或多项设为满足指标
确保其表现满足要求 大多数情况下他们都会优于最低标准 这样一来你就有了一个几乎自动的 快速评价模型和选择"最佳"模型的方法 现在这些评价指标必须在训练集/开发集/测试集上评估计算 现在这些评价指标必须在训练集/开发集/测试集上评估计算 那么另一件你需要做的事情就是建立训练集/开发集/测试集 那么另一件你需要做的事情就是建立训练集/开发集/测试集 下一节我将与你分享一些如何建立 训练集/开发集/测试集的指导原则 下一节再见