表格数据的多元数据漂移
监控机器学习模型的持续成功需要监控进入该模型的数据。这意味着确保今天通过的数据看起来完全符合您的预期。最终,您要确保数据看起来很典型:它看起来是否与第一次训练模型时相同?如果数据发生了显着变化,则您的训练模型可能过时并导致预测不准确。
无论您是在谈论表格数值数据、图像数据还是 NLP 数据,数据监控问题都是一样的。在所有情况下,我们都会对数据应该是什么样子有一定的了解,然后在事情误入歧途时发出警报。在技术术语中,这通常被称为分布外检测,我们希望找出数据何时不再符合其过去(模型训练时)的形状和分布。关于数据漂移检测的思考方式有很多种,在这篇文章中,我们将描述高维和多变量方法的好处。
开始考虑数据漂移检测的一种方便方法是测量现在通过模型的数据与训练集之间的分布相似性。
一个很好的开始方法是分别查看模型的每个输入变量(以及输出)。这种所谓的单变量漂移方法可以通过许多技术实现来解决。常见的方法包括假设检验,例如: KS 检验和卡方检验,以及所谓的 f-散度(例如: KLDivergence、JSDivergence) 或类似方法。对于所有这些方法,我们通常会以单变量方式将它们应用于模型的每个输入特征(参见图 1)。
图 1:比较分布。在此图中,我们检查单个输入特征(年龄)并查看该变量在两个时间点的分布:在训练数据中(绿色分布)和在今天的生产数据中(紫色分布)。很明显,这种分布的总体形状发生了很大变化。这可能导致模型不准确。
理论上可以计算出更高维的变体,但由于数据稀疏,这些方法在高维应用中无效。首先,通过使用单变量测量进行漂移检测,我们隐含了特征独立性的假设。虽然在某些情况下这可能是近似正确的,但大多数情况下,我们的数据集可能在特征和其他重要结构之间存在一些复杂的交互。重要的是,当我们一次只考虑一个特征时,这可能会导致错过事件。因此,我们必须考虑数据的高维联合分布。
在多变量方法中,我们将多维辅助模型拟合到训练集的完整联合分布。该辅助模型将充当密度模型并学习数据集中的模式和结构。该模型可以量化任何给定数据点相对于参考数据集的典型或非典型程度。
在实现中,这种密度模型有许多潜在的方法——例如:变分自编码器、标准化流模型、密度模型、孤立森林等。任何灵活的技术都应该能够有效地工作。然后,我们可以使用这个学习到的密度模型来评估未来的数据点与训练数据的相似程度。
下面的草图进一步解释了这种方法,该草图显示了该过程的简化视图。
在左边,假设我们有一个训练数据集;在这种情况下,它只需要几个连续变量(X1 和 X2)。我们有少量样本数据点分散在 X1 和 X2 的这个空间周围。数据集有一些特定的模式和结构(X1 和 X2 之间的弯曲关系),我们可能不知道。
在第二步中,我们为这个数据集拟合了一个密度模型。为简洁起见,我们在这里省略了实现细节,但总体目标是量化在 X1-X2 空间中我们看到大量数据的位置和没有看到数据的位置。这在此草图中由阴影轮廓表示:最暗的阴影表示我们很可能看到一些数据的区域,而空白区域表示我们根本没有看到任何数据的区域。
在第三步中,我们可以使用这个经过训练的密度模型根据训练数据对任何新数据点的出现可能性进行评分。考虑这一点的另一种方法是根据新数据点是否符合训练集中的典型形状/模式或是否异常来对新数据点进行评分。例如,其中一个数据点是绿色的,因为它正好符合密度模型的“典型(typical)”区域。该数据点与训练集中的其他数据非常相似。相比之下,红色数据点位于从未见过任何训练数据的区域中。通过这种方式,这个数据点是异常的,与训练集中的任何东西都不一样。用技术术语来说,这个点相对于训练集来说是“分布外”。
在此处素描的示例中,请注意单变量漂移测量可能无法注意到异常数据点。从单变量的角度来看(针对 X1 或 X2),这个异常数据点非常典型。但是,由于 X1 和 X2 结构复杂,我们发现红色数据点与训练数据有很大不同。当我们不考虑多变量情况时,我们可能会错过许多微妙的变化,即生产数据从数据流形中脱落。
这种形式的分布外检测是监控机器学习系统健康状况的重要部分。 ML 模型能够了解自己的不确定性和置信度变得越来越重要。在许多情况下,这相当于在给定输入的情况下对其预测的不确定性。但是,通过分布外检测,我们可以了解模型认为世界是什么样的,并且我们可以在情况有很大不同时进行标记。这很有用,因为复杂的 ML 模型通常对其预测过于自信,尤其是对于与他们所训练的数据不同的数据。通过考虑每个输入是样本内还是样本外,我们可以更好地量化何时信任模型的预测以及何时更谨慎。
在这篇文章中,我们介绍了有关表格数据上下文的分布外检测的概念和想法。这个问题在所有类型的机器学习中都很普遍。在我们未来的帖子中,我们将深入探讨这些关于计算机视觉模型和 NLP 模型的概念和想法。
=