# fairlearn.reductions.EqualizedOdds#

class fairlearn.reductions.EqualizedOdds(*, difference_bound=None, ratio_bound=None, ratio_bound_slack=0.0)[source]#

Implementation of equalized odds as a moment.

Adds conditioning on label compared to demographic parity, i.e.

$P[h(X) = 1 | A = a, Y = y] = P[h(X) = 1 | Y = y] \; \forall a, y$

This implementation of UtilityParity defines events corresponding to the unique values of the Y array.

The prob_event pandas.Series will record the fraction of the samples corresponding to each unique value in the Y array.

The index MultiIndex will have a number of entries equal to the number of unique values for the sensitive feature, multiplied by the number of unique values of the Y array, multiplied by two (for the Lagrange multipliers for positive and negative constraints).

With these definitions, the UtilityParity.signed_weights() method will calculate the costs according to Example 4 of Agarwal et al.1.

This Moment also supports control features, which can be used to stratify the data, with the constraint applied within each stratum, but not between strata.

Read more in the User Guide.

Attributes
total_samples

Return the number of samples in the data.

Methods

 bound() Return bound vector. default_objective() Return the default objective for moments of this kind. gamma(predictor) Calculate the degree to which constraints are currently violated by the predictor. load_data(X, y, *, sensitive_features[, ...]) Load the specified data into the object. project_lambda(lambda_vec) Return the projected lambda values. signed_weights(lambda_vec) Compute the signed weights.