Project Icon

nannyml

部署后模型性能估算和数据漂移检测

NannyML是一个开源的Python库,专为数据科学家设计,能够在没有目标数据的情况下估算模型的部署后性能,并检测数据漂移。它能将数据漂移警报与模型性能变化智能关联。NannyML支持所有表格数据、分类和回归模型,拥有简单易用的界面和互动式可视化功能。通过NannyML,用户可以监控模型性能、分析数据漂移、找到模型性能下降的根本原因,并避免不必要的警报干扰,轻松完成环境集成和配置。

文档状态 PyPI - 许可证

NannyML - 用于检测静默ML模型失效的开源Python库 | Product Hunt

网站文档社区Slack

animated

💡 什么是NannyML?

NannyML是一个开源Python库,允许您估计部署后的模型性能(无需访问目标数据),检测数据漂移,并智能地将数据漂移警报与模型性能变化联系起来。NannyML专为数据科学家设计,具有易用的界面、交互式可视化功能,完全与模型无关,目前支持所有表格用例、分类和回归

NannyML的核心贡献者研究并开发了多种用于估计模型性能的新算法:基于置信度的性能估计(CBPE)直接损失估计(DLE)。 Nansters还发明了一种使用基于PCA的数据重构来检测多变量数据漂移的新方法。

如果您喜欢我们正在做的工作,请务必成为一名Nanster,加入我们的社区slack ,并在GitHub上给我们一个星⭐。

☔ 为什么使用NannyML?

NannyML通过性能监控和部署后数据科学完善了闭环,使数据科学家能够快速理解并自动检测静默模型失效。通过使用NannyML,数据科学家终于可以保持对部署的机器学习模型的完全可见性和信任。 使用NannyML可以带来以下好处:

  • 结束因不知道模型性能而导致的失眠之夜😴
  • 分析随时间变化的数据漂移和模型性能
  • 发现模型性能不如预期的根本原因
  • **不会产生警报疲劳!**只有在模型性能受到影响时才需要反应
  • 在任何环境中轻松设置

🧠 深入了解

NannyML资源描述
☎️ NannyML 101新手入门NannyML?从这里开始!
🔮 性能估计魔法是如何运作的。
🌍 真实世界示例查看NannyML的真实世界示例。
🔑 关键概念我们使用的关键概念词汇表。
🔬 技术参考监控您的ML模型性能。
🔎 博客NannyML团队对部署后数据科学的思考。
📬 新闻简报部署后数据科学的所有内容。订阅以查看最新论文和博客。
💎 v0.11.0新功能新特性、bug修复。
🧑‍💻 贡献如何为NannyML项目和代码库做出贡献。
加入slack需要针对您特定用例的帮助?在slack上跟我们打个招呼吧!

🔱 特性

1. 性能估计和监控

当您部署的预测模型的实际结果延迟,或者甚至完全缺少部署后的目标标签时,您可以使用NannyML的CBPE算法为分类问题估计模型性能,或使用NannyML的DLE算法为回归问题估计性能。这些算法可以为您提供任何您想要的估计指标,例如ROC AUC或RSME。CBPE和DLE并不是估计未来模型预测的性能,而是估计在推理时做出的预测的预期模型性能。

NannyML 还可以在目标可用时跟踪机器学习模型的实际性能

2. 数据漂移检测

为了检测多变量特征漂移,NannyML 使用基于 PCA 的数据重构。随时间监控重构误差的变化,当某个时期的重构误差超过阈值时,会记录数据漂移警报。这个阈值是根据参考期间观察到的重构误差计算的。

NannyML 利用统计测试来检测单变量特征漂移。我们刚刚添加了一批新的单变量测试,包括 Jensen-Shannon 距离和 L-无穷距离,请查看完整列表。这些测试的结果会随时间追踪,适当校正以抵消多重性,并叠加在时间特征分布上。(也可以可视化测试统计量随时间的变化,以了解漂移的大小。)

NannyML 使用相同的统计测试来检测模型输出漂移

目标分布漂移也可以使用相同的统计测试进行监控。请记住,这个操作需要实际值的存在。

3. 智能警报

由于 NannyML 可以估计性能,因此可以筛选出不影响预期性能的数据漂移警报,从而避免警报疲劳。除了将数据漂移问题与性能下降联系起来之外,还可以使用 NannyML 的排序器根据其他标准对警报进行优先级排序。

🚀 开始使用

安装 NannyML

NannyML 依赖于 LightGBM。这可能需要你安装额外的特定操作系统二进制文件。你可以按照官方安装指南进行操作。

从 PyPI 安装:

pip install nannyml

从 Conda 安装:

 conda install -c conda-forge nannyml

通过 Docker 运行:

docker -v /local/config/dir/:/config/ run nannyml/nannyml nml run

注意风险! 使用最新的 NannyML 开发版本需自担风险:

