满足和优化指标
要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧。
假设已经决定很看重猫分类器的分类准确度,这可以是\(F_1\)分数或者用其他衡量准确度的指标。但除了准确度之外,还需要考虑运行时间,就是需要多长时间来分类一张图。分类器\(A\)需要80毫秒,\(B\)需要95毫秒,\(C\)需要1500毫秒,就是说需要1.5秒来分类图像。
可以这么做,将准确度和运行时间组合成一个整体评估指标。所以成本,比如说,总体成本是\(cost= accuracy - 0.5 \times\text{runningTime}\),这种组合方式可能太刻意,只用这样的公式来组合准确度和运行时间,两个数值的线性加权求和。
还可以做其他事情,就是可能选择一个分类器,能够最大限度提高准确度,但必须满足运行时间要求,就是对图像进行分类所需的时间必须小于等于100毫秒。所以在这种情况下,就说准确度是一个优化指标,因为想要准确度最大化,想做的尽可能准确,但是运行时间就是所说的满足指标,意思是它必须足够好,它只需要小于100毫秒,达到之后,不在乎这指标有多好,或者至少不会那么在乎。所以这是一个相当合理的权衡方式,或者说将准确度和运行时间结合起来的方式。实际情况可能是,只要运行时间少于100毫秒,的用户就不会在乎运行时间是100毫秒还是50毫秒,甚至更快。
通过定义优化和满足指标,就可以给提供一个明确的方式,去选择"最好的"分类器。在这种情况下分类器B最好,因为在所有的运行时间都小于100毫秒的分类器中,它的准确度最好。
所以更一般地说,如果要考虑\(N\)个指标,有时候选择其中一个指标做为优化指标是合理的。所以想尽量优化那个指标,然后剩下\(N-1\)个指标都是满足指标,意味着只要它们达到一定阈值,例如运行时间快于100毫秒,但只要达到一定的阈值,不在乎它超过那个门槛之后的表现,但它们必须达到这个门槛。
这里是另一个例子,假设正在构建一个系统来检测唤醒语,也叫触发词,这指的是语音控制设备。比如亚马逊Echo ,会说"Alexa ",或者用"Okay Google "来唤醒谷歌设备,或者对于苹果设备,会说"Hey Siri",或者对于某些百度设备,用"好百度"唤醒。
对的,这些就是唤醒词,可以唤醒这些语音控制设备,然后监听想说的话。所以可能会在乎触发字检测系统的准确性,所以当有人说出其中一个触发词时,有多大概率可以唤醒的设备。
可能也需要顾及假阳性(false positive)的数量,就是没有人在说这个触发词时,它被随机唤醒的概率有多大?所以这种情况下,组合这两种评估指标的合理方式可能是最大化精确度。所以当某人说出唤醒词时,的设备被唤醒的概率最大化,然后必须满足24小时内最多只能有1次假阳性,对吧?所以的设备平均每天只会没有人真的在说话时随机唤醒一次。所以在这种情况下,准确度是优化指标,然后每24小时发生一次假阳性是满足指标,只要每24小时最多有一次假阳性就满足了。
总结一下,如果需要顾及多个指标,比如说,有一个优化指标,想尽可能优化的,然后还有一个或多个满足指标,需要满足的,需要达到一定的门槛。现在就有一个全自动的方法,在观察多个成本大小时,选出"最好的"那个。现在这些评估指标必须是在训练集或开发集或测试集上计算或求出来的。所以还需要做一件事,就是设立训练集、开发集,还有测试集。