aif360.algorithms.postprocessing
¶
Calibrated Equality of Odds¶

class
aif360.algorithms.postprocessing.
CalibratedEqOddsPostprocessing
(unprivileged_groups, privileged_groups, cost_constraint='weighted', seed=None)[source]¶ Calibrated equalized odds postprocessing is a postprocessing technique that optimizes over calibrated classifier score outputs to find probabilities with which to change output labels with an equalized odds objective [7].
References
[7] G. Pleiss, M. Raghavan, F. Wu, J. Kleinberg, and K. Q. Weinberger, “On Fairness and Calibration,” Conference on Neural Information Processing Systems, 2017 Adapted from: https://github.com/gpleiss/equalized_odds_and_calibration/blob/master/calib_eq_odds.py
Parameters: 
fit
(dataset_true, dataset_pred)[source]¶ Compute parameters for equalizing generalized odds using true and predicted scores, while preserving calibration.
Parameters:  dataset_true (BinaryLabelDataset) – Dataset containing true labels.
 dataset_pred (BinaryLabelDataset) – Dataset containing predicted scores.
Returns: Returns self.
Return type:

fit_predict
(dataset_true, dataset_pred, threshold=0.5)[source]¶ fit and predict methods sequentially.

predict
(dataset, threshold=0.5)[source]¶ Perturb the predicted scores to obtain new labels that satisfy equalized odds constraints, while preserving calibration.
Parameters:  dataset (BinaryLabelDataset) – Dataset containing scores that needs to be transformed.
 threshold (float) – Threshold for converting scores to labels. Values greater than or equal to this threshold are predicted to be the favorable_label. Default is 0.5.
Returns: transformed dataset.
Return type: dataset (BinaryLabelDataset)

Equality of Odds¶

class
aif360.algorithms.postprocessing.
EqOddsPostprocessing
(unprivileged_groups, privileged_groups, seed=None)[source]¶ Equalized odds postprocessing is a postprocessing technique that solves a linear program to find probabilities with which to change output labels to optimize equalized odds [8] [9].
References
[8] M. Hardt, E. Price, and N. Srebro, “Equality of Opportunity in Supervised Learning,” Conference on Neural Information Processing Systems, 2016. [9] G. Pleiss, M. Raghavan, F. Wu, J. Kleinberg, and K. Q. Weinberger, “On Fairness and Calibration,” Conference on Neural Information Processing Systems, 2017. Parameters: 
fit
(dataset_true, dataset_pred)[source]¶ Compute parameters for equalizing odds using true and predicted labels.
Parameters:  true_dataset (BinaryLabelDataset) – Dataset containing true labels.
 pred_dataset (BinaryLabelDataset) – Dataset containing predicted labels.
Returns: Returns self.
Return type:

predict
(dataset)[source]¶ Perturb the predicted labels to obtain new labels that satisfy equalized odds constraints.
Parameters:  dataset (BinaryLabelDataset) – Dataset containing labels that needs to be transformed.
 dataset – Transformed dataset.

Reject Option Classification¶

class
aif360.algorithms.postprocessing.
RejectOptionClassification
(unprivileged_groups, privileged_groups, low_class_thresh=0.01, high_class_thresh=0.99, num_class_thresh=100, num_ROC_margin=50, metric_name='Statistical parity difference', metric_ub=0.05, metric_lb=0.05)[source]¶ Reject option classification is a postprocessing technique that gives favorable outcomes to unpriviliged groups and unfavorable outcomes to priviliged groups in a confidence band around the decision boundary with the highest uncertainty [10].
References
[10] F. Kamiran, A. Karim, and X. Zhang, “Decision Theory for DiscriminationAware Classification,” IEEE International Conference on Data Mining, 2012. Parameters:  unprivileged_groups (dict or list(dict)) – Representation for unprivileged group.
 privileged_groups (dict or list(dict)) – Representation for privileged group.
 low_class_thresh (float) – Smallest classification threshold to use in the optimization. Should be between 0. and 1.
 high_class_thresh (float) – Highest classification threshold to use in the optimization. Should be between 0. and 1.
 num_class_thresh (int) – Number of classification thresholds between low_class_thresh and high_class_thresh for the optimization search. Should be > 0.
 num_ROC_margin (int) – Number of relevant ROC margins to be used in the optimization search. Should be > 0.
 metric_name (str) – Name of the metric to use for the optimization. Allowed options are “Statistical parity difference”, “Average odds difference”, “Equal opportunity difference”.
 metric_ub (float) – Upper bound of constraint on the metric value
 metric_lb (float) – Lower bound of constraint on the metric value

fit
(dataset_true, dataset_pred)[source]¶ Estimates the optimal classification threshold and margin for reject option classification that optimizes the metric provided.
Note
The fit function is a noop for this algorithm.
Parameters:  dataset_true (BinaryLabelDataset) – Dataset containing the true labels.
 dataset_pred (BinaryLabelDataset) – Dataset containing the predicted scores.
Returns: Returns self.
Return type:

predict
(dataset)[source]¶ Obtain fair predictions using the ROC method.
Parameters: dataset (BinaryLabelDataset) – Dataset containing scores that will be used to compute predicted labels. Returns: Output dataset with potentially fair predictions obtain using the ROC method. Return type: dataset_pred (BinaryLabelDataset)