Skip to content

fairness_objective module

This module contains the fairness objectives. These functions won't be called as is, as these will be passed to a IndicesInput.objective.

classification_error(self, x=None)

Evaluate the fairness of the model's errors over the dataset. This allow to check if the model errors are due to the presence of a sensitive attribute.

The error is computed for classification by checking if the model output is equal to y_true given in the IndicesInput.

Source code in deel\fairsense\utils\fairness_objective.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
def classification_error(self: IndicesInput, x=None):
    """
    Evaluate the fairness of the model's errors over the dataset. This allow to
    check if the model errors are due to the presence of a sensitive attribute.

    The error is computed for classification by checking if the model output is equal to
    `y_true` given in the `IndicesInput`.
    """
    if x is not None:
        raise RuntimeError("this target can only be used with x=None")
    y_pred = self.model(self.x)
    # if len(y_pred.shape) < 2:
    #     y_pred = np.expand_dims(y_pred, -1)
    return np.not_equal(self.y_true, y_pred).astype(float)

squared_error(self, x=None)

Evaluate the fairness of the model's errors over the dataset. This allow to check if the model errors are due to the presence of a sensitive attribute.

The error is computed for regression by measuring the squared error between the model output and y_true given in the IndicesInput.

Source code in deel\fairsense\utils\fairness_objective.py
66
67
68
69
70
71
72
73
74
75
76
77
78
79
def squared_error(self: IndicesInput, x=None):
    """
    Evaluate the fairness of the model's errors over the dataset. This allow to
    check if the model errors are due to the presence of a sensitive attribute.

    The error is computed for regression by measuring the squared error between the
    model output and `y_true` given in the `IndicesInput`.
    """
    if x is not None:
        raise RuntimeError("this target can only be used with x=None")
    y_pred = self.model(self.x)
    if len(y_pred.shape) < 2:
        y_pred = np.expand_dims(y_pred, -1)
    return np.square(self.y_true - y_pred)

y_pred(self, x=None)

Evaluate the fairness of the model's predictions over the dataset. This allow to check if the model gives biased decisions.

Source code in deel\fairsense\utils\fairness_objective.py
42
43
44
45
46
47
def y_pred(self: IndicesInput, x=None):
    """
    Evaluate the fairness of the model's predictions over the dataset. This allow to
    check if the model gives biased decisions.
    """
    return np.float32(self.model(x if x is not None else self.x))

y_true(self, x=None)

Evaluate the intrinsic fairness of the dataset. This allow to check if the data used for training is biased.

Source code in deel\fairsense\utils\fairness_objective.py
32
33
34
35
36
37
38
39
def y_true(self: IndicesInput, x=None):
    """
    Evaluate the intrinsic fairness of the dataset. This allow to check if the data
    used for training is biased.
    """
    if x is not None:
        raise RuntimeError("this target can only be used with x=None")
    return self.y_true