查看演示 · 文档 · Eurybia快速浏览 · 教程文章
🔍 概览
Eurybia是一个Python库,旨在帮助:
- 检测数据漂移和模型漂移
- 在将模型投入生产前验证数据。
Eurybia解决了机器学习模型长期工业化和可维护性的挑战。 因此,它有助于更好的模型监控、模型审核和更广泛的人工智能治理。
为此,Eurybia生成一份HTML报告:
🕐 快速开始
显示结果的3个步骤:
- 步骤1:声明SmartDrift对象
您至少需要传递2个pandas DataFrames来实例化SmartDrift类(当前或生产数据集,基线或训练数据集)
from eurybia import SmartDrift
sd = SmartDrift(
df_current=df_current,
df_baseline=df_baseline,
deployed_model=my_model, # 可选:将结果与部署模型的重要性进行对比
encoding=my_encoder, # 可选:如果部署了模型和编码器以使用此模型
dataset_names={
"df_current": "当前数据集名称",
"df_baseline": "基线数据集名称",
}, # 可选:输出的名称
)
- 步骤2:编译模型
有不同的方式来编译SmartDrift对象
sd.compile(
full_validation=True, # 可选:为节省时间,保留默认值False。如果为True,分析列之间模态的一致性。
date_compile_auc="01/01/2022", # 可选:在计算非当前时间的漂移时有用
datadrift_file="datadrift_auc.csv", # 可选:包含数据漂移性能历史的csv文件名
)
- 步骤3:生成报告
如果提供了数据科学模型(已部署)及其编码器,报告内容将更加丰富。 请注意,提供deployed_model和encoding只有在两个数据集都可被模型使用时才能产生有用的结果(即所有特征都存在,数据类型正确等)。
sd.generate_report(
output_file="output/my_report_name.html",
title_story="我的报告标题",
title_description="我的报告副标题", # 可选:添加描述报告的副标题
project_info_file="project_info.yml", # 可选:在报告中添加信息
)
🛠 安装
Eurybia旨在与Python 3.8到3.10版本一起工作。可以使用pip进行安装:
pip install eurybia
如果遇到兼容性问题,您可以查看Eurybia文档中的相应部分这里。
🔥 特性
- 显示清晰易懂的洞察报告:
- 允许数据科学家通过动态报告快速探索漂移,轻松在漂移检测和数据集特征之间导航。
简而言之:
-
使用调度器(如Airflow)监控漂移
-
评估数据漂移水平
-
促进数据分析师和数据科学家之间的协作,并轻松与非数据用户分享和讨论结果
更具体地说:
- 通过以下方式呈现数据漂移和模型漂移随时间的变化:
- 特征重要性:最能区分两个数据集的特征
- 散点图:特征重要性相对于漂移重要性
- 数据集分析:基线数据集和最新数据集之间变量分布的比较
- 预测值分析:基线数据集和最新数据集之间目标分布的比较
- 数据漂移分类器的性能
- 数据漂移分类器的特征贡献
- AUC演变:不同时期数据漂移分类器的比较
- 模型性能演变:您的模型随时间的性能
📢 为什么我们创建Eurybia
机器学习模型生命周期的可视化可以帮助理解Eurybia的重要性。在其生命周期中,机器学习模型经历以下阶段:模型学习、模型部署、模型监控。
让我们分别将模型的特征、目标和预测命名为X、Y和P(X, Y)。P(X, Y)可以分解为:P(X, Y) = P(Y|X)P(X),其中P(Y|X)是给定模型特征的输出条件概率,P(X)是模型特征的概率密度。
数据验证:验证用于生产预测的数据是否与部署前的训练数据或测试数据相似。用公式表示,P(Xtraining)类似于P(XtoDeploy)
数据漂移:与部署前的训练或测试数据相比,生产数据随时间的演变。用公式表示,比较P(Xtraining)和P(XProduction)
模型漂移:由于目标特征统计属性的变化(概念漂移)或数据变化(数据漂移)导致的模型性能随时间的演变。用公式表示,当P(Y|XProduction)相对于P(Y|Xtraining)发生变化时是概念漂移。而P(Y,XProduction)相对于P(Y,Xtraining)的变化是模型漂移
Eurybia帮助数据分析师和数据科学家通过报告进行协作,使他们能够在将模型部署到生产环境之前就漂移监控和数据验证进行交流。
Eurybia还通过在单一报告中显示任何模型和数据的有用信息,为数据科学审计做出贡献。
⚙️ Eurybia如何检测数据漂移
Eurybia主要使用二元分类模型(称为数据漂移分类器)来预测样本是属于训练数据集(或基线数据集)还是生产数据集(或当前数据集)。
如下图所示,有两个数据集,基线数据集和当前数据集。这些是我们希望比较以评估是否发生数据漂移的数据集。在第一个数据集中,我们创建一个名为"target"的列,它只填充0,而在第二个数据集中,我们也添加这个列,但这次只填充1值。
我们的目标是在这两个数据集(连接在一起)之上构建一个二元分类模型。一旦训练完成,这个模型将有助于判断是否存在数据漂移。为此,我们通过AUC指标来查看模型性能。AUC越大,漂移越大。(AUC = 0.5表示没有数据漂移,AUC接近1表示正在发生数据漂移)
这个数据漂移分类器的可解释性允许我们优先考虑对漂移重要的特征,并关注那些对生产中的模型影响最大的特征。
要使用Eurybia监控随时间变化的漂移,你可以使用调度器自动和定期进行计算。
你可以使用的调度器之一是Apache Airflow。要使用它,你可以阅读官方文档并阅读像这样的博客:Apache Airflow入门
🔬 构建工具
本节列出了Eurybia中使用的库。
📖 教程
这个GitHub仓库提供了许多教程,让你能快速开始使用Eurybia。
概述
在模型部署前验证数据
测量和分析数据漂移
测量和分析模型漂移
关于报告和图表的更多详情
🔭 路线图
- 概念漂移
检测概念漂移并获取这种漂移的分析和可解释性。已开启一个问题:添加概念漂移
- API模式
使Eurybia适应API模式消费的模型。已开启一个问题:使Eurybia适应API模式
如果你想贡献,可以在讨论标签中联系我们