Materials for a technical, nuts-and-bolts course about increasing transparency, fairness, security and privacy in machine learning.
- Lecture 1: Interpretable Machine Learning Models
- Lecture 2: Post-hoc Explanation
- Lecture 3: Discrimination Testing and Remediation
- Lecture 4: Machine Learning Security
- Lecture 5: Machine Learning Model Debugging
- Lecture 6: Responsible Machine Learning Best Practices
Corrections or suggestions? Please file a GitHub issue.
Source: Building from Penalized GLM to Monotonic GBM
- Syllabus
- Lecture Notes
- Lecture Video
- Software Example: Building from Penalized GLM to Monotonic GBM
- Python explainable boosting machine (EBM)/GA2M
- R
gam h2openalized GLM (R and Python)- Monotonic gradient boosting machine (GBM):
h2oandxgboost(R and Python) - R
rpart - Python
skope-rules
-
Introduction and Background:
-
Interpretable Machine Learning Techniques:
- Interpretable Machine Learning - Chapter 4
- Accurate Intelligible Models with Pairwise Interactions
- This Looks Like That: Deep Learning for Interpretable Image Recognition
-
Links from Lecture 1:
Source: Global and Local Explanations of a Constrained Model
- Lecture Notes
- Lecture Video
- Software Example: Global and Local Explanations of a Constrained Model
-
Introduction and Background:
-
Post-hoc Explanation Techniques:
- Interpretable Machine Learning - Chapter 5 and Chapter 6
- Towards Better Understanding of Gradient-based Attribution Methods for Deep Neural Networks
-
Links from Lecture 2:
Source: Lecture 3 Notes
- Lecture Notes
- Lecture Video
- Software Example: Testing a Constrained Model for Discrimination and Remediating Discovered Discrimination
Python:
-
Introduction and Background:
- Fairness and Machine Learning - Introduction
- Fairness Through Awareness
-
Discrimination Testing and Remediation Techniques:
- Certifying and Removing Disparate Impact
- Data Preprocessing Techniques for Classification Without Discrimination
- Decision Theory for Discrimination-aware Classification
- Fairness Beyond Disparate Treatment & Disparate Impact: Learning Classification Without Disparate Mistreatment
- Learning Fair Representations
- Mitigating Unwanted Biases with Adversarial Learning
Source: Secure Machine Learning Ideas
- Lecture Notes
- Lecture Video
- Software Example: Attacking a Machine Learning Model
Python:
-
Introduction and Background:
-
Machine Learning Attacks:
- Membership Inference Attacks Against Machine Learning Models
- Stealing Machine Learning Models via Prediction APIs
- Model Inversion Attacks that Exploit Confidence Information and Basic Countermeasures
- Hacking Smart Machines with Smarter Ones: How to Extract Meaningful Data from Machine Learning Classifiers
-
Links from Lecture 4:
Source: Real-World Strategies for Model Debugging
- Lecture Notes
- Lecture Video
- Software Example: Debugging a Machine Learning Model
DALEX(R)SALib(Python)themis-ml(Python)What-if Tool(Browser)
-
Introduction and Background:
-
Links from Lecture 5:
- Testing and Debugging in Machine Learning (Google)
- AI Incidents (not already linked above):
- Self-Driving Uber Car Kills Pedestrian in Arizona, Where Robots Roam
- The Woz tweets on Apple and Goldman Sachs
- Suckers List: How Allstate’s Secret Auto Insurance Algorithm Squeezes Big Spenders
- A.C.L.U. Accuses Clearview AI of Privacy ‘Nightmare Scenario’
- Government’s Use of Algorithm Serves Up False Fraud Charges
- Microsoft's robot editor confuses mixed-race Little Mix singers
- Welfare surveillance system violates human rights, Dutch court rules
- Intelligible Models for HealthCare: Predicting Pneumonia Risk and Hospital 30-day Readmission

A Responsible Machine Learning Workflow Diagram. Source: Information, 11(3) (March 2020).
-
Introduction and Background:
-
Links from Lecture 6:
- Example Model Card
- Network Graph Example
- Autoencoder Visualizations:
Preliminaries:
-
Install
homebrew:$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" -
Install Java:
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk8
-
Install Git:
$ brew install git
-
Clone this repository with the examples:
$ git clone https://github.com/jphall663/GWU_rml.git -
Install Anaconda Python 5.1.0 from the Anaconda archives (Anaconda3-5.1.0-MacOSX-x86_64.pkg) and add it to your system path. (This means when you type
$ pythonat the command prompt, you will start a Python 3.6 session. You should probably check for a line like thisexport PATH="/Users/phall/anaconda/bin:$PATH"in your.bash_profilefile. You may also need to close and restart your terminal session.) -
Install
virtualenv:$ pip install virtualenv -
Change directories into the cloned repository:
$ cd GWU_rml -
Create a Python 3.6 virtual environment:
$ virtualenv -p /path/to/anaconda3/bin/python3.6 env_rml(/path/to/anaconda3/bin/python3.6is not a real path. You must replace it with the path topython3.6on your system. This can be as simple as$ virtualenv -p python3.6 env_rml.) -
Activate the virtual environment:
$ source env_rml/bin/activate -
Install the correct packages for the example notebooks:
$ pip install -r requirements.txt -
Start Jupyter:
$ jupyter notebook -
When you are finished, deactivate the environment:
$ deactivate
If you get stuck, try this link: Mac Setup: Virtualenv.
-
Install Git (
$ sudo apt-get install git), Graphviz ($ sudo apt-get install graphviz) and Java ($ sudo apt-get install openjdk-8-jdk). They must all be added to your system path. -
Clone this repository with the examples:
$ git clone https://github.com/jphall663/GWU_rml.git -
Install Anaconda Python 5.1.0 from the Anaconda archives (Anaconda3-5.1.0-Linux-x86_64.sh) and add it to your system path. (This means when you type
$ pythonat the command prompt, you will start a Python 3.6 session.) -
Install
virtualenv:$ pip install virtualenv -
Change directories into the cloned repository:
$ cd GWU_rml -
Create a Python 3.6 virtual environment:
$ virtualenv -p /path/to/anaconda3/bin/python3.6 env_rml -
Activate the virtual environment:
$ source env_rml/bin/activate -
Install the correct packages for the example notebooks:
$ pip install -r requirements.txt -
Start Jupyter:
$ jupyter notebook -
When you are finished, deactivate the environment:
$ deactivate.
Some materials Copyright Patrick Hall and the H2O.ai team 2017-2020.
