随着机器学习模型成为自动化和预测任务越来越流行的解决方案,许多科技公司和数据科学家采用了以下工作范式:数据科学家负责解决特定问题,他们会得到可用相关数据的快照,他们致力于训练模型来解决它。 一旦模型经过测试,它就会进入生产阶段。最终,模型的性能开始下降,这通常是由于概念漂移。
概念漂移是指目标变量(模型试图预测的内容)的统计特性随时间以不可预见的方式发生变化的情况。
在视觉上,我们可以说概念是一种区分上图中蓝点和绿点的方法。 黑线表示将蓝点和绿点分开的概念。
机器学习中的漂移类型
对于下面的定义,我们以下参数表示:
- XXX :模型输入。
- y^\hat yy^ : 模型的预测。
- YYY :真实标签。
漂移类型
- 概念漂移:p(Y∣X)p(Y|X)p(Y∣X)分布的变化,意味着模型的输入和真实标签之间的关系发生了变化。
- 预测漂移:预测标签分布的变化(p(y^∣X)p(ŷ|X)p(y^∣X)),意味着模型的输入和模型的预测之间的关系发生了变化。
- 标签漂移:标签 p(Y)p(Y)p(Y) 的概率变化。
- 特征漂移:p(X)p(X)p(X) 概率的变化,意味着模型输入的分布发生了变化。
概念漂移可以以不同的方式出现
- 突然漂移:一个新概念在短时间内出现(例如,在 2020 年 3 月 COVID-19 开始时,股价突然变化)。
- 逐渐漂移:一个新概念会在很长一段时间内逐渐取代旧概念(例如,您会看到越来越少的新石油公司和越来越多的新技术公司)。
- 递增的漂移:旧概念在一段时间内逐渐变为新概念(例如,股票价格逐渐稳定上涨)
- 重复出现的概念:一个旧概念可能会在一段时间后再次出现(例如,周末与工作日的送餐量变化)。
注意:
- 在逐渐漂移中,两个概念来来回回,直到新概念最终稳定下来;
- 在递增的漂移中,概念逐渐转变为新概念。
概念漂移的两种类型
为了更好地理解概念漂移的影响,我们需要区分两种类型的概念漂移:
- 虚拟的漂移:当 p(X)p(X)p(X) 改变但 p(Y∣X)p(Y|X)p(Y∣X) 没有改变时。 这意味着特征的底层分布发生了变化,但模型的性能没有改变。
- 真正的漂移:p(Y∣X)p(Y|X)p(Y∣X) 发生了变化,这意味着模型的性能发生了变化。
虚拟的漂移与真实的漂移如下图所示。
现实生活中的概念漂移
要了解概念漂移如何在现实生活中表现出来,我们应该看看我们的评估指标。在寻找概念漂移时,我们将数据视为流,并继续检查评估指标如何随时间波动。
一旦模型处于其生产环境中,我们就可以监控其性能,并通过查看其在数据流上的性能来寻找概念漂移。
通过将数据流划分为时间范围(例如:小时、天、周),我们可以了解数据中发生了什么变化。 如果输入分布(即:p(X)p(X)p(X))发生变化,但真实标签 p(Y∣X)p(Y|X)p(Y∣X) 没有变化,我们可以将其归类为虚拟漂移,并得出结论:输入数据发生了变化,但没有影响其性能。如果标签发生了实际变化,即 p(Y∣X)p(Y|X)p(Y∣X) 发生了变化,这意味着在时间范围内发生了真正的漂移,我们将检测它的影响。
例如,我们有一个训练有素的模型,我们使用准确率作为指标来衡量它的性能。我们希望随着时间的推移查看它的准确率:如果模型的性能随着时间的推移而下降,这意味着模型会衰减。
模型退化(即模型漂移、过时)是指模型性能随时间的推移而下降,并且因用户场景而异。有些模型可以运行多年,而其他模型的保质期不到一天。
上图已经表明,在发生显着退化点之前定期重新训练模型有助于在一定程度上缓解问题,但在许多情况下,这根本不够,在其他情况下甚至可能使情况变得更糟。
- 有时很难确定模型显着退化的点。
- 我们并不总是知道需要重新训练的时间范围:一周可能为时已晚,但每小时的维护成本可能很高。
- 在许多情况下,重新训练的时间窗口是不断变化的,因此,需要监控和优化这个参数本身。
- 在许多情况下,仅仅重新训练是不够的。概念上的重大变化可能需要一种全新的模型。
- 在某些情况下,变化源于流水线其他部分的缺陷,例如:schema更改、删除的字段、应用程序错误等。在这种情况下,用有缺陷的数据重新训练模型可能没有效果,甚至可能加剧问题。
避免概念漂移破坏模型的最佳方法是在监控工具的帮助下掌握它。