其实,还有一种组合多个评价度量的方法。
假设,你将准确率和运行时间看做同等重要的评价项,你需要从以下三个分类器中选择一个:
classifier | accuracy | running time |
---|---|---|
A | 90% | 80ms |
B | 92% | 95ms |
C | 95% | 1500ms |
如按照上一章的方法,通过将准确率和运行时间放入一个公式中得到单数值度量看起来是不自然的:
Accuracy -0.5*RunningTime
你可以这样做:首先,确定能接受的运行时间,例如运行时间在100ms内都是可接受的;然后,在满足运行时间这个条件下,最大化准确率。这里运行时间是一个“满意度量”——分类器只需要在“满意度量”下足够好,这意味着,你最多能花费100ms。准确率是“优化度量”。
如果你想平衡(trade off)N个评价项,例如模型的二进制文件大小(这对手机app很重要,用户们不会喜欢下载文件大的app)、运行时间、准确率,你可能考虑设置N-1项评价为“满意度量”。换句话说,你只需要这N-1个评价度量们满足一个确定值。在这种情况下,你就可以定义最后一个评价为“优化度量”。例如,为二进制文件大小和运行时间设置一个阈值,然后在这些些约束条件下优化准确率。
最后,再举一例。假设你正在构建一个硬件设备:当用户通过麦克风说一个“唤醒词”时,系统被唤醒。例如,Amazon Echo被“Alexa”唤醒,Apple Siri被“Hey Siri”唤醒;Android被“Okay Google”唤醒,Baidu apps被“Hello Baidu”唤醒。你关心的评价项有假正率(false positive rate)——没有人唤系统时系统却唤醒的频率,假负率(false negative rate )—— 当有人唤系统时系统没被唤醒的频率。开发这个系统时应设置的合理目标是:在每24小时不超过一次假唤醒(false positive)的条件下(满意度量),最小化假负率(优化度量)。
一旦你的团队明确了要优化的评价度量,他们将会进展更快。