The AI Fairness 360 toolkit is an extensible open-source library containing techniques developed by the research community to help detect and mitigate bias in machine learning models throughout the AI application lifecycle. AI Fairness 360 package is available in both Python and R.
The AI Fairness 360 package includes 1) a comprehensive set of metrics for datasets and models to test for biases, 2) explanations for these metrics, and 3) algorithms to mitigate bias in datasets and models. It is designed to translate algorithmic research from the lab into the actual practice of domains as wide-ranging as finance, human capital management, healthcare, and education. We invite you to use it and improve it.
The AI Fairness 360 interactive experience provides a gentle introduction to the concepts and capabilities. The tutorials and other notebooks offer a deeper, data scientist-oriented introduction. The complete API is also available.
Being a comprehensive set of capabilities, it may be confusing to figure out which metrics and algorithms are most appropriate for a given use case. To help, we have created some guidance material that can be consulted.
We have developed the package with extensibility in mind. This library is still in development. We encourage the contribution of your metrics, explainers, and debiasing algorithms.
Get in touch with us on Slack (invitation here)!
r
install.packages("aif360")
For more details regarding the R setup, please refer to instructions here.
Supported Python Configurations:
| OS | Python version | | ------- | -------------- | | macOS | 3.7 – 3.10 | | Ubuntu | 3.7 – 3.10 | | Windows | 3.7 – 3.10 |
AIF360 requires specific versions of many Python packages which may conflict with other projects on your system. A virtual environment manager is strongly recommended to ensure dependencies may be installed safely. If you have trouble installing AIF360, try this first.
Conda is recommended for all configurations though Virtualenv is generally interchangeable for our purposes. Miniconda is sufficient (see the difference between Anaconda and Miniconda if you are curious) if you do not already have conda installed.
Then, to create a new Python 3.7 environment, run:
bash
conda create --name aif360 python=3.7
conda activate aif360
The shell should now look like (aif360) $
. To deactivate the environment, run:
bash
(aif360)$ conda deactivate
The prompt will return to $
.
Note: Older versions of conda may use source activate aif360
and source
deactivate
(activate aif360
and deactivate
on Windows).
pip
To install the latest stable version from PyPI, run:
bash
pip install aif360
Note: Some algorithms require additional dependencies (although the metrics will all work out-of-the-box). To install with certain algorithm dependencies included, run, e.g.:
bash
pip install 'aif360[LFR,OptimPreproc]'
or, for complete functionality, run:
bash
pip install 'aif360[all]'
The options for available extras are: OptimPreproc, LFR, AdversarialDebiasing,
DisparateImpactRemover, LIME, ART, Reductions, notebooks, tests, docs, all
If you encounter any errors, try the Troubleshooting steps.
Clone the latest version of this repository:
bash
git clone https://github.com/Trusted-AI/AIF360
If you'd like to run the examples, download the datasets now and place them in their respective folders as described in aif360/data/README.md.
Then, navigate to the root directory of the project and run:
bash
pip install --editable '.[all]'
To run the example notebooks, complete the manual installation steps above.
Then, if you did not use the [all]
option, install the additional requirements
as follows:
bash
pip install -e '.[notebooks]'
Finally, if you did not already, download the datasets as described in aif360/data/README.md.
If you encounter any errors during the installation process, look for your issue here and try the solutions.
See the Install TensorFlow with pip page for detailed instructions.
Note: we require 'tensorflow >= 1.13.1'
.
Once tensorflow is installed, try re-running:
bash
pip install 'aif360[AdversarialDebiasing]'
TensorFlow is only required for use with the
aif360.algorithms.inprocessing.AdversarialDebiasing
class.
On MacOS, you may first have to install the Xcode Command Line Tools if you never have previously:
sh
xcode-select --install
On Windows, you may need to download the Microsoft C++ Build Tools for Visual Studio 2019. See the CVXPY Install page for up-to-date instructions.
Then, try reinstalling via:
bash
pip install 'aif360[OptimPreproc]'
CVXPY is only required for use with the
aif360.algorithms.preprocessing.OptimPreproc
class.
The examples
directory contains a diverse collection of jupyter notebooks
that use AI Fairness 360 in various ways. Both tutorials and demos illustrate
working code using AIF360. Tutorials provide additional discussion that walks
the user through the various steps of the notebook. See the details about
tutorials and demos here
A technical description of AI Fairness 360 is available in this paper. Below is the bibtex entry for this paper.
@misc{aif360-oct-2018,
title = "{AI Fairness} 360: An Extensible Toolkit for Detecting, Understanding, and Mitigating Unwanted Algorithmic Bias",
author = {Rachel K. E. Bellamy and Kuntal Dey and Michael Hind and
Samuel C. Hoffman and Stephanie Houde and Kalapriya Kannan and
Pranay Lohia and Jacquelyn Martino and Sameep Mehta and
Aleksandra Mojsilovic and Seema Nagar and Karthikeyan Natesan Ramamurthy and
John Richards and Diptikalyan Saha and Prasanna Sattigeri and
Moninder Singh and Kush R. Varshney and Yunfeng Zhang},
month = oct,
year = {2018},
url = {https://arxiv.org/abs/1810.01943}
}
The development fork for Rich Subgroup Fairness (inprocessing/gerryfair_classifier.py
) is here. Contributions are welcome and a list of potential contributions from the authors can be found here.
We included an implementation of the Debiaser for Multiple Variables algorithm from the paper
Debiaser for Multiple Variables to enhance fairness in classification tasks G d’Aloisio, A D’Angelo, A Di Marco, G Stilo Information Processing & Management 60 (2), 103226
We included the implementation of the algorithm and a notebook showing an example usage
Signed-off-by: Giordano d'Aloisio [email protected]
Equal opportunity is added according to the definition in "Mitigating Unwanted Biases with Adversarial Learning".
Also, we are able to save and restore trained model in this implementation
Signed-off-by: Mina Samizadeh mina.smz2016@gmail.com
"equal_opportunity" fairness notion is added as described in the "Mitigating Unwanted Biases with Adversarial Learning" paper. In this case, the adversary is only trained on positive (label=1) data points.
Also, you are able to save and restore the trained model in this new code.
Signed-off-by: Mina Samizadeh mina.smz2016@gmail.com
I see that for Generalized entropy index (GOI),there is a metric that calculates GOI between combinations of all groups for protected attributes. As seen in: between_all_groups_generalized_entropy_index()
I'm working on a binary classification research project that uses a dataset that has 4 different races as protected attributes. We want to calculate fairness metrics for all protected attributes in some way. I was wondering what people think about calculating Equal_opportunity_difference and odds difference on the combination of groups. Would anyone be interested in between_all_group functions for equality of odds, and equality of opportunities.
Thanks
How to use the Post processing bias mitigation methods such as Reject Option Classification
,Calibrated Equalized Odds post processing
,Equalized Odds post processing
with multi-class classification dataset?
In the documentation, it says that the fit
method requires BinaryLabelDataset
datasets as arguments.
Args:
dataset_true (BinaryLabelDataset): Dataset containing true `labels`.
dataset_pred (BinaryLabelDataset): Dataset containing predicted
`scores`.
So how can I pass a MulticlassLabelDataset
object to these methods?
How to use PrejudiceRemover and MetaFairClassifier in-process bias mitigation algorithm with a multiclass classification dataset? Is it possible or does it only accepts BinaryLabelDataset?
class_imbalance
, kl_divergence
, conditional_demographic_disparity
intersection
and one_vs_rest
meta-metricsprot_attr
instead of an index labelpredict_proba
to RejectOptionClassifier
smoothed_edf
, df_bias_amplification
class_imbalance
, kl_divergence
, conditional_demographic_disparity
intersection
, one_vs_rest
bias_scan
in aif360.metrics
to be deprecated next releaseFull Changelog: https://github.com/Trusted-AI/AIF360/compare/v0.4.0...v0.5.0
This is a major release containing a number of new features, improvements, and bugfixes.
compat.v1
) support added (#230)MetaFairClassifier
code cleaned and sped up (#196)maxiter
and maxfun
arguments in LFR fit()
(#184)scores
in a single-row dataset was getting squeezed (#193)consistency_score
documentation (#195)@baba-mpe, @SSaishruthi, @leenamurgai, @synapticarbors, @sohiniu, @yangky11
This is a major release containing a number of new features, improvements, and bugfixes.
pip install 'aif360[LFR,AdversarialDebiasing]'
or pip install 'aif360[all]'
scores
output to AdversarialDebiasing.predict()
(#139)subset()
method to StructuredDataset
(#140)MulticlassLabelDataset
to support basic multiclass problems (#165)statistical_parity_difference
, disparate_impact_ratio
, equal_opportunity_difference
, average_odds_difference
, average_odds_error
, between_group_generalized_entropy_error
)generalized_entropy_index
and its variants, consistency_score
)specificity_score
, base_rate
, selection_rate
, generalized_fpr
, generalized_fnr
)make_scorer
function to wrap metrics for use in sklearn cross-validation functions (#174, #178)Reweighing
, AdversarialDebiasing
, CalibratedEqualizedOdds
)NotImplementedError
in StandardDataset
(#115)GermanDataset
(#129 and #137)@autoih, @romeokienzler, @jimbudarz, @stephanNorsten, @sethneel, @imolloy, @guillemarsan, @gdequeiroz, @chajath, @bhavyaghai, @Tomcli, @swapna-somineni, @chkoar, @motapaolla
This is a major release containing a number of new features, improvements, and bugfixes.
pip install 'aif360[LFR,AdversarialDebiasing]'
or pip install 'aif360[all]'
scores
output to AdversarialDebiasing.predict()
(#139)subset()
method to StructuredDataset
(#140)statistical_parity_difference
, disparate_impact_ratio
, equal_opportunity_difference
, average_odds_difference
, average_odds_error
, between_group_generalized_entropy_error
)generalized_entropy_index
and its variants, consistency_score
)specificity_score
, base_rate
, selection_rate
, generalized_fpr
, generalized_fnr
)Reweighing
, AdversarialDebiasing
, CalibratedEqualizedOdds
)NotImplementedError
in StandardDataset
(#115)GermanDataset
(#129 and #137)@autoih, @romeokienzler, @jimbudarz, @stephanNorsten, @sethneel, @imolloy, @guillemarsan, @gdequeiroz, @chajath, @bhavyaghai, @Tomcli
fit_predict
arguments in RejectOptionClassification
(#111)This GitHub org hosts LF AI Foundation projects in the category of Trusted and Responsible AI.
GitHub Repository Homepageai fairness-ai fairness fairness-testing fairness-awareness-model bias-detection bias bias-correction bias-reduction bias-finder artificial-intelligence discrimination ibm-research-ai ibm-research machine-learning deep-learning codait trusted-ai r python