负责任的 AI:如何管理 Azure ML 中的数据漂移
您是否正在使用 Azure 进行机器学习,并希望确保您的模型不受数据漂移的影响并负责任地执行?在本文中,我们介绍了数据漂移的基础知识以及如何使用 Azure 的“检测数据集的数据漂移”功能处理它。我们还提供了有关如何使用此功能的指南以及示例代码片段。
什么是数据漂移?为什么它很糟糕?
数据漂移是指用于训练机器学习模型的数据与实际遇到的真实世界数据之间出现分歧。这种不一致可能导致预测错误,并导致模型整体性能下降。
想象一下,有人参加了网络安全课程。当他们完成课程后,他们就会了解最新的威胁,做好应对一切的准备!但随着形势的变化和黑客的新招数不断涌现,他们的前沿知识就会过时——他们所学的知识和他们实际面对的情况之间存在“偏差”。
结果呢?他们不太确定会发生什么,并且在遇到意外情况时反应较慢。然而,与网络安全专家不同,当这种情况发生时,机器学习模型不会将其标记为问题。相反,你必须监控它们是否存在偏差,并在检测到偏差时尽早解决。
这两种情况的解决方案都类似:定期“进修课程”或再培训对于保持最新和有效至关重要。无论您是人类专家还是计算模型,无法更新都可能导致效率低下或错误。
为什么会发生数据漂移?
数据漂移可能由多种因素引起,包括上游流程的变化、数据分布的自然变化(即使是在干净、有效的数据集中)或输入数据的收集和准备方式的改变。
数据漂移与概念漂移和模型漂移有何关系?
当数据特征和目标数据发生变化时,这有时被称为“概念漂移”。例如,一场流行病可能会突然改变消费者行为和医疗规程。概念漂移也可能是周期性的,与季节或选举有关,也可能是渐进性的,如人口老龄化或社会规范的变化。
数据漂移和概念漂移的综合效应使结果偏离轨道,统称为“模型漂移”,这可能会破坏下游流程并损坏数据。然而,在这个多风的世界里也有一线希望:具有讽刺意味的是,主动监测漂移的数据科学家经常会发现利用这些偏移数据的创新方法。
数据漂移与负责任的人工智能有何关联?
所有主要的云提供商都发布了负责任的 AI 指南。微软将其归结为六项负责任的 AI 原则,其中一项名为“可靠性和安全性”。模型漂移最终可能导致未能满足所有六项原则,但它直接影响产生安全可靠输出的目标。
Azure 的“检测数据集的数据漂移”功能如何提供帮助
数据漂移的发生不是一个“是否”的问题,而是一个“何时”的问题。为了处理在 Microsoft Azure 中构建的 ML 模型的这种必然性,您应该熟悉 Azure Machine Learning Studio 中的“数据集的数据漂移检测”功能。
(这并不是一个很吸引人的名字——我更喜欢“Drift Sniffer”这样的名字,意思是一只顽皮的圣伯纳犬从雪堆后面探出头来——但我离题了。现在的名字可能不那么可爱,但它使目的相当明确。)
使用此功能,您可以创建数据集监视器来检测训练数据集和传入数据集之间的差异。您还可以跟踪统计属性随时间的变化,并设置警报以主动识别漂移问题。当您确定数据漂移过多时,您可以创建基线数据集的新版本。
如何使用 Azure 的“检测数据集的数据漂移”功能
在开始之前,您应该了解以下四件事:
您可以使用 Python SDK 或 Azure 机器学习工作室来查看数据偏移指标。
转向 Azure Application Insights 以利用其他指标和见解。此资源随每个 Azure 机器学习工作区一起部署。
数据漂移检测目前处于公开预览阶段,与所有预览功能一样,它不提供 SLA,不建议用于生产工作负载。
如果您还没有一个有效的机器学习模型,并且生产中没有非平凡的数据集(或者至少在训练的后期阶段),那么为数据漂移监控设置有意义的概念验证可能会很困难。因此,请考虑遵循更多模板的代码片段,以便进行规划,而不是用于教学的教程。
此外,在计划对 Azure 机器学习解决方案进行常规监控和维护时,请务必考虑如何监控和应对数据漂移。
起始要求
以下来自适用于 Azure ML 的 Python SDK 的代码片段说明假设您已经拥有:
工作空间
已注册的表格数据集,例如 csv 文件(可能是你用于训练的文件),用作基线
设置用于通过另一个已注册数据集(即您的目标数据集)提取数据的管道
目标数据集具有与基线相同的特征,加上日期时间戳列,并且该数据集包含至少 9 周的数据
用于运行数据偏移监视器的现有计算群集
明白了吗?很好!让我们开始操作吧。
1. 定义数据偏移监视器1. Define a data shift monitor
from azureml.datadrift import DataDriftDetector
# set up a list of features to monitor
mon_features = ['ClaimDollars', 'Age', 'Accidents']
# define data drift detector
my_monitor = DataDriftDetector.create_from_datasets(ws, 'my-data-drift-monitor',
baseline_data_set, target_data_set,
compute_target=my_existing_cluster,
frequency='Week',
feature_list=mon_features,
drift_threshold=.2,
latency=24)
my_monitor
2. 补填数据以测试您的监视器
from azureml.widgets import RunDetails
# manually feed data to the monitor
bf_data = my_monitor.backfill(dt.datetime.now() - dt.timedelta(weeks=9), dt.datetime.now())
RunDetails(bf_data).show()
bf_data.wait_for_completion()
3. 查看与漂移相关的指标
# Access metrics using code or visit "Dataset monitors" under "Data" in Azure ML studio
snow_drifts = bf_data.get_metrics()
for metric in snow_drifts:
print(metric, snow_drifts[metric])
在我看来,只需要很少的代码就能带来很大的价值!
后续步骤Next steps
正如我之前所说,如果您没有使用非平凡数据集的 ML 模型,那么建立数据漂移建模的概念验证可能会很困难。如果您想开始建立一个模型 - 或者想确保您已勾选所有框 - 请查看我与 Brian Roehm 合著的课程:“ DP-100:在 Azure 上设计和实施数据科学解决方案”。根据名称,如果您正在学习 Microsoft Azure 数据科学家助理认证,这也是一门不错的课程。
如果您想了解有关如何根据负责任的 AI 原则衡量机器学习模型的更多信息,请阅读Azure 的负责任 AI 仪表板。 Pluralsight 还提供一系列初级、中级和专家级 AI 和 ML 课程- 您可以注册 10 天免费试用,无需承诺。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~