python -m pip install git+https://github.com/NannyML/nannyml

快速开始

以下代码片段基于我们的最新发布版本

import nannyml as nml
import pandas as pd
from IPython.display import display

# 加载真实世界数据:
reference_df, analysis_df, _ = nml.load_us_census_ma_employment_data()
display(reference_df.head())
display(analysis_df.head())

# 选择分块器或设置块大小:
chunk_size = 5000

# 初始化,指定所需的数据列,拟合估计器并进行估计:
estimator = nml.CBPE(
    problem_type='classification_binary',
    y_pred_proba='predicted_probability',
    y_pred='prediction',
    y_true='employed',
    metrics=['roc_auc'],
    chunk_size=chunk_size,
)
estimator = estimator.fit(reference_df)
estimated_performance = estimator.estimate(analysis_df)

# 显示结果:
figure = estimated_performance.plot()
figure.show()

# 定义特征列:
features = ['AGEP', 'SCHL', 'MAR', 'RELP', 'DIS', 'ESP', 'CIT', 'MIG', 'MIL', 'ANC',
       'NATIVITY', 'DEAR', 'DEYE', 'DREM', 'SEX', 'RAC1P']

# 初始化执行单变量漂移计算的对象:
univariate_calculator = nml.UnivariateDriftCalculator(
    column_names=features,
    chunk_size=chunk_size
)

univariate_calculator.fit(reference_df)
univariate_drift = univariate_calculator.calculate(analysis_df)

# 使用基于计数的排序器获取漂移最严重的特征:
alert_count_ranker = nml.AlertCountRanker()
alert_count_ranked_features = alert_count_ranker.rank(univariate_drift)
display(alert_count_ranked_features.head())

# 绘制前3个特征的漂移结果:
figure = univariate_drift.filter(column_names=['RELP','AGEP', 'SCHL']).plot()
figure.show()

# 比较选定特征的漂移与估计性能
uni_drift_AGEP_analysis = univariate_drift.filter(column_names=['AGEP'], period='analysis')
figure = estimated_performance.compare(uni_drift_AGEP_analysis).plot()
figure.show()

# 绘制选定特征的分布变化:
figure = univariate_drift.filter(period='analysis', column_names=['RELP','AGEP', 'SCHL']).plot(kind='distribution')
figure.show()

# 获取目标数据,计算、绘制并比较实际性能与估计性能:
_, _, analysis_targets_df = nml.load_us_census_ma_employment_data()

analysis_with_targets_df = pd.concat([analysis_df, analysis_targets_df], axis=1)
display(analysis_with_targets_df.head())

performance_calculator = nml.PerformanceCalculator(
    problem_type='classification_binary',
    y_pred_proba='predicted_probability',
    y_pred='prediction',
    y_true='employed',
    metrics=['roc_auc'],
    chunk_size=chunk_size)

performance_calculator.fit(reference_df)
calculated_performance = performance_calculator.calculate(analysis_with_targets_df)

figure = estimated_performance.filter(period='analysis').compare(calculated_performance).plot()
figure.show()

📖 文档

🦸 贡献和社区

我们希望与社区一起构建 NannyML!目前最简单的贡献方式是在问题下提出新功能或记录错误。有关更多信息,请查看如何贡献

感谢所有贡献者!

CoffiDevsmetamamrit110bgalvaoSoyGema sebasmosshezadkhan137highstepperWojtekNMLYYYasin19

giodavolimireiarbaskervilskirfrenoyjrggementiza

PieDude12hakimelakhrassmaciejbalawejderdependabot[bot]Dbhasin1

alexnannysantiviquezcartgrBobbuAbadeerjnesfield

NeoKishmichael-nmljakubnmlnikmlnnansters

🙋 获取帮助

寻求帮助的最佳场所是在社区Slack。欢迎加入并提出问题或反馈问题。一定会有人回复你。

🥷 保持更新

如果你想及时了解NannyML库的最新变化,可以订阅我们的发布说明。如果你想了解NannyML团队对部署后数据科学的看法,欢迎访问我们的博客。你还可以订阅我们的新闻通讯,它汇集了突出显示部署后ML挑战的最佳论文、文章、新闻和开源库。

📍 路线图

想知道我们接下来要做什么吗?看看我们的路线图。如果你有任何问题,或者希望看到不同的优先事项,请告诉我们!

📝 引用NannyML

在学术论文中引用NannyML时,请使用以下BibTeX条目。

版本0.11.0

    @misc{nannyml,
        title = {{N}anny{ML} (release 0.11.0)},
        howpublished = {\url{https://github.com/NannyML/nannyml}},
        month = mar,
        year = 2023,
        note = {NannyML, Belgium, OHL.},
        key = {NannyML}
    }

📄 许可证

NannyML根据Apache许可证2.0版分发。完整版本可以在这里找到。所有贡献都将在此许可证下分发。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号