FairnessDrift.get_report_reduced¶
- FairnessDrift.get_report_reduced()¶
Restituisce un report comprensivo dei risultati del drift delle metriche di fairness con warning assoluti e relativi.
- Parameters:
None (metodo basato sulle metriche correnti e le soglie già impostate durante l'inizializzazione ed eventualmente le metriche storiche)
- Returns:
Restituisce il report con le metriche e i gruppi di fairness
- Return type:
pd.DataFrame
Note
Se lanciato dopo get_absolute_reduced() conterrà anche i warning assoluti sulle performance delle metriche correnti.
Se lanciato dopo get_relative_reduced() conterrà anche i warning relativi al drift sulle performance delle metriche correnti rispetto a quelle storiche.
Il report contiene per ogni gruppo di fairness, oltre al valore della metrica, anche la percentuale di campioni appartenenti al gruppo rispetto al numero totale di campioni.
Se l’attributo return_prop_true dell’__init__ della classe FairnessMeasures è True il dizionario delle metriche di fairness conterrà anche la percentuale di 1 (veri positivi) all’interno del gruppo in un contesto di classificazione binaria, e di conseguenza il report conterrà anche la colonna proportion_1_curr, e proportion_1_stor se chiamato dopo get_relative_reduced().
Dati utilizzati per gli esempi
>>> df_esempio_corr
feature_num feature_cat target_clf pred_clf target_reg pred_reg 0 2 B 0 0 7.652628 -1.427613 1 3 A 1 0 17.712800 3.589763 2 4 C 0 0 17.682912 32.339399 3 5 B 0 0 22.671351 20.413588 4 6 A 0 1 31.209811 31.885093 5 7 C 1 0 25.433599 11.186117 6 8 D 0 1 31.375411 25.931584 7 9 E 0 1 42.188562 43.297788 8 10 C 0 1 44.935844 33.425909 9 11 A 1 0 56.571237 60.328217 >>> df_esempio_stor
feature_num feature_cat target_clf pred_clf target_reg pred_reg 0 1 A 0 0 -1.131079 13.795709 1 2 B 1 1 5.259965 12.331217 2 3 A 0 0 12.151730 -6.433172 3 4 C 0 0 15.114249 1.408011 4 5 B 0 1 21.146841 17.845778 5 6 A 1 1 29.831444 14.678544 6 7 C 1 0 29.835704 41.836306 7 8 A 1 0 45.712137 27.485945 8 9 B 1 0 41.951110 44.644955 9 10 C 1 0 57.347082 52.882838 Esempio 1:
>>> FM = FairnessMeasures(approach_type="supervised", model_type="classification") >>> fair_dict_corr = FM.compute_metrics( ... df_esempio_corr.pred_clf, ... df_esempio_corr, ... target=df_esempio_corr.target_clf, ... fair_feat=['feature_cat'] ... ) >>> fair_dict_stor = FM.compute_metrics( ... df_esempio_stor.pred_clf, ... df_esempio_stor, ... target=df_esempio_stor.target_clf, ... fair_feat=['feature_cat'] ... ) >>> from model_monitoring.fairness_drift import FairnessDrift >>> FD = FairnessDrift(fair_dict_corr) >>> FD.get_report_reduced()
vars groups curr_perc_label proportion_1_curr equal_opportunity_difference_curr_perf average_odds_difference_curr_perf statistical_parity_difference_curr_perf disparate_impact_ratio_curr_perf predictive_parity_difference_curr_perf 1 feature_cat A 0.3 0.666667 0.0 0.25 -0.095238 0.777778 0.0 2 feature_cat C 0.3 0.333333 0.0 -0.05 -0.095238 0.777778 0.0 0 feature_cat B 0.2 0.000000 0.0 -0.40 -0.500000 0.000000 0.0 3 feature_cat D 0.1 0.000000 0.0 0.25 0.666667 3.000000 0.0 4 feature_cat E 0.1 0.000000 0.0 0.25 0.666667 3.000000 0.0 Esempio 2: Uso con get_absolute_reduced
>>> FD.get_absolute_reduced() >>> FD.get_report_reduced()
vars groups curr_perc_label proportion_1_curr equal_opportunity_difference_curr_perf average_odds_difference_curr_perf statistical_parity_difference_curr_perf disparate_impact_ratio_curr_perf predictive_parity_difference_curr_perf absolute_warning 1 feature_cat A 0.3 0.666667 0.0 0.25 -0.095238 0.777778 0.0 Yellow Alert for average_odds_difference, disparate_impact_ratio 2 feature_cat C 0.3 0.333333 0.0 -0.05 -0.095238 0.777778 0.0 Yellow Alert for disparate_impact_ratio 0 feature_cat B 0.2 0.000000 0.0 -0.40 -0.500000 0.000000 0.0 Red Alert for statistical_parity_difference, disparate_impact_ratio 3 feature_cat D 0.1 0.000000 0.0 0.25 0.666667 3.000000 0.0 Red Alert for statistical_parity_difference, disparate_impact_ratio, Yellow Alert for average_odds_difference 4 feature_cat E 0.1 0.000000 0.0 0.25 0.666667 3.000000 0.0 Red Alert for statistical_parity_difference, disparate_impact_ratio, Yellow Alert for average_odds_difference Esempio 3: Uso con get_relative_reduced
>>> FD.get_relative_reduced(fair_dict_stor) >>> FD.get_report_reduced()
vars groups curr_perc_label proportion_1_curr equal_opportunity_difference_curr_perf statistical_parity_difference_curr_perf predictive_parity_difference_curr_perf average_odds_difference_curr_perf disparate_impact_ratio_curr_perf absolute_warning stor_perc_label proportion_1_stor equal_opportunity_difference_stor_perf drift_perc_equal_opportunity_difference statistical_parity_difference_stor_perf drift_perc_statistical_parity_difference predictive_parity_difference_stor_perf drift_perc_predictive_parity_difference average_odds_difference_stor_perf drift_perc_average_odds_difference disparate_impact_ratio_stor_perf drift_perc_disparate_impact_ratio relative_warning 0 feature_cat A 0.3 0.666667 0.0 -0.095238 0.0 0.25 0.777778 Yellow Alert for average_odds_difference, disparate_impact_ratio 0.4 0.500000 0.25 -100.0 -0.083333 14.285714 0.500000 -100.0 -0.125000 100.0 0.750000 -11.111111 Red Alert for average_odds_difference 1 feature_cat C 0.3 0.333333 0.0 -0.095238 0.0 -0.05 0.777778 Yellow Alert for disparate_impact_ratio 0.3 0.666667 -0.50 -100.0 -0.428571 -77.777778 -0.666667 -100.0 -0.416667 -88.0 0.000000 -77.777778 2 feature_cat B 0.2 0.000000 0.0 -0.500000 0.0 -0.40 0.000000 Red Alert for statistical_parity_difference, average_odds_difference, disparate_impact_ratio 0.3 0.666667 0.25 -100.0 0.523810 -4.545455 -0.500000 -100.0 0.625000 -36.0 4.666667 -72.727273