equalized_odds | R Documentation |
Equalized odds is satisfied when a model's predictions have the same false positive, true positive, false negative, and true negative rates across protected groups. A value of 0 indicates parity across groups.
By default, this function takes the maximum difference in range of sens()
and spec()
.estimate
s across groups. That is, the maximum pair-wise
disparity in sens()
or spec()
between groups is the return value of
equalized_odds()
's .estimate
.
Equalized odds is sometimes referred to as conditional procedure accuracy equality or disparate mistreatment.
See the "Measuring disparity" section for details on implementation.
equalized_odds(by)
by |
The column identifier for the sensitive feature. This should be an unquoted column name referring to a column in the un-preprocessed data. |
This function outputs a yardstick fairness metric function. Given a
grouping variable by
, equalized_odds()
will return a yardstick metric
function that is associated with the data-variable grouping by
and a
post-processor. The outputted function will first generate a set
of sens()
and spec()
metric values by group before summarizing across
groups using the post-processing function.
The outputted function only has a data frame method and is intended to be used as part of a metric set.
For finer control of group treatment, construct a context-aware fairness
metric with the new_groupwise_metric()
function by passing a custom aggregate
function:
# see yardstick:::max_positive_rate_diff for the actual `aggregate()` diff_range <- function(x, ...) {diff(range(x$.estimate))} equalized_odds_2 <- new_groupwise_metric( fn = metric_set(sens, spec), name = "equalized_odds_2", aggregate = diff_range )
In aggregate()
, x
is the metric_set()
output with sens()
and spec()
values for each group, and ...
gives additional arguments (such as a grouping
level to refer to as the "baseline") to pass to the function outputted
by equalized_odds_2()
for context.
Agarwal, A., Beygelzimer, A., Dudik, M., Langford, J., & Wallach, H. (2018). "A Reductions Approach to Fair Classification." Proceedings of the 35th International Conference on Machine Learning, in Proceedings of Machine Learning Research. 80:60-69.
Verma, S., & Rubin, J. (2018). "Fairness definitions explained". In Proceedings of the international workshop on software fairness (pp. 1-7).
Bird, S., DudÃk, M., Edgar, R., Horn, B., Lutz, R., Milan, V., ... & Walker, K. (2020). "Fairlearn: A toolkit for assessing and improving fairness in AI". Microsoft, Tech. Rep. MSR-TR-2020-32.
Other fairness metrics:
demographic_parity()
,
equal_opportunity()
library(dplyr)
data(hpc_cv)
head(hpc_cv)
# evaluate `equalized_odds()` by Resample
m_set <- metric_set(equalized_odds(Resample))
# use output like any other metric set
hpc_cv %>%
m_set(truth = obs, estimate = pred)
# can mix fairness metrics and regular metrics
m_set_2 <- metric_set(sens, equalized_odds(Resample))
hpc_cv %>%
m_set_2(truth = obs, estimate = pred)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.