1、ML-fairness-gym简介
- ML-fairness-gym 是一套用于构建简单模拟的组件,用于探索在社会环境中部署基于机器学习的决策系统可能产生的长期影响。随着机器学习公平性的重要性日益凸显,最近的研究集中于执行最初在静态环境中定义的公平性措施可能产生的令人惊讶的长期行为。主要研究结果表明,在简化动态模拟的特定假设条件下,长期效应实际上可能与预期目标背道而驰。因此,深入了解这种长期效应是ML公平性研究的一个重要方向。
- ML-fairness-gym 实现了一个通用框架,用于在精心构建的模拟场景中研究和探测长期公平效应。在这种场景中,学习代理随着时间的推移与环境进行交互。这项工作与公平机器学习文献中的一个更大的推动力相契合,即设计出能诱导长期公平结果的决策系统,并了解这些系统与那些旨在一次性执行公平性的系统有何不同。
- 开源网站:GitHub - google/ml-fairness-gym
2、安装ML-fairness-gym(Windows)
- 官方安装教程:ml-fairness-gym/docs/installation.md at master · google/ml-fairness-gym · GitHub(适用于Linux)
- 本次安装ml-fairness-gym项目的代码,配置了一个独立的Python运行环境。在这个虚拟环境中,我们可以运行该项目的代码而不会影响系统中其他Python程序。激活虚拟环境后,项目相关的包都将被安装到这个环境中,不会对系统现有的Python环境产生影响。这样就可以专注在该项目的开发和使用上,实现环境的隔离。
- 安装git
- 安装方法:安装git,解决"git 不是内部或外部命令,也不是可运行的程序"问题_git不是_莫莫先生的博客-CSDN博客
- 【注】需要安装到哪个地方,就在哪个地方打开终端下载。
- 配置环境变量:‘git‘不是内部或外部命令,也不是可运行的程序或批处理文件。_git' 不是内部或外部命令_Dsubb的博客-CSDN博客
- 安装ML-fairness-gym
-
git clone https://github.com/google/ml-fairness-gym # 从GitHub上克隆该项目的代码库到本地 cd ml-fairness-gym # 进入项目目录 virtualenv -p python3 . # 使用virtualenv创建一个Python 3的虚拟环境在当前目录 Scripts\activate # 激活虚拟环境 pip install -r requirements.txt # 使用pip根据requirements.txt里的依赖关系表安装所需要的Python库
- 【注】ML-fairness-gym只能使用python3运行。
- 已经安装需要再次运行时,只需要运行如下命令:
-
Scripts\activate # 激活虚拟环境
- 【注】一定要进去ml-fairness-gym文件夹再运行。
-
-
- 错误解决
- 输入第一条语句的时候显示如下错误:
- 输入第三条语句的时候显示如下错误:
- 解决办法:
- 打开新的终端,输入如下命令:(最好加上镜像,下载的快一些)
-
pip install virtualenv
- 输入第五条语句的时候显示如下错误:
- 解决办法:
- 可能是网络低速断链,加上镜像重新下载。
-
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
- 还是报错,显示如下:
- 解决办法:
- 虚拟环境中setuptools的不匹配,重新安装别的版本:
-
pip install --upgrade pip setuptools==60.10.0
- 还是报错,显示如下:
- 解决办法:
- 在虚拟环境中安装gym。
-
pip install gym -i https://pypi.tuna.tsinghua.edu.cn/simple
- 还是报错,显示如下:
- 解决办法:
- 虚拟环境中wheel的版本不匹配,重新安装别的版本:
-
pip install --upgrade pip wheel==0.38.4 -i https://pypi.tuna.tsinghua.edu.cn/simple
- 成功安装!!!
- 运行如下命令将ml-fairness-gym添加到PYTHONPATH中
-
set PYTHONPATH="${PYTHONPATH}:/path/to/ml-fairness-gym"
- 检查是否正确安装了所有内容
-
tests.sh
3、快速入门指南
- 官方简单入门教程:ml-fairness-gym/docs/quickstart.md at master ·谷歌/ML-公平-健身房 ·GitHub
- 本案例使用“银行借贷”向我们展示二元决策的长期后果。
- 本案例详细介绍:机器学习公平性研究,走在正确的道路上吗?_喜欢打酱油的老鸟的博客-CSDN博客(建议阅读,能更好的理解ML-fairness-gym是如何评估公平性的)
- 有两种贷款策略:短期利润最大化策略、受机会均等约束的策略。
- 短期利润最大化:银行为了追求利润最大化,那么它可能会根据申请人是否会偿还贷款的可能性进行评估,来设置一个能够最大化预期回报的阈值。
- 机会均等:银行寻求的可能是能否对所有组做到公平,它们会尝试设置一个能够平衡总利润最大化和机会均等的阈值。
3.1、短期利润最大化策略
3.1.1、运行模拟
- 首先输入下列命令,得到ML-fairness-gym的模拟结果。
-
python experiments/lending_demo.py --num_steps=5000
-
- 运行后报错,显示如下:
- 解决办法:
-
pip install sklearn== -i https://pypi.tuna.tsinghua.edu.cn/simple
-
- 再次运行后报错,显示如下:
- 再次运行后报错,显示如下:
- 警告表示你正在使用 Matplotlib 的 agg 后端,这是一个非 GUI 的后端,所以无法显示图形界面。
- 解决办法:
- 运行成功,显示图形。
3.1.2、解释生成结果
- 初始信用评分
- 有7种可能的信用评分。如果得分为i,那么偿还贷款的概率为p(i)。分数越高,偿还贷款的可能性就越大。如果偿还了贷款,分数(以及成功贷款的概率)就会上升;否则,就会下降。
- 在模拟开始时,第二组处于不利地位——他们的信用分数分布较低。
- 分类器试图找到发放贷款的一个或多个合适的阈值。
- 前200步,它会给每个人发放贷款。之后,它将使用该数据(被发放贷款的人是否偿还了贷款)找到具有最高精确度的阈值。
- 在这个模拟中,假阳性(错误预测)的成本正好等于真阳性(正确预测)的收益,因此准确性是一个合理的优化指标。
- 利润
- 银行的利润率(总利润/步数),平均每一步赚了多少钱。(一步是指智能体与模拟环境的一次交互过程)
- 精度
- 这里的精度表示在所有接受贷款的人中,有多少人会偿还贷款。
- 两组的精度非常相似。
- 【注】精度和召回详细解释:自我理解:精度(precision)和召回(recall)_恣睢s的博客-CSDN博客
- 累计贷款
- 累积贷款图显示,第1组比第2组获得更多贷款。因为第一组在模拟开始时有更多的高信用评分者。
- 最终信用评分
- 模拟运行5000步后,两组的信用分数分布更加接近。
- 召回
- 这里的召回表示所有接受贷款和被拒绝贷款的人中,有多少人会偿还贷款。
- 两组召回有较大的差距,因为还考虑了被拒绝贷款的人是否会偿还贷款。
- 这样的话,第二组能获得贷款的人本来可以偿还贷款,但获得贷款的可能性较小。
- 如果以召回为放贷指标的话,这对组2是不公平的。
3.2、受机会均等约束的策略
- 将银行决定是否放贷改为受机会均等约束的最大化利益策略。
3.2.1、运行模拟
- 首先输入下列命令,得到ML-fairness-gym的模拟结果。
-
python experiments/lending_demo.py --equalize_opportunity --num_steps=5000
-
3.2.2、解释生成结果
- 利润
- 受机会均等约束的策略比短期利润最大化策略获得的利润更大。
- 累计贷款
- 开始时,组1和组2的贷款数量差距不大,但之后还是慢慢地拉开了距离。
- 最终信用评分
- 该策略下,分组2的评分低于分组1。
- 如果以信用评分为放贷指标的话,这对组2是不公平的。
- 召回
- 与短期利润最大化策略的召回相比,组2的召回率有所提升。
- 因为该代理应用的阈值在很大程度上是为了在初始分配中实现机会均等而学习的。