FairnessMeasures

class model_monitoring.fairness_measures.FairnessMeasures(approach_type='supervised', model_type='auto', set_metrics='standard', new_metrics=None, **kwargs)

Classe utilizzata per calcolare e monitorare le metriche di fairness nei modelli di machine learning.

La classe offre la possibilità di:

  • Scegliere tra diversi approcci di fairness: “supervised” e “unsupervised”.

  • Calcolare delle metriche di fairness standard predefinite, che variano in base al tipo di modello (quando set_metrics è “standard” o “add”). Metriche di Fairness Predefinite:

    • Per model_type=”classification”:

      • statistical_parity_difference: Monitora la differenza nel Positive Rate (tasso di predizioni positive, calcolato come (TP+FP)/(TP+FP+TN+FN)) tra i gruppi di fairness. Un valore vicino a 0 indica che le distribuzioni delle predizioni positive (gli “1”) sono simili nei gruppi di fainess. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[Pr(\hat{Y}={pos\_label}|D={unprivileged}) - Pr(\hat{Y}={pos\_label}|D={privileged})\]
      • disparate_impact_ratio: Monitora il rapporto del Positive Rate tra i gruppi di fairness. Un valore vicino a 1 indica che le distribuzioni delle predizioni positive (gli “1”) sono simili nei gruppi di fainess. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

        \[\frac{Pr(\hat{Y}={pos\_label}|D={unprivileged})}{Pr(\hat{Y}={pos\_label}|D={privileged})}\]
      • predictive_parity_difference: Monitora la differenza nella Precision (Accuratezza delle predizioni positive, TP / (TP + FP)) tra i gruppi di fairness. Un valore vicino a 0 indica che l’accuratezza delle predizioni positive (gli “1”) è simile nei gruppi di fainess. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[prec_{D={unprivileged}} - prec_{D={privileged}}\]
      • equal_opportunity_difference: Monitora la differenza nella Recall (Tasso di Veri Positivi, TP / (TP + FN)) tra i gruppi di fairness. Un valore vicino a 0 indica che il modello identifica correttamente i casi positivi reali con la stessa accuratezza per entrambi i gruppi. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[TPR_{D={unprivileged}} - TPR_{D={privileged}}\]
      • average_odds_difference: Monitora la media aritmetica della differenza nel False Positive Rate (Tasso di Falsi Positivi, FP / (FP + TN)) e della differenza nella Recall (Tasso di Veri Positivi) tra i gruppi di fairness. Un valore vicino a 0 indica un simile bilanciamento tra i tassi di veri positivi e falsi positivi per entrambi i gruppi. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[\frac{(FPR_{D={unprivileged}} - FPR_{D={privileged}}) + (TPR_{D={unprivileged}} - TPR_{D={privileged}})}{2}\]
    • Per model_type=”regression” (basate su Direct Density Ratio Estimation - DDRE):

      • ddre_independence: Dato S l’insieme delle predizioni e A l’insieme dei gruppi di fairness, la metrica monitora l’indipendenza delle predizioni di un modello di regressione dai gruppi di fairness (S⟂A). Un valore vicino a 1 indica che le predizioni seguono la stessa distribuzione rispetto ai gruppi di fairness. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[\hat{r}_{{ind}} = \frac{n_0}{n_1 n} \sum_{i=1}^{n} \frac{\rho(1|s_i)}{1 - \rho(1|s_i)}\]

      Nella formula si denota con \(n_0\), \(n_1\) e \(n\) rispettivamente il numero delle righe relative al gruppo di Fairness di riferimento, a quello composto da tutti gli altri e al numero totale delle righe. Con si denota un classificatore binario (Logistic Regression) per approssimare la densità di probabilità condizionata di un gruppo di fairness data la previsione.

      • ddre_separation: Dato S l’insieme delle predizioni, Y l’insieme dei valori del target vero e A l’insieme dei gruppi di fairness, la metrica monitora l’indipendenza delle predizioni di un modello di regressione dai gruppi di fairness, dato il target (S⟂A | Y). Un valore vicino a 1 indica che le predizioni rispetto al target seguono la stessa distribuzione rispetto ai gruppi di fairness. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[\hat{r}_{{sep}} = \frac{1}{n} \sum_{i=1}^{n} \frac{\rho(1|y_i, s_i)}{1 - \rho(1|y_i, s_i)} \cdot \frac{1 - \rho(1|y_i)}{\rho(1|y_i)}\]

      Nella formula si denota con \(n\) rispettivamente il numero totale delle righe. Con si denota un classificatore binario (Logistic Regression) per approssimare le densità di probabilità condizionate di un gruppo di fairness dato il target vero e data la previsione ed il target vero.

      • ddre_sufficiency: Dato S l’insieme delle predizioni, Y l’insieme dei valori del target vero e A l’insieme dei gruppi di fairness, la metrica monitora l’indipendenza del target vero dai gruppi di fairness, date le predizioni di un modello di regressione (Y⟂A | S). Un valore vicino a 1 indica che il target vero rispetto alle predizioni segue la stessa distribuzione trasversalmente ai gruppi di fairness. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri. Formula:

      \[\hat{r}_{{suf}} = \frac{1}{n} \sum_{i=1}^{n} \frac{\rho(1|y_i, s_i)}{1 - \rho(1|y_i, s_i)} \cdot \frac{1 - \rho(1|s_i)}{\rho(1|s_i)}\]

      Nella formula si denota con \(n\) rispettivamente il numero totale delle righe. Con si denota un classificatore binario (Logistic Regression) per approssimare le densità di probabilità condizionate di un gruppo di fairness date le predizioni e data la previsione ed il target vero.

    • Per model_type=”clustering” ( richiede approach_type = “unsupervised” ):

      • ddre_independence: Dato S l’insieme delle etichette di clustering e A l’insieme dei gruppi di fairness, la metrica monitora l’indipendenza delle etichette di clustering dai gruppi di fairness (S⟂A). Un valore vicino a 1 indica che le etichette di clustering seguono la stessa distribuzione rispetto ai gruppi di fairness. Se i gruppi di fairness sono più di due, si applica una logica “One-vs-all”, ovvero che ogni gruppo di fairness viene confrontato con tutti gli altri.

    • Per model_type=”multiclass”:

      • statistical_parity_difference: Come per la classificazione, ma calcolata per ogni classe contro tutte le altre e andando poi ad aggregare le singole metriche per classe al valore massimo in valore assoluto (default) o sommandone i valori in valore assoluto.

      • predictive_parity_difference: Come per la classificazione, ma calcolata per ogni classe contro tutte le altre e andando poi ad aggregare le singole metriche per classe al valore massimo in valore assoluto (default) o sommandone i valori in valore assoluto.

      • equal_opportunity_difference: Come per la classificazione, ma calcolata per ogni classe contro tutte le altre e andando poi ad aggregare le singole metriche per classe al valore massimo in valore assoluto (default) o sommandone i valori in valore assoluto.

      • average_odds_difference: Come per la classificazione, ma calcolata per ogni classe contro tutte le altre e andando poi ad aggregare le singole metriche per classe al valore massimo in valore assoluto (default) o sommandone i valori in valore assoluto.

  • Aggiungere (set_metrics=”add”) o sostituire completamente (set_metrics=”new”) queste metriche di fairness con funzioni personalizzate fornite tramite il parametro new_metrics.

Methods

__init__

Inizializza la classe FairnessMeasures, configurando le impostazioni necessarie per calcolare le metriche di fairness.

compute_metrics

Calcola le metriche di fairness basandosi sulle metriche di fairness impostate sui gruppi di fairness specificati.