2.2 机器学习管道的数据敏感性

机器学习管道与大多数数据处理管道的主要区别在于,机器学习管道对其输入数据异常敏感。从某种意义上说,所有的数据处理管道都受其输入数据的正确性和数量的限制,而机器学习管道对数据分布的细微变化则更加敏感。仅省略一小部分数据,管道就可以很轻易地从基本正确变成明显错误,只要这一小部分数据不是随机的,或者在模型敏感的特征范围内采样不均匀。

这里有一个简单的思想实验,让我们想象一个像yarnit.ai这样的现实世界的系统,其以某种方式失去了来自某个国家、地区或语言的所有数据。例如,如果放弃某年12月31日的所有数据,我们就失去了检测跨年夜购物趋势的能力,这部分数据可能与12月和1月的其他日子有很大不同。在许多这样的情况下,失去少量被证明是有系统性偏差的数据,会导致我们对模型的理解和预测产生十分严重的困惑。

由于这种敏感性,聚集、处理和监控数据的能力不仅对于实时系统至关重要,对于成功管理机器学习数据管道也至关重要。我们会在第9章深入讨论监控数据的问题,在这里只是一个预览。监控数据的一个关键观点是沿着不同的轴线对数据进行切片或划分(确定哪些轴线最适合对数据进行切片是探索性数据分析(EDA)中的一项重要活动,不在本书的讨论范围之内)。在一个跟踪实时活动的系统中,我们也许会把数据按数据年龄分成几个储存桶:最近的,一到两小时的,三到六小时的,等等。我们可能会跟踪目前正在处理的数据来自哪个储存桶,这样就可以了解我们已经落后了多少。但是,我们能跟踪,也应该跟踪与我们的应用相关的各种其他数据的分布情况。检测所有几乎所有的数据子集何时消失的能力十分重要。

例如,在我们的购物网站yarnit.ai中,我们可能对搜索进行训练,以尝试预测特定搜索的最佳结果(其中“最佳”是指“最有可能被购买”——毕竟我们从事的是销售业务!)。我们在多个市场以多种语言运营我们的网站。假设一个大范围的支付中断只影响到我们的西班牙语网站,导致用西班牙语搜索的人完成的订单数量急剧下降。一个以向客户推荐产品为己任的模型将了解到,与其他语言的结果相比,西班牙语的结果导致购买的可能性大大降低。该模型将显示更少的西班牙语结果,甚至可能开始向讲西班牙语的用户显示其他语言的结果。当然,该模型将无法“得知”这种反常行为变化的原因是什么。

如果我们的网站主要是北美或欧洲的网站,这可能会导致总购买量的下降幅度很小,但西班牙语的搜索和购买总量会大幅下降。如果我们在这些数据上进行训练,则模型可能会对用西班牙语搜索产生糟糕的结论。它可能会了解到,西班牙语的查询从未购买过任何东西。该模型可能会开始表现出探索性行为——如果所有的西班牙语结果都同样糟糕,那么任何结果都可能是好的,所以该模型将试图找到所有西班牙语搜索者可能真的购买的东西。一旦西班牙语网站的支付中断结束,这次中断就将使之后的搜索结果变得十分糟糕,同时也会导致较低的销售额。这是一个相当糟糕的结果。(有关类似问题的更完整的处理方法,详见第11章。)

在总查询量层面上,西班牙语查询量的变化可能并不容易被发现,因为与其他语言的总查询量相比,西班牙语的总查询量可能很小。我们将在第9章讨论如何监控训练管道并检测这些类型的分布变化。举这个例子只是为了说明,由于这些奇怪的故障模式,机器学习管道的可靠运行确实会更难。

考虑到这些限制,让我们回顾一下数据在我们系统中的生命周期。必须考虑到数据从创建的那一刻起就在我们的控制下,直到我们删除它。