数据漂移检测(一):使用表格数据的多变量漂移(Arthur)

简介: :这是我们深入探讨数据漂移检测问题的系列文章中的第一篇。我们不仅探讨了为什么它是模型监控的重要组成部分,而且我们还讨论了要牢记的制度和方法。在本系列的第一部分中,我们讨论了表格数据上下文中的漂移,并描述了解决这些问题的单变量和多变量技术。在后续文章中,我们将深入研究图像和文档等非结构化数据,并讨论如何在这些更具挑战性的情况下构建数据漂移检测系统。

表格数据的多元数据漂移

监控机器学习模型的持续成功需要监控进入该模型的数据。这意味着确保今天通过的数据看起来完全符合您的预期。最终,您要确保数据看起来很典型:它看起来是否与第一次训练模型时相同?如果数据发生了显着变化,则您的训练模型可能过时并导致预测不准确。

无论您是在谈论表格数值数据、图像数据还是 NLP 数据,数据监控问题都是一样的。在所有情况下,我们都会对数据应该是什么样子有一定的了解,然后在事情误入歧途时发出警报。在技术术语中,这通常被称为分布外检测,我们希望找出数据何时不再符合其过去(模型训练时)的形状和分布。关于数据漂移检测的思考方式有很多种,在这篇文章中,我们将描述高维和多变量方法的好处。


开始考虑数据漂移检测的一种方便方法是测量现在通过模型的数据训练集之间的分布相似性。

一个很好的开始方法是分别查看模型的每个输入变量(以及输出)。这种所谓的单变量漂移方法可以通过许多技术实现来解决。常见的方法包括假设检验,例如: KS 检验卡方检验,以及所谓的 f-散度(例如: KLDivergence、JSDivergence) 或类似方法。对于所有这些方法,我们通常会以单变量方式将它们应用于模型的每个输入特征(参见图 1)。

网络异常,图片无法展示
|


图 1:比较分布。在此图中,我们检查单个输入特征(年龄)并查看该变量在两个时间点的分布:在训练数据中(绿色分布)和在今天的生产数据中(紫色分布)。很明显,这种分布的总体形状发生了很大变化。这可能导致模型不准确。

理论上可以计算出更高维的变体,但由于数据稀疏,这些方法在高维应用中无效。首先,通过使用单变量测量进行漂移检测,我们隐含了特征独立性的假设。虽然在某些情况下这可能是近似正确的,但大多数情况下,我们的数据集可能在特征和其他重要结构之间存在一些复杂的交互。重要的是,当我们一次只考虑一个特征时,这可能会导致错过事件。因此,我们必须考虑数据的高维联合分布


在多变量方法中,我们将多维辅助模型拟合到训练集的完整联合分布。该辅助模型将充当密度模型并学习数据集中的模式和结构。该模型可以量化任何给定数据点相对于参考数据集的典型或非典型程度。

在实现中,这种密度模型有许多潜在的方法——例如:变分自编码器、标准化流模型、密度模型、孤立森林等。任何灵活的技术都应该能够有效地工作。然后,我们可以使用这个学习到的密度模型来评估未来的数据点与训练数据的相似程度。

下面的草图进一步解释了这种方法,该草图显示了该过程的简化视图。

在左边,假设我们有一个训练数据集;在这种情况下,它只需要几个连续变量(X1 和 X2)。我们有少量样本数据点分散在 X1 和 X2 的这个空间周围。数据集有一些特定的模式和结构(X1 和 X2 之间的弯曲关系),我们可能不知道。


在第二步中,我们为这个数据集拟合了一个密度模型。为简洁起见,我们在这里省略了实现细节,但总体目标是量化在 X1-X2 空间中我们看到大量数据的位置和没有看到数据的位置。这在此草图中由阴影轮廓表示:最暗的阴影表示我们很可能看到一些数据的区域,而空白区域表示我们根本没有看到任何数据的区域。

在第三步中,我们可以使用这个经过训练的密度模型根据训练数据对任何新数据点的出现可能性进行评分。考虑这一点的另一种方法是根据新数据点是否符合训练集中的典型形状/模式或是否异常来对新数据点进行评分。例如,其中一个数据点是绿色的,因为它正好符合密度模型的“典型(typical)”区域。该数据点与训练集中的其他数据非常相似。相比之下,红色数据点位于从未见过任何训练数据的区域中。通过这种方式,这个数据点是异常的,与训练集中的任何东西都不一样。用技术术语来说,这个点相对于训练集来说是“分布外”。

网络异常,图片无法展示
|


在此处素描的示例中,请注意单变量漂移测量可能无法注意到异常数据点。从单变量的角度来看(针对 X1 或 X2),这个异常数据点非常典型。但是,由于 X1 和 X2 结构复杂,我们发现红色数据点与训练数据有很大不同。当我们不考虑多变量情况时,我们可能会错过许多微妙的变化,即生产数据从数据流形中脱落。

这种形式的分布外检测是监控机器学习系统健康状况的重要部分。 ML 模型能够了解自己的不确定性和置信度变得越来越重要。在许多情况下,这相当于在给定输入的情况下对其预测的不确定性。但是,通过分布外检测,我们可以了解模型认为世界是什么样的,并且我们可以在情况有很大不同时进行标记。这很有用,因为复杂的 ML 模型通常对其预测过于自信,尤其是对于与他们所训练的数据不同的数据。通过考虑每个输入是样本内还是样本外,我们可以更好地量化何时信任模型的预测以及何时更谨慎


在这篇文章中,我们介绍了有关表格数据上下文的分布外检测的概念和想法。这个问题在所有类型的机器学习中都很普遍。在我们未来的帖子中,我们将深入探讨这些关于计算机视觉模型和 NLP 模型的概念和想法。

=

相关文章
|
机器学习/深度学习 监控
数据漂移、概念漂移以及如何监控它们(mona)
在机器学习模型监控的上下文中经常提到数据和概念漂移,但它们到底是什么以及如何检测到它们?此外,考虑到围绕它们的常见误解,是不惜一切代价避免数据和概念漂移的事情,还是在生产中训练模型的自然和可接受的后果?请仔细阅读,找出答案。在本文中,我们将提供模型漂移的细粒度细分,以及检测它们的方法以及处理它们时的最佳实践。
|
2月前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
173 1
|
6月前
|
机器学习/深度学习 运维 算法
R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值
R语言用ARIMA模型滑动时间窗口识别网络流量时间序列异常值
|
编解码 算法 数据可视化
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
110 0
观测信号(包括异常值)的状态估计方法(Matlab代码实现)
观测信号(包括异常值)的状态估计方法(Matlab代码实现)
|
传感器 编解码 计算机视觉
使用星凸随机超曲面模型对扩展对象和分组目标进行形状跟踪(Matlab代码实现)
使用星凸随机超曲面模型对扩展对象和分组目标进行形状跟踪(Matlab代码实现)
138 0
使用星凸随机超曲面模型对扩展对象和分组目标进行形状跟踪(Matlab代码实现)
|
机器学习/深度学习 算法 计算机视觉
舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
舌体胖瘦的自动分析-曲线拟合-或许是最简单判断舌形的方案(六)
145 0
|
算法 5G
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
117 0
|
运维 监控 算法
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
127 0
|
机器学习/深度学习 编解码 人工智能
GANet:基于关键点的全局关联车道线检测网络(CVPR2022)
车道检测是一项具有挑战性的任务,需要预测车道线的复杂拓扑形状并同时区分不同类型的车道。早期的工作遵循自上而下的路线图,将预定义的锚回归到各种形状的车道线,由于锚形状固定,缺乏足够的灵活性来适应复杂的车道形状。
GANet:基于关键点的全局关联车道线检测网络(CVPR2022)