AIF360入门教学

1、AIF360简介

  • AI Fairness 360 工具包(AIF360)是一个开源软件工具包,可以帮助检测和缓解整个AI应用程序生命周期中机器学习模型中的偏见。
  • 在整个机器学习的过程中,偏见可能存在于初始训练数据、创建分类器的算法或分类器所做的预测中。AI Fairness 360 工具包可以衡量和缓解机器学习过程中三个阶段的偏见。
  • 开源网站:https://github.com/Trusted-AI/AIF360

2、安装AIF360

  • 使用pip安装最新稳定的版本(先使用这个)
  • pip install aif360
  • 【注】某些算法需要额外的依赖包,安装额外的依赖包,例如运行:
    • pip install aif360[LFR,OptimPreproc]
    • 或安装完整功能的AIF360
    • pip install aif360[all]

3、使用示例

  • 从github上找到官方提供的有关教程。
  • 网站:AIF360/examples/README.md at master ·可信AI/AIF360 ·GitHub

3.1、信用评分(数据预处理去偏)

  • 本案例演示了在使用德国信用数据集的信用评分场景中的年龄偏差背景下使用一个公平性指标(平均差)和一个偏见缓解算法(重新加权)
  • 具体工作:检查初始训练数据中的偏见,缓解偏见,然后重新检查。
  • 网站:Jupyter 笔记本查看器 (nbviewer.org)

3.2、新建项目

  • 使用PyCharm建立一个新的项目。
  • 【注】在系统中使用pip下载的包,在Pycharm中一定要选择系统解释器才能够引用。

3.3、编写导入语句

  • 以下所有语句都在main.py中编写。
  • 与任何python程序一样,第一步是导入必要的包。下面我们从包中导入几个组件。我们导入 GermanDataset,用于检查偏见的指标以及与我们将用于减轻偏差的算法相关的类。
  • # 导入所有需要的包
    import sys
    sys.path.insert(1, "../")  import numpy as np
    np.random.seed(0)from aif360.datasets import GermanDataset
    from aif360.metrics import BinaryLabelDatasetMetric
    from aif360.algorithms.preprocessing import Reweighingfrom IPython.display import Markdown, display
  • 编译报错(没什么包,加什么包)
  • 添加包(还是报错先不管它)
  • pip install aif360[LawSchoolGPA]
  •  安装IPython
  • pip install ipython
  • 再次编译报错
  • 需要下载数据集到指定位置。分别点击上述两个链接,右键另存为到指定的位置。(注意修改文件名字和后缀)

3.4、设置偏差检测选项、加载数据集并在训练和测试之间拆分

  • 加载初始数据集,将受保护属性设置为 age。
  • 将原始数据集拆分为训练数据集和测试数据集。虽然在本教程中我们将仅使用训练数据集,但正常的工作流也会使用测试数据集来评估机器学习模型开发期间的有效性(准确性、公平性等)。
  • 为 age 属性的特权群体(1)和非特权群体(0)设置两个变量。
  • dataset_orig = GermanDataset(protected_attribute_names=['age'],           # 将年龄指定为被保护属性privileged_classes=[lambda x: x >= 25],      # age >=25 认为是特权features_to_drop=['personal_status', 'sex']  # 忽略与性别有关的属性
    )dataset_orig_train, dataset_orig_test = dataset_orig.split([0.7], shuffle=True)privileged_groups = [{'age': 1}]
    unprivileged_groups = [{'age': 0}]  # 其中“1”(大于或等于 25)和“0”(小于 25)分别是特权组和非特权组的值

3.5、计算原始训练数据集上的公平性指标

  • 使用平均差来度量数据集中的偏见。比较特权和非特权群体的有利结果百分比,从后者中减去前者的百分比,负值表示对非特权组不利的结果。
  • 使用BinaryLabelDatasetMetric类中的mean_difference方法实现。
  • # 创建BinaryLabelDatasetMetric对象,传入原始训练数据集dataset_orig_train,以及privileged_groups和unprivileged_groups的定义
    metric_orig_train = BinaryLabelDatasetMetric(dataset_orig_train, unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)
    display(Markdown("#### Original training dataset"))
    print("Difference in mean outcomes between unprivileged and privileged groups = %f" % metric_orig_train.mean_difference())
  • 编译后显示差值为 -0.169905。

3.6、通过转换原始数据集来缓解偏差

  • 尝试减轻训练数据集中的偏见被称为预处理去偏,因为它发生在创建模型之前。
  • AI Fairness 360 实现了多种预处理缓解算法,选择重新加权算法(通过改变样本权重的方式来减少数据集中不同群体之间的偏差),该算法在包中的类中实现。此算法将转换数据集,使其在特权组和非特权组的受保护属性的积极结果上具有更大的公平性。
  • 再调用拟合和转换方法来执行转换,生成新转换的训练数据集(dataset_transf_train)。
  • RW = Reweighing(unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)  # 创建Reweighing对象RW
    dataset_transf_train = RW.fit_transform(dataset_orig_train)  # 计算权重,并生成一个新的训练数据集

3.7、在转换后的训练数据集上计算公平性指标

  • 再次使用平均差来度量它的去偏效果。
  • metric_transf_train = BinaryLabelDatasetMetric(dataset_transf_train, unprivileged_groups=unprivileged_groups,privileged_groups=privileged_groups)
    display(Markdown("#### Transformed training dataset"))
    print("Difference in mean outcomes between unprivileged and privileged groups = %f" % metric_transf_train.mean_difference())
  • 结果显示去偏效果非常明显,平均结果的差异现在是0.0。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能在监控系统中的预测与优化:提升效率和响应能力

引言:人工智能的发展给监控系统带来了新的可能性,通过分析历史监控数据和其他相关数据,人工智能可以预测未来可能发生的事件,如交通拥堵、安全隐患等,并帮助优化监控系统的配置和资源分配。这种预测和优化的能力可以提…

2023年国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

6.2.0在线编辑:GrapeCity Documents for Word (GcWord) Crack

GrapeCity Word 文档 (GcWord) 支持 Office Math 函数以及转换为 MathML GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMa…

vue自定义指令--动态参数绑定

在企业微信侧边栏应用中,给dialog添加了拖拽功能,但是因为dialog高度超过了页面高度,所以高度100%时拖拽有个bug--自动贴到窗口顶部而且企业侧边栏宽高都有限制,拖拽效果并不理想,所以就想缩小dialog再进行拖拽。 拖拽…

IntelliJ IDEA和Android studio怎么去掉usage和作者提示

截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码&#xf…

457. 环形数组是否存在循环

457. 环形数组是否存在循环 原题链接:完成情况:解题思路:参考代码:经验吸取 原题链接: 457. 环形数组是否存在循环 https://leetcode.cn/problems/circular-array-loop/description/ 完成情况: 解题思路…

使用Pandas进行数据清理的入门示例

数据清理是数据分析过程中的关键步骤,它涉及识别缺失值、重复行、异常值和不正确的数据类型。获得干净可靠的数据对于准确的分析和建模非常重要。 本文将介绍以下6个经常使用的数据清理操作: 检查缺失值、检查重复行、处理离群值、检查所有列的数据类型…

opencv进阶02-在图像上绘制多种几何图形

OpenCV 提供了方便的绘图功能,使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形,还能在图像中的指定位置添加文字说明。 OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的…

【Quarkus技术系列】「云原生架构体系」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?

云原生时代下的Java"拯救者" 在云原生时代,其实Java程序是有很大的劣势的,以最流行的spring boot/spring cloud微服务框架为例,启动一个已经优化好,很多bean需要lazy load的application至少需要3-4秒时间,内…

一站式自动化测试平台-Autotestplat

3.1 自动化平台开发方案 3.1.1 功能需求 3.1.3 开发时间计划 如果是刚入门、但有一点代码基础的测试人员,大概 3 个月能做出演示版(Demo)进行自动化测试,6 个月内胜任开展工作中项目的自动化测试。 如果是有自动化测试基础的测试人员,大概 …

面试热题(数组中的第K个最大元素)

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 输入: [3,2,1,5,6,4] 和 k 2 输出: 5提到数组中最大元素,我们往往想到就是先给数组…

判断自己网络所在的NAT类型

文章目录 各NAT类型介绍软件准备流程 各NAT类型介绍 NAT0: OpenInternet,没有经过NAT地址转换,公网IP NAT1: Full Cone NAT,动态家宽可以达到最优的状态,外网设备可以主动发信息给NAT1网络内的设备。 NAT2: Address-Restricted C…

Mybatis 源码 ④ :TypeHandler

文章目录 一、前言二、DefaultParameterHandler1. DefaultParameterHandler#setParameters1.1 UnknownTypeHandler1.2 自定义 TypeHandler 三、DefaultResultSetHandler1. hasNestedResultMaps2. handleRowValuesForNestedResultMap2.1 resolveDiscriminatedResultMap2.2 creat…

K8S系列二:实战入门

写在前面 本文是K8S系列第二篇,主要面向对K8S新手同学,阅读本文需要读者对K8S的基本概念,比如Pod、Deployment、Service、Namespace等基础概念有所了解。尚且不熟悉的同学推荐先阅读本系列的第一篇文章:《K8S系列一:概…

远程控制医疗行业应用解析:如何满足医院合规需求?

远程控制医疗行业应用解析:如何满足医院合规需求? 作为一个起源于IT行业的技术,以远程桌面为基础的远程控制技术目前在医疗领域也已经有了比较广阔的应用前景,尤其是在医疗数字化系统/设备的远程运维场景,已经有了一些…

如何正确下载tomcat???

亲爱的小伙伴,千万别再去找下网站下载啦,这样詪容易携带病毒。 我们去官方网址下载。 Apache Tomcat - Welcome! 最后下载解压即可。。。

2024软考系统架构设计师论文写作要点

一、写作注意事项 系统架构设计师的论文题目对于考生来说,是相对较难的题目。一方面,考生需要掌握论文题目中的系统架构设计的专业知识;另一方面,论文的撰写需要结合考生自身的项目经历。因此,如何将自己的项目经历和专业知识有机…

SQL server中substring 的用法

一:substring函数是SQL中截取字段数据中的其中一部分 --列:提取abdcsef中的abc数据,使用substring实现select substring(abdcsef,1,3) --‘1’表示截取的起始位置是从第一个字符开始,‘3’表示截取后得到的字符串长度为3个字符 二&#xff1…

React源码解析18(7)------ 实现事件机制(onClick事件)

摘要 在上一篇中,我们实现了useState的hook,但由于没有实现事件机制,所以我们只能将setState挂载在window上。 而这一篇主要就是来实现事件系统,从而实现通过点击事件进行setState。 而在React中,虽然我们是将事件绑…

前后端分离------后端创建笔记(07)表单验证

1、我输入数据,然后关闭,重新打开会发现残存的数据仍然保留着 2、点了这个x号,数据就全部被清理了 3、点这三个地方,数据全部都清理掉 4、这里先写一个方法 4.1 定义一个方法 4.2 这里表单的数据在哪里,就是这个 4.3 …