aif360.sklearn.inprocessing.ExponentiatedGradientReduction

class aif360.sklearn.inprocessing.ExponentiatedGradientReduction(prot_attr, estimator, constraints, eps=0.01, T=50, nu=None, eta_mul=2.0, drop_prot_attr=True)[source]

Exponentiated gradient reduction for fair classification.

Exponentiated gradient reduction is an in-processing technique that reduces fair classification to a sequence of cost-sensitive classification problems, returning a randomized classifier with the lowest empirical error subject to fair classification constraints [1].

References

[1]A. Agarwal, A. Beygelzimer, M. Dudik, J. Langford, and H. Wallach, “A Reductions Approach to Fair Classification,” International Conference on Machine Learning, 2018.
Parameters:
  • prot_attr – String or array-like column indices or column names of protected attributes.
  • estimator – An estimator implementing methods fit(X, y, sample_weight) and predict(X), where X is the matrix of features, y is the vector of labels, and sample_weight is a vector of weights; labels y and predictions returned by predict(X) are either 0 or 1 – e.g. scikit-learn classifiers.
  • constraints (str or fairlearn.reductions.Moment) – If string, keyword denoting the fairlearn.reductions.Moment object defining the disparity constraints – e.g., “DemographicParity” or “EqualizedOdds”. For a full list of possible options see self.model.moments. Otherwise, provide the desired Moment object defining the disparity constraints.
  • eps – Allowed fairness constraint violation; the solution is guaranteed to have the error within 2*best_gap of the best error under constraint eps; the constraint violation is at most 2*(eps+best_gap).
  • T – Maximum number of iterations.
  • nu – Convergence threshold for the duality gap, corresponding to a conservative automatic setting based on the statistical uncertainty in measuring classification error.
  • eta_mul – Initial setting of the learning rate.
  • drop_prot_attr – Boolean flag indicating whether to drop protected attributes from training data.

Methods

fit Learns randomized model with less bias
get_params Get parameters for this estimator.
predict Predict class labels for the given samples.
predict_proba Probability estimates.
score Return the mean accuracy on the given test data and labels.
set_params Set the parameters of this estimator.
__init__(prot_attr, estimator, constraints, eps=0.01, T=50, nu=None, eta_mul=2.0, drop_prot_attr=True)[source]
Parameters:
  • prot_attr – String or array-like column indices or column names of protected attributes.
  • estimator – An estimator implementing methods fit(X, y, sample_weight) and predict(X), where X is the matrix of features, y is the vector of labels, and sample_weight is a vector of weights; labels y and predictions returned by predict(X) are either 0 or 1 – e.g. scikit-learn classifiers.
  • constraints (str or fairlearn.reductions.Moment) – If string, keyword denoting the fairlearn.reductions.Moment object defining the disparity constraints – e.g., “DemographicParity” or “EqualizedOdds”. For a full list of possible options see self.model.moments. Otherwise, provide the desired Moment object defining the disparity constraints.
  • eps – Allowed fairness constraint violation; the solution is guaranteed to have the error within 2*best_gap of the best error under constraint eps; the constraint violation is at most 2*(eps+best_gap).
  • T – Maximum number of iterations.
  • nu – Convergence threshold for the duality gap, corresponding to a conservative automatic setting based on the statistical uncertainty in measuring classification error.
  • eta_mul – Initial setting of the learning rate.
  • drop_prot_attr – Boolean flag indicating whether to drop protected attributes from training data.
fit(X, y)[source]

Learns randomized model with less bias

Parameters:
  • X (pandas.DataFrame) – Training samples.
  • y (array-like) – Training labels.
Returns:

self

predict(X)[source]

Predict class labels for the given samples. :param X: Test samples. :type X: pandas.DataFrame

Returns:numpy.ndarray – Predicted class label per sample.
predict_proba(X)[source]

Probability estimates.

The returned estimates for all classes are ordered by the label of classes.

Parameters:X (pandas.DataFrame) – Test samples.
Returns:numpy.ndarray – Returns the probability of the sample for each class in the model, where classes are ordered as they are in self.classes_.