roc_pivot | R Documentation |
Reject Option based Classifier is post-processing bias mitigation method. Method changes labels of favorable, privileged and close to cutoff observations to unfavorable and the opposite for unprivileged observations (changing unfavorable and close to cutoff observations to favorable, more in details). By this potentially wrongfully labeled observations are assigned different labels. Note that in y in DALEX explainer 1 should indicate favorable outcome.
roc_pivot(explainer, protected, privileged, cutoff = 0.5, theta = 0.1)
explainer |
created with |
protected |
factor, protected variables with subgroups as levels (sensitive attributes) |
privileged |
factor/character, level in protected denoting privileged subgroup |
cutoff |
numeric, threshold for all subgroups |
theta |
numeric, variable specifies maximal euclidean distance to cutoff resulting ing label switch |
Method implemented implemented based on article (Kamiran, Karim, Zhang 2012). In original implementation labels should be switched. Due to specific DALEX methods
probabilities (y_hat) are assigned value in equal distance but other side of cutoff. The method changes explainers y_hat values in two cases.
1. When unprivileged subgroup is within (cutoff - theta, cutoff)
2. When privileged subgroup is within (cutoff, cutoff + theta)
DALEX explainer
with changed y_hat. This explainer should be used ONLY by fairmodels as it contains unchanged
predict function (changed predictions (y_hat) can possibly be invisible by DALEX functions and methods).
Kamiran, Karim, Zhang 2012 https://ieeexplore.ieee.org/document/6413831/ ROC method
data("german") data <- german data$Age <- as.factor(ifelse(data$Age <= 25, "young", "old")) y_numeric <- as.numeric(data$Risk) - 1 lr_model <- stats::glm(Risk ~ ., data = data, family = binomial()) lr_explainer <- DALEX::explain(lr_model, data = data[, -1], y = y_numeric) fobject <- fairness_check(lr_explainer, protected = data$Age, privileged = "old" ) plot(fobject) lr_explainer_fixed <- roc_pivot(lr_explainer, protected = data$Age, privileged = "old" ) fobject2 <- fairness_check(lr_explainer_fixed, fobject, protected = data$Age, privileged = "old", label = "lr_fixed" ) fobject2 plot(fobject2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.