监控生产中的机器学习模型

数据挖掘 机器学习 数据产品
2021-09-17 00:31:17

我正在寻找能够让我在机器学习模型投入生产后对其进行监控的工具。我想监控:

  1. 长期变化:特征分布相对于训练时间的变化,这表明重新训练模型。
  2. 短期变化:特性中的错误(分布的根本变化)。
  3. 模型性能相对于给定指标的变化。

我一直在寻找互联网,但我没有看到任何对任何案例的深入分析。你能给我提供技术、书籍、参考资料或软件吗?

4个回答

相对于训练时间的分布变化有时被称为概念漂移

在我看来,网上关于概念漂移的信息量不是很大。您可以从它的维基百科页面或一些博客文章开始,例如thisthis

在研究方面,您可能想看看João Gama 的科学成果,或者他的书的第 3 章。

关于软件包,快速搜索会发现 github 上的几个 python 库,例如tornadoconcept-drift

更新:最近我遇到了ML-drifter,这是一个似乎符合 scikit-learn 模型问题要求的 python 库。

在阅读这篇Nature 论文时:Explainable AI for Trees: From Local Explanations to Global Understanding第 2.7.4 节“本地模型监控揭示了部署的机器学习模型以前不可见的问题”,如下所述:

在实践中部署机器学习模型具有挑战性,因为部署后输入特征可能会发生变化。很难检测到何时发生此类变化,因此机器学习管道中的许多错误都未被检测到,即使在顶级科技公司的核心软件中也是如此 [78]。我们证明了本地模型监控通过分解模型输入特征之间的损失并直接识别有问题的特征(如果有)来帮助调试模型部署。与简单地推测全局模型性能波动的原因相比,这是一个显着的改进

然后他们用 TreeExplainer 提供的 Shapley 值做了 3 次实验

  1. 我们故意在数据集的三分之二处交换了手术室 6 和 13 的标签,以模仿典型的特征管道错误。模型预测的整体损失没有表明出现问题(图 5A),而房间 6 特征的 SHAP 监控图清楚地显示了标签错误何时开始

  2. 图 5C 显示了在部署窗口开始后不久全身麻醉功能的错误峰值。此峰值对应于受先前未发现的临时电子病历配置问题影响的程序子集(方法 17)。

  3. 图 5D 显示了特征随时间漂移的示例,而不是处理错误。在训练期间和部署初期,使用“心房颤动”功能可降低损失;但是,随着时间的推移,该功能会逐渐变得不那么有用,最终会损害模型。我们发现这种漂移是由技术和人员变动驱动的房颤消融手术持续时间的显着变化引起的

当前的部署实践是监控模型随时间的整体损失,以及输入特征的潜在统计数据。TreeExplainer 使我们能够直接在各个特征之间分配模型的损失

您所描述的被称为概念漂移,并且有很多软件初创公司将解决方案推向市场(包括我们在内 - 很高兴向您展示我们拥有的东西)。

  1. 检测漂移的一种非常简单的方法是使用 Kolmogorov-Smirnov 检验或 Wasserstein 距离监测预测数据集和训练数据集的分布之间的差异。

  2. 对于分布的根本变化,您可能要做的是创建一个模型来了解数据集的独特模式,并使用异常值检测器来确定分布的真正根本变化,而不是识别误报。

  3. 这是一个有趣的用例——你能分享一个例子吗?

你可以看看 Anodot 的 MLWatcher。该工具的几个亮点如下。

  • MLWatcher 从生产中的机器学习模型收集和监控指标。
  • 这个开源 Python 代理可以免费使用,只需连接到您的 BI 服务即可将结果可视化。
  • 要检测这些指标中的异常,请设置基于规则的警报,或同步到 ML 异常检测解决方案(例如 Anodot)以大规模执行。
  • 输入特征的分布。

您可以在这里查看它们的完整功能。