alibi-detect

alibi-detect

专注异常值、对抗性和漂移检测的开源Python库

alibi-detect是一个开源的异常值、对抗性和漂移检测Python库。它为表格数据、文本、图像和时间序列提供在线和离线检测器。库中包含多种算法,如用于异常检测的孤立森林、马氏距离和自编码器,以及用于漂移检测的KS检验和MMD。alibi-detect兼容TensorFlow和PyTorch,并具有内置预处理功能,可检测各种类型的数据漂移。

Alibi Detect异常检测对抗检测漂移检测机器学习监控Github开源项目
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/89704ab9-bfc8-48d8-a382-d2c7929fd800.png" alt="Alibi Detect 标志" width="50%"> </p> <!--- 徽章: 开始 --->

构建状态 文档状态 codecov PyPI - Python 版本 PyPI - 包版本 Conda (仅限频道) GitHub - 许可证 Slack 频道

<!--- 隐藏平台信息,因为目前是平台无关的 ---> <!--- [![Conda - 平台](https://img.shields.io/conda/pn/conda-forge/alibi-detect?logo=anaconda&style=flat)][#conda-forge-package]---> <!--- 徽章: 结束 --->

Alibi Detect 是一个专注于异常值对抗性样本数据漂移检测的Python库。该包旨在涵盖表格数据、文本、图像和时间序列的在线和离线检测器。对于数据漂移检测,同时支持 TensorFlowPyTorch 后端。

关于在生产环境中监控异常值和分布的重要性的更多背景信息,请查看来自 ICML 2020 生产中机器学习系统的部署和监控挑战 研讨会的这个演讲,该演讲基于论文生产中模型的监控和可解释性,并引用了Alibi Detect。

如需全面了解数据漂移检测,请查看保护您的机器学习免受数据漂移影响:简介。该演讲涵盖了什么是数据漂移、为什么要检测它、不同类型的数据漂移、如何以原则性的方式检测它,并描述了数据漂移检测器的结构。

目录

安装和使用

alibi-detect 可以通过以下方式安装:

  • PyPI 或 GitHub 源代码(使用 pip
  • Anaconda(使用 conda/mamba

使用pip

  • alibi-detect 可以从 PyPI 安装:

    pip install alibi-detect
  • 或者,可以安装开发版本:

    pip install git+https://github.com/SeldonIO/alibi-detect.git
  • 要安装 TensorFlow 后端:

    pip install alibi-detect[tensorflow]
  • 要安装 PyTorch 后端:

    pip install alibi-detect[torch]
  • 要安装 KeOps 后端:

    pip install alibi-detect[keops]
  • 要使用 Prophet 时间序列异常值检测器:

    pip install alibi-detect[prophet]

使用conda

要从 conda-forge 安装,建议使用 mamba, 可以通过以下命令将其安装到 base conda 环境中:

conda install mamba -n base -c conda-forge

要安装 alibi-detect:

mamba install -c conda-forge alibi-detect

使用方法

我们将使用 VAE 异常值检测器 来说明 API。

from alibi_detect.od import OutlierVAE from alibi_detect.saving import save_detector, load_detector # 初始化并拟合检测器 od = OutlierVAE(threshold=0.1, encoder_net=encoder_net, decoder_net=decoder_net, latent_dim=1024) od.fit(x_train) # 进行预测 preds = od.predict(x_test) # 保存和加载检测器 filepath = './my_detector/' save_detector(od, filepath) od = load_detector(filepath)

预测结果以字典形式返回,键为metadatameta包含检测器的元数据,而data本身是一个字典,包含实际预测结果。它包含异常值、对抗性或漂移分数和阈值,以及实例是否为异常值等预测结果。具体细节可能因方法而略有不同,因此我们建议读者熟悉支持的算法类型

支持的算法

下表展示了每种算法的建议使用场景。"特征级别"列表示是否可以在特征级别进行检测,例如对图像进行逐像素检测。查看算法参考列表以获取更多信息,包括每个检测器的文档链接、原始论文以及示例。

异常检测

检测器表格数据图像时间序列文本类别特征在线特征级别
隔离森林
马哈拉诺比斯距离
自编码器
变分自编码器
AEGMM
VAEGMM
似然比
Prophet
光谱残差
序列到序列

对抗性检测

检测器表格数据图像时间序列文本类别特征在线特征级别
对抗性自编码器
模型蒸馏

漂移检测

检测器表格数据图像时间序列文本类别特征在线特征级别
Kolmogorov-Smirnov检验
Cramér-von Mises检验
Fisher精确检验
最大平均差异(MMD)
学习核MMD
上下文感知MMD
最小二乘密度差
卡方检验
混合类型表格数据
分类器
发现差异
分类器不确定性
回归器不确定性

TensorFlow和PyTorch支持

漂移检测器支持TensorFlow、PyTorch和(在适用的情况下)KeOps后端。 但是,Alibi Detect默认不安装这些库。有关更多详细信息,请参阅安装选项

from alibi_detect.cd import MMDDrift cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05) preds = cd.predict(x)

同样的检测器在PyTorch中:

cd = MMDDrift(x_ref, backend='pytorch', p_val=.05) preds = cd.predict(x)

或在KeOps中:

cd = MMDDrift(x_ref, backend='keops', p_val=.05) preds = cd.predict(x)

内置预处理步骤

Alibi Detect还提供了各种预处理步骤,如随机初始化的编码器、使用transformers库的预训练文本嵌入来检测漂移,以及从机器学习模型中提取隐藏层。这允许检测不同类型的漂移,如协变量和预测分布漂移。预处理步骤同样支持TensorFlow和PyTorch。

from alibi_detect.cd.tensorflow import HiddenOutput, preprocess_drift model = # TensorFlow模型;tf.keras.Model或tf.keras.Sequential preprocess_fn = partial(preprocess_drift, model=HiddenOutput(model, layer=-1), batch_size=128) cd = MMDDrift(x_ref, backend='tensorflow', p_val=.05, preprocess_fn=preprocess_fn) preds = cd.predict(x)

查看示例笔记本(如CIFAR10电影评论)以获取更多详细信息。

参考列表

异常检测

对抗性检测

漂移检测

数据集

该软件包还在alibi_detect.datasets中提供了功能,可以轻松获取各种模态的多个数据集。对于每个数据集,返回的是数据和标签,或者包含数据、标签和可选元数据的Bunch对象。示例:

from alibi_detect.datasets import fetch_ecg (X_train, y_train), (X_test, y_test) = fetch_ecg(return_X_y=True)

序列数据和时间序列

  • 基因组数据集fetch_genome

    • 用于分布外检测的细菌基因组数据集,作为分布外检测的似然比的一部分发布。原文摘要:该数据集包含10个分布内细菌类别的250个碱基对的基因组序列用于训练,60个分布外细菌类别用于验证,以及另外60个不同的分布外细菌类别用于测试。训练、验证和测试集分别包含1百万、7百万和7百万个序列。有关数据集的详细信息,请查看README
    from alibi_detect.datasets import fetch_genome (X_train, y_train), (X_val, y_val), (X_test, y_test) = fetch_genome(return_X_y=True)
  • ECG 5000fetch_ecg

    • 5000个心电图,原始数据来自Physionet
  • NABfetch_nab

    • Numenta异常基准中的任何单变量时间序列,以DataFrame形式返回。可以使用alibi_detect.datasets.get_list_nab()获取可用时间序列的列表。

图像

  • CIFAR-10-Cfetch_cifar10c

    • CIFAR-10-C(Hendrycks & Dietterich, 2019)包含CIFAR-10的测试集,但经过各种类型的噪声、模糊、亮度等不同程度的破坏和扰动,导致在CIFAR-10上训练的分类模型性能逐渐下降。fetch_cifar10c允许您选择任何严重程度或破坏类型。可以通过alibi_detect.datasets.corruption_types_cifar10c()获取可用破坏类型列表。该数据集可用于鲁棒性和漂移研究。原始数据可在这里找到。示例:
    from alibi_detect.datasets import fetch_cifar10c corruption = ['gaussian_noise', 'motion_blur', 'brightness', 'pixelate'] X, y = fetch_cifar10c(corruption=corruption, severity=5, return_X_y=True)
  • 对抗性CIFAR-10fetch_attack

    • 加载对在CIFAR-10上训练的ResNet-56分类器的对抗性实例。可用攻击:Carlini-Wagner('cw')和SLIDE('slide')。示例:
    from alibi_detect.datasets import fetch_attack (X_train, y_train), (X_test, y_test) = fetch_attack('cifar10', 'resnet56', 'cw', return_X_y=True)

表格数据

  • KDD Cup '99fetch_kdd
    • 包含不同类型计算机网络入侵的数据集。fetch_kdd允许您选择一部分网络入侵作为目标或仅选择指定特征。原始数据可在这里找到。

模型

在异常值、对抗性或漂移检测之外可能有用的模型和/或构建块可以在alibi_detect.models下找到。主要实现:

  • PixelCNN++alibi_detect.models.pixelcnn.PixelCNN

  • 变分自编码器:alibi_detect.models.autoencoder.VAE

  • 序列到序列模型:alibi_detect.models.autoencoder.Seq2Seq

  • ResNet:alibi_detect.models.resnet

    • 在CIFAR-10上预训练的ResNet-20/32/44模型可以在我们的Google Cloud Bucket上找到,可以如下获取:
    from alibi_detect.utils.fetching import fetch_tf_model model = fetch_tf_model('cifar10', 'resnet32')

集成

Alibi-detect已集成到机器学习模型部署平台Seldon Core和模型服务框架KFServing中。

引用

如果您在研究中使用alibi-detect,请考虑引用它。

BibTeX条目:

@software{alibi-detect,
  title = {Alibi Detect: Algorithms for outlier, adversarial and drift detection},
  author = {Van Looveren, Arnaud and Klaise, Janis and Vacanti, Giovanni and Cobb, Oliver and Scillitoe, Ashley and Samoilescu, Robert and Athorne, Alex},
  url = {https://github.com/SeldonIO/alibi-detect},
  version = {0.12.1.dev0},
  date = {2024-04-17},
  year = {2019}
}

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多