数据质量

我们如何处理空结果和低置信度结果

在任何回答问题的系统中,都存在一种真实的诱惑:总是返回点什么,而不是承认某个问题无法可靠地回答。具体到位置数据,屈服于这种诱惑是有害的,因为一个看似合理但错误的答案,对其所支撑的决策造成的损害,通常远远大于如实承认数据不足以给出可靠答案。

只要把话说明白,道理其实很简单。空结果,或被明确标记为低置信度的结果,是设计良好的应用能够检测并有意处理的情况:可以回退为请用户澄清、采用更宽泛的默认值,或将该记录标记出来供人工审核。而一个捏造出来的猜测,看上去和其他任何高置信度结果一模一样,没有任何可见信号表明它其实是一个薄弱或含糊的匹配,这样的结果根本无法被检测或特别处理,因为从外部看,它与真正可靠的答案毫无区别,直到它在下游某处引发真实、可见的问题为止,而这种问题往往很难追溯到真正的源头。

正因如此,一个含糊或无法解析的查询应当要么完全不返回结果,要么返回一个其 confidence 分数如实、清晰地反映真实不确定性的结果,而不是由地理编码器在多个看似合理的候选中悄悄挑出一个,并以与明确匹配同样的确定性呈现出来。同样的原则也适用于精度:结果绝不应声称比数据实际支持的更精细的精度级别,即使面对总要返回看起来更具体的结果的压力也是如此。如实报告 city,好过凭猜测报告 house

对于任何基于这类数据进行开发的人来说,实际的启示是:在设计自己的应用时,要真正把空结果和低置信度结果当作响应中正常、常规的一部分来预期并妥善处理,而不是把它们当作罕见的例外情况,事后再单独加上特殊处理。一个只为高置信度、完全解析的结果设计了理想路径、对其他任何情况都没有经过考虑的行为的表单,迟早会在不可避免地遇到数据确实无法可靠解析的查询时,以令人困惑的方式出错,而这种情况发生的频率比大多数初始设计所预料的都要高。

对每个结果同时检查 precisionconfidence,并在其中任何一项低于您的具体用例实际要求的阈值时,采取经过深思熟虑的回退行为,这正是两种应用的区别所在:一种在困难情况下能够平稳降级,另一种则因为从未被设计成预期干净、明确答案以外的任何情况,而悄无声息地传播错误数据。