数据分布漂移和监控
机器学习的假设是训练集和测试集是独立同分布(i.i.d)的,也就是相同的平稳分布。但是这种假设在现实世界中是很难保证的,现实中,训练数据往往是有限的,很难覆盖到所有可能存在的特征空间,且现实的数据是会发生变化的,比如突变、或季节性的变化等。
- 数据分布变化的类型
在监督学习中,训练数据可以视为来自联合分布P(X,Y)的一组样本,然后通过机器学习对P(Y|X)进行建模。这个联合分布可以用两种方式分解:
(1) P(X,Y) = P(Y|X)P(X)
(2) P(X,Y) = P(X|Y)P(Y)
P(Y|X)表示给定输入的输出的条件概率,P(X)表示输入的概率密度,P(Y)表示输出的概率密度。特征漂移、标签漂移和概念漂移的定义如下:
- 特征漂移是指P(X)发生变化,但P(Y|X)保持不变。
特征漂移通常是由于环境变化或应用程序的使用方式发生重大变化导致的,例如您有一个模型来预测免费用户转化为付费用户的可能性。用户的收入水平是一个特征。贵公司的营销部门最近发起了一项活动,该活动从比您当前的人口统计更富裕的人口统计中吸引用户。模型中的输入分布发生了变化,但具有给定收入水平的用户转换的概率保持不变。
快速解决协变量漂移的方法:如果您事先知道真实世界的输入分布与训练输入分布有何不同,则可以利用重要性加权等技术来训练您的模型以适用于真实世界的数据。重要性加权包括两个步骤:估计真实世界输入分布与训练输入分布之间的密度比,然后根据该比对训练数据进行加权,并在此加权数据上训练 ML 模型。
- 标签漂移是指P(Y)发生变化,但P(X|Y)保持不变。
特征漂移往往会导致标签漂移,也就是特征漂移往往会和标签漂移一起发生。例如考虑乳腺癌分类的例子,假设训练数据中年龄大于40岁的女性样本量比测试集中的多,那么在训练的时候,正标签的比例会更高。但是如果我们从训练集和测试集中分别随机抽取一个患有乳腺癌的女性,女性的年龄大于40的概率是一样的,也就是P(X|Y)不变。
概念漂移往往也会导致标签漂移。例如,假设现在每个女性都服用一种预防性药物,有助于降低乳腺癌的几率。那么,对于所有年龄段的女性,概率P(Y|X)的概率都会降低,自然标签会发生漂移。然而,给定一个患有乳腺癌的人,年龄分布保持不变,也就是P(X|Y)不变,这仍然是一个标签漂移的例子。 - 概念漂移是指P(Y|X)发生变化,但P(X)保持不变。
概念漂移往往是事件触发的,比如一个模型负责根据房屋的特征预测房屋的价格。在上海这次疫情之前,上海的三居室公寓可能要花费一千万。然而,这次疫情爆发后,许多人离开了上海,所以同样的房子只需要6百万。因此,即使房屋特征的分布保持不变,房屋价格的条件分布也发生了变化。很多情况下,概念漂移是周期性或者季节性的。例如,拼车的价格将在工作日和周末波动,而机票在假日季节会上涨。公司可能有不同的模型来处理周期性和季节性漂移。例如,他们可能有一个模型来预测工作日的拼车价格和另一个模型来预测周末的价格。
- 检测数据分布变化
数据分布变化只有在导致模型性能下降时才会成为问题。但在生产的时候,Ground Truth标签的获取会延时,这时不能及时的评估模型的性能。这时可以监控输入分布 P(X)、标签分布 P(Y) 和条件分布 P(X|Y) 和 P(Y|X)。
-
统计方法
在工业中,许多公司用来检测两个分布是否相同的简单方法是比较它们的统计数据,如均值、中值、方差、分位数、偏度、峰度等。例如,您可以计算推理期间特征的值,并将它们与训练期间计算的指标进行比较。截至 2021 年 10 月,即使TensorFlow Extended 的内置数据验证工具也仅使用汇总统计数据来检测训练数据和服务数据之间的偏差以及不同日期训练数据之间的偏移。
另一种复杂的方案是双样本假设检验。这是一种用于确定两组数据之间是否具有统计显著性的测试。如果差异具有统计显著性,则证明差异是由两个总体来自不同的分布造成的。基本的两样本检验是 Kolmogorov-Smirnov 检验,也称为 KS 检验,但只适用于一维的。另一项测试是最小二乘密度差,这是一种基于最小二乘密度差估计方法的算法。 -
时间尺度窗口方法
为了检测数据分布随时间的变化,一种常见的方法是将机器学习模型的输入数据视为时间序列数据。
此图像来源于参考文献[1]。
分布是否随时间漂移取决于指定的时间尺度窗口。如果我们使用从第 9 天到第 14 天的数据作为基本分布,那么第 15 天看起来就像一个漂移。但是,如果我们使用第 1 天到第 14 天的数据作为基础分布,那么第 15 天的所有数据点很可能都是由同一分布生成的。在计算一段时间内的运行统计数据时,区分累积统计数据和滑动统计数据很重要。滑动统计在单个时间尺度窗口内计算,例如一个小时。累积统计数据会不断更新更多数据。这意味着对于每个时间尺度窗口的每个开始,都会重置滑动精度,而不会重置累积滑动精度。由于累积统计数据包含来自先前时间窗口的信息,因此它们可能会掩盖特定时间窗口中发生的情况。这是一个示例,说明累积精度如何隐藏 16 到 18 小时之间精度的突然下降。
此图像来源于参考文献[1]。
很多公司都将训练数据的分布作为基础分布,在一定的粒度级别上监控生产数据分布,比如每小时和每天。您的时间尺度窗口越短,您就能越快地检测到数据分布的变化。更高级的监控平台甚至尝试了根本原因分析 (RCA) 功能,该功能可以自动分析各种时间窗口大小的统计数据,以准确检测数据发生变化的时间窗口。
- 解决数据分布变化
- 目前主流研究的方法:使用海量数据训练大模型,如果训练数据集足够大,模型将能够学习到如此全面的分布,以至于模型在生产中遇到的任何数据点都可能来自这个分布。
- 全量更新
- 增量更新,微调等
只对新数据进行微调显然是首选,因为它需要的计算资源更少,并且比在新旧数据上从头开始重新训练模型运行得更快。然而,根据他们的设置,许多公司发现微调并没有给他们的模型提供足够好的性能,因此不得不从头开始重新训练。
参考文献
[1] https://huyenchip.com/2022/02/07/data-distribution-shifts-and-monitoring.html#monitoring-observability Data Distribution Shifts and Monitoring
- 点赞
- 收藏
- 关注作者
评论(0)