模型中的机器学习偏差
探究偏差在机器学习模型中的应用方式。
import numpy as np from scipy.stats import chi2_contingency
def demographic_parity_analysis( total_approval_rate=0.60, female_approval_rate=0.45, male_approval_rate=0.70 ): # 计算人口统计均等性差异 demographic_parity_diff = abs(male_approval_rate - female_approval_rate)
1# 统计显著性检验 2total_sample_size = 1000 3female_sample = np.random.binomial(total_sample_size, female_approval_rate) 4male_sample = np.random.binomial(total_sample_size, male_approval_rate) 5 6# 独立性卡方检验 7contingency_table = np.array([ 8 [female_sample, total_sample_size - female_sample], 9 [male_sample, total_sample_size - male_sample] 10]) 11chi2, p_value = chi2_contingency(contingency_table)[:2] 12 13return { 14 "demographic_parity_difference": demographic_parity_diff, 15 "chi2_statistic": chi2, 16 "p_value": p_value, 17 "bias_threshold": 0.2, 18 "is_biased": demographic_parity_diff > 0.2 19}
outputs = demographic_parity_analysis() print(outputs)
def equalized_odds_evaluation( group_a_true_positive_rate=0.65, group_a_false_positive_rate=0.35, group_b_true_positive_rate=0.40, group_b_false_positive_rate=0.15 ): # 计算各类率的差异 tpr_disparity = abs(group_a_true_positive_rate - group_b_true_positive_rate) fpr_disparity = abs(group_a_false_positive_rate - group_b_false_positive_rate)
1return { 2 "true_positive_rate_disparity": tpr_disparity, 3 "false_positive_rate_disparity": fpr_disparity, 4 "total_disparity": tpr_disparity + fpr_disparity, 5 "is_equalized": tpr_disparity < 0.1 and fpr_disparity < 0.1 6}
outputs = equalized_odds_evaluation() print(outputs)