aequitas
Aequitas 是一款专注于机器学习模型偏见审计与公平性优化的开源工具包。在人工智能日益深入社会决策的背景下,算法可能因训练数据或设计缺陷而对特定群体产生歧视,Aequitas 正是为解决这一关键问题而生。它能够帮助用户透明、便捷地检测模型在不同人群中的表现差异,识别潜在的公平性风险,并提供修正预测结果或优化训练流程的方法。
这款工具特别适合数据科学家、机器学习研究人员以及政策制定者使用。无论是需要评估现有模型的合规性,还是希望在开发阶段就融入公平性考量,Aequitas 都能提供强有力的支持。其技术亮点在于不仅支持对二元分类模型进行多维度的偏见指标分析(如真阳性率、假阳性率等),还推出了全新的"Aequitas Flow"功能,允许用户在流水线中直接实验不同的公平性算法,甚至自定义修正策略。通过简单的 Python 接口和丰富的示例笔记,Aequitas 让复杂的公平性审计变得触手可及,助力构建更公正、可信的 AI 系统。
使用场景
某城市司法部门正在评估一套用于预测罪犯再犯风险的机器学习模型,以辅助法官进行量刑参考。
没有 aequitas 时
- 偏见隐蔽难发现:数据科学家只能依靠简单的整体准确率评估模型,无法察觉模型对特定种族或性别群体存在系统性的误判(如假阳性率过高)。
- 缺乏量化依据:面对公众关于“算法歧视”的质疑,团队无法提供具体的公平性指标(如 TPR、FPR 差异)来证明模型的公正性或定位问题源头。
- 修正成本高昂:一旦确认存在偏见,开发人员需手动编写复杂的代码来尝试调整阈值或重训练模型,过程繁琐且难以对比不同修正策略的效果。
- 决策风险不可控:由于缺乏透明的审计报告,政策制定者不敢贸然部署该模型,担心引发严重的社会伦理争议和法律纠纷。
使用 aequitas 后
- 一键深度审计:通过输入包含敏感属性的数据框,aequitas 自动生成可视化图表,清晰揭示模型在不同族群间的预测偏差,让隐性偏见无处遁形。
- 指标透明可解释:工具提供标准化的公平性度量摘要,团队能迅速用数据回应外界质疑,明确指出是哪些群体受到了不公对待。
- 高效实验与修正:利用 aequitas Flow 功能,研究人员可以轻松尝试不同的公平性约束方法或调整分组阈值,快速找到兼顾准确率与公平性的最优解。
- 合规部署有信心:生成的详细审计报告为管理层提供了坚实的决策依据,确保模型在符合伦理规范的前提下安全落地应用。
aequitas 将抽象的公平性概念转化为可执行、可量化的工程流程,让负责任的 AI 从口号变为现实。
运行环境要求
- 未说明
未说明
未说明

快速开始
Aequitas: 偏差审计与“修正”工具包
aequitas 是一款面向数据科学家、机器学习研究人员和政策制定者的开源偏差审计及公平机器学习工具包。我们提供了一个易于使用且透明的工具,用于审计机器学习模型的预测结果,并在二分类场景中利用公平机器学习方法尝试“修正有偏模型”。
如需了解更多关于如何处理人工智能/机器学习系统中的偏差与公平性问题,请参阅我们的详细教程及相关出版物。
版本 1.0.0:Aequitas Flow —— 优化机器学习流水线中的公平性
欢迎探索 Aequitas Flow,这是我们 1.0.0 版本中的最新更新。它旨在通过偏差缓解增强偏差审计功能,并借助我们全新的简化功能,让用户更便捷地开展公平机器学习方法的实验。
📥 安装
pip install aequitas
或
pip install git+https://github.com/dssg/aequitas.git
📔 示例笔记本支持各类任务与工作流
| 笔记本 | 描述 |
|---|---|
| 审计模型的预测结果 | 通过 COMPAS 示例笔记本了解如何进行深入的偏差审计,或使用您自己的数据。 |
| 修正模型的预测结果 | 在模型修正笔记本中,创建一个用于审计特定模型的数据框,并使用分组阈值修正预测结果。 |
| 训练考虑公平性的模型 | 使用您自己的数据或方法进行实验,并查看公平机器学习实验的结果。 |
| 将您的方法加入 Aequitas Flow | 学习如何将自己的方法添加到 Aequitas Flow 工具包中。 |
🔍 偏差审计快速入门
要执行偏差审计,您需要一个符合以下格式的 pandas DataFrame:
| label_value | score | sens_attr_1 | sens_attr_2 | ... | sens_attr_N | |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | A | F | Y | |
| 1 | 0 | 1 | C | F | N | |
| 2 | 1 | 1 | B | T | N | |
| ... | ||||||
| N | 1 | 0 | E | T | Y |
其中,label_value 是您的预测任务的目标变量,score 是模型输出。仅需一个敏感属性;所有敏感属性必须为 Categorical 格式。
from aequitas import Audit
audit = Audit(df)
要获取偏差审计的摘要,运行:
# 选择适合您数据集的公平性指标
audit.summary_plot(["tpr", "fpr", "pprev"])
我们也可以观察单个指标和敏感属性:
audit.disparity_plot(attribute="sens_attr_2", metrics=["fpr"])
🧪 偏差减少(公平机器学习)方法实验快速入门
要进行实验,需要一个数据集。该数据集必须包含标签列、敏感属性列和特征列。
from aequitas.flow import DefaultExperiment
experiment = DefaultExperiment.from_pandas(dataset, target_feature="label_value", sensitive_feature="attr", experiment_size="small")
experiment.run()
experiment.plot_pareto()
DefaultExperiment 类为包内的实验提供了一个更简便的入口点。该类有两个主要参数用于配置实验:experiment_size 和 methods。前者定义实验规模,可选为 test(每种方法 1 个模型)、small(每种方法 10 个模型)、medium(每种方法 50 个模型)或 large(每种方法 100 个模型)。后者则定义实验中使用的方法,可以是 all 或子集,即 preprocessing 或 inprocessing。
实验的多个方面(例如算法、运行次数、数据集划分等)可以在更为细粒度的 Experiment 类中单独配置。
🧠 方法训练快速入门
假设有一个 aequitas.flow.Dataset,可以根据算法类型(预处理、事中处理或事后处理)训练方法并使用其功能。
对于预处理方法:
from aequitas.flow.methods.preprocessing import PrevalenceSampling
sampler = PrevalenceSampling()
sampler.fit(dataset.train.X, dataset.train.y, dataset.train.s)
X_sample, y_sample, s_sample = sampler.transform(dataset.train.X, dataset.train.y, dataset.train.s)
对于事中处理方法:
from aequitas.flow.methods.inprocessing import FairGBM
model = FairGBM()
model.fit(X_sample, y_sample, s_sample)
scores_val = model.predict_proba(dataset.validation.X, dataset.validation.y, dataset.validation.s)
scores_test = model.predict_proba(dataset.test.X, dataset.test.y, dataset.test.s)
对于事后处理方法:
from aequitas.flow.methods.postprocessing import BalancedGroupThreshold
threshold = BalancedGroupThreshold("top_pct", 0.1, "fpr")
threshold.fit(dataset.validation.X, scores_val, dataset.validation.y, dataset.validation.s)
corrected_scores = threshold.transform(dataset.test.X, scores_test, dataset.test.s)
通过上述步骤,我们可以对数据集进行采样,训练一个 FairGBM 模型,然后调整分数以使各组的 FPR 相等(实现预测平等)。
📜 工具包特性
- 指标:基于混淆矩阵的审计指标,可根据具体用例灵活选择重要指标。
- 绘图选项:偏差审计和实验的主要结果还提供适合不同用户目标的图表。
- 公平机器学习方法:提供了多种公平机器学习方法的接口与实现,包括预处理、事中处理和事后处理方法。
- 数据集:包含两类数据集,分别名为 BankAccountFraud 和 FolkTables。
- 可扩展性:支持接收用户自定义的方法,并提供直观的接口和方法签名。
- 可重复性:可保存实验中的各种成果,从转换后的数据到拟合的模型和预测结果。
- 模块化:公平机器学习方法和默认数据集可以单独使用,也可以集成到一个
Experiment中。 - 超参数优化:内置并抽象了 Optuna 的超参数优化功能,便于实验使用。
公平机器学习方法
我们支持一系列旨在解决机器学习流程不同阶段中偏见和歧视问题的方法。
| 类型 | 方法 | 描述 |
|---|---|---|
| 预处理 | 数据修复器 | 转换数据分布,使某一特征分布与敏感属性 s 在边际上独立。 |
| 标签翻转 | 根据公平排序噪声校正方法,翻转部分训练数据的标签。 | |
| 预值采样 | 生成具有可控均衡预值的训练样本,通过欠采样或过采样实现数据集中各组之间的平衡。 | |
| 按摩法 | 翻转选定的标签,以减少各组之间的预值差异。 | |
| 相关性抑制 | 移除与敏感属性高度相关的特征。 | |
| 特征重要性抑制 | 迭代移除对敏感属性影响最大的特征。 | |
| 事中处理 | FairGBM | 一种新颖的方法,将提升树算法(LightGBM)置于预先定义的公平性约束之下。 |
| Fairlearn 分类器 | 基于 Fairlearn reductions 包中的模型。可针对 ExponentiatedGradient 和 GridSearch 方法进行参数化配置。 | |
| 事后处理 | 分组阈值 | 调整各组的阈值,以达到特定的公平性标准(例如,所有组的 FPR 均为 10%)。 |
| 平衡分组阈值 | 调整各组的阈值以满足特定的公平性标准,同时遵守全局约束(例如,人口统计均等性要求全局 FPR 为 10%)。 | |
公平性度量
aequitas 为敏感属性列的每个可能取值提供混淆矩阵指标的值,以计算公平性度量。混淆矩阵中的各个单元格定义如下:
| 单元格 | 符号 | 描述 |
|---|---|---|
| 假阳性 | $FP_g$ | 在组 $g$ 中,预测为 $\hat{Y}=1$ 且实际为 $Y=0$ 的实体数量 |
| 假阴性 | $FN_g$ | 在组 $g$ 中,预测为 $\hat{Y}=0$ 且实际为 $Y=1$ 的实体数量 |
| 真阳性 | $TP_g$ | 在组 $g$ 中,预测为 $\hat{Y}=1$ 且实际为 $Y=1$ 的实体数量 |
| 真阴性 | $TN_g$ | 在组 $g$ 中,预测为 $\hat{Y}=0$ 且实际为 $Y=0$ 的实体数量 |
基于这些指标,我们可以计算以下几种度量:
| 度量 | 公式 | 描述 |
|---|---|---|
| 准确率 | $Acc_g = \cfrac{TP_g + TN_g}{|g|}$ | 组内预测正确的实体所占的比例。 |
| 真正例率 | $TPR_g = \cfrac{TP_g}{TP_g + FN_g}$ | 在某一组的标签为正的实体中,真正例所占的比例。 |
| 真负例率 | $TNR_g = \cfrac{TN_g}{TN_g + FP_g}$ | 在某一组的标签为负的实体中,真负例所占的比例。 |
| 假阴性率 | $FNR_g = \cfrac{FN_g}{TP_g + FN_g}$ | 在某一组的标签为正的实体中,假阴性所占的比例。 |
| 假阳性率 | $FPR_g = \cfrac{FP_g}{TN_g + FP_g}$ | 在某一组的标签为负的实体中,假阳性所占的比例。 |
| 精确率 | $Precision_g = \cfrac{TP_g}{TP_g + FP_g}$ | 在某一组的预测为正的实体中,真正例所占的比例。 |
| 负预测值 | $NPV_g = \cfrac{TN_g}{TN_g + FN_g}$ | 在某一组的预测为负的实体中,真负例所占的比例。 |
| 假发现率 | $FDR_g = \cfrac{FP_g}{TP_g + FP_g}$ | 在某一组的预测为正的实体中,假阳性所占的比例。 |
| 假漏报率 | $FOR_g = \cfrac{FN_g}{TN_g + FN_g}$ | 在某一组的预测为负的实体中,假阴性所占的比例。 |
| 预测为正 | $PP_g = TP_g + FP_g$ | 某一组中决策为正(即 $\hat{Y}=1$)的实体数量。 |
| 总预测为正 | $K = \sum PP_{g(a_i)}$ | 由属性 $A$ 定义的不同组别中,所有被预测为正的实体总数 |
| 预测为负 | $PN_g = TN_g + FN_g$ | 某一组中决策为负(即 $\hat{Y}=0$)的实体数量 |
| 预测阳性率 | $Pprev_g=\cfrac{PP_g}{|g|}=P(\hat{Y}=1 | A=a_i)$ | 某一组中被预测为阳性的实体所占比例。 |
| 预测阳性率 | $PPR_g = \cfrac{PP_g}{K} = P(A=A_i | \hat{Y}=1)$ | 被预测为正的实体中属于某一特定组别的比例。 |
这些内容在 Group 类中实现。借助 Bias 类,可以通过对这些指标的各种比率组合,推导出多种公平性度量。
更多文档
您可以在 这里 找到该工具包的文档。
如需更多 Python 库示例以及关于机器学习公平性概念的深入探讨,请参阅我们在 KDD 和 AAAI 上发布的 教程。此外,您还可以访问 Aequitas 项目网站。
引用 Aequitas
引用 Aequitas 时,请参考以下论文:
- Aequitas Flow:简化公平机器学习实验流程(2024)PDF
@article{jesus2024aequitas,
title={Aequitas Flow: Streamlining Fair ML Experimentation},
author={Jesus, S{\'e}rgio and Saleiro, Pedro and Jorge, Beatriz M and Ribeiro, Rita P and Gama, Jo{\~a}o and Bizarro, Pedro and Ghani, Rayid and others},
journal={arXiv preprint arXiv:2405.05809},
year={2024}
}
- Aequitas:偏见与公平性审计工具包(2018)PDF
@article{2018aequitas,
title={Aequitas: A Bias and Fairness Audit Toolkit},
author={Saleiro, Pedro and Kuester, Benedict and Stevens, Abby and Anisfeld, Ari and Hinkson, Loren and London, Jesse and Ghani, Rayid}, journal={arXiv preprint arXiv:1811.05577}, year={2018}}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

