π§ BIAS IN ML β When your AI adopts Grandma Karen's prejudices! π€π΅
π Definition
Bias in ML = your model developing discriminatory preferences without being asked! It prefers John to Ahmed, men to women, or cats to dogs... basically, it becomes racist, sexist, or just annoying.
Signs:
- Unequal performance across groups (gender, ethnicity, age)
- Systematically skewed predictions for certain categories
- Unfair decisions reproducing social stereotypes
- Automated discrimination at scale
β‘ Advantages / Disadvantages / Limitations
β "Advantages" (if we can call them that)
- Reflects reality (sometimes data is genuinely biased)
- Preserved global performance (on majority cases)
- Quick learning of dominant patterns
β Disadvantages
- Legal discrimination (GDPR fines, lawsuits)
- Guaranteed bad press (your startup in newspapers... for wrong reasons)
- User exclusion (loss of customers/revenue)
- Amplification of existing social inequalities
β οΈ Limitations
- Complex detection (subtle, intersectional biases)
- Difficult correction without degrading performance
- Subjectivity in fairness definition
- Trade-offs between performance vs fairness
π οΈ Practical Tutorial: My Real Case
π Setup
- Model: CV Classifier (BERT Fine-tuned)
- Dataset: 50k resumes, 70% men, 85% engineering schools
- Config: Binary classification (hired/rejected), 85% accuracy target
- Hardware: RTX 3090, post-training fairness analysis
π Results Obtained
Global accuracy: 87%
Men: 91% accuracy
Women: 76% accuracy
Prestigious schools: 94%
Self-taught: 68%
π§ͺ Real-world Testing
Peter's Resume (MIT): "ACCEPTED" (confidence: 94%)
Fatima's Resume (same skills): "REJECTED" (confidence: 78%)
John's Resume (active GitHub): "REJECTED" (confidence: 82%)
Marie's Resume (Ivy League): "ACCEPTED" (confidence: 91%)
Verdict: π¨ SYSTEMATIC BIAS CONFIRMED
π‘ Concrete Examples
Famous bias cases
- Amazon Recruiting Tool: discriminated against women (stopped in 2018)
- COMPAS: judicial system biased against ethnic minorities
- Google Photos: tagged Black people as "gorillas"
- GPT-3: associated "man = programmer", "woman = homemaker"
Common bias types
- Historical bias: reproduces past inequalities
- Representation bias: underrepresentation of groups
- Measurement bias: flawed measurement tools
- Evaluation bias: inadequate metrics
π Cheat Sheet: Detecting and Fixing Bias
π Warning Signs
- Performance gaps >10% between groups
- Strange correlations (first name β decision)
- Recurring negative user feedback
- External audit revealing discriminations
π οΈ Technical Solutions
- Targeted data augmentation for minorities
- Resampling: over/under-sampling by group
- Fairness constraints in loss function
- Adversarial debiasing: anti-bias adversarial network
βοΈ Fairness Metrics
Demographic Parity: P(Y=1|A=0) = P(Y=1|A=1)
Equalized Odds: Equal TPR and FPR per group
Individual Fairness: similar individuals β similar predictions
Counterfactual Fairness: decision unchanged if sensitive attribute modified
π» Code Example
from sklearn.metrics import confusion_matrix
import numpy as np
class BiasDetector:
def __init__(self, model, sensitive_attribute):
self.model = model
self.sensitive_attr = sensitive_attribute
def demographic_parity(self, X, y_pred):
"""Check equality of positive prediction rates"""
groups = np.unique(X[self.sensitive_attr])
positive_rates = {}
for group in groups:
group_mask = X[self.sensitive_attr] == group
group_predictions = y_pred[group_mask]
positive_rate = np.mean(group_predictions)
positive_rates[group] = positive_rate
return positive_rates
def equalized_odds(self, X, y_true, y_pred):
"""Check equality of TPR and FPR per group"""
groups = np.unique(X[self.sensitive_attr])
metrics = {}
for group in groups:
group_mask = X[self.sensitive_attr] == group
y_true_group = y_true[group_mask]
y_pred_group = y_pred[group_mask]
tn, fp, fn, tp = confusion_matrix(y_true_group, y_pred_group).ravel()
tpr = tp / (tp + fn) if (tp + fn) > 0 else 0
fpr = fp / (fp + tn) if (fp + tn) > 0 else 0
metrics[group] = {'TPR': tpr, 'FPR': fpr}
return metrics
def bias_report(self, X, y_true, y_pred):
"""Complete bias detection report"""
print("=== BIAS DETECTION REPORT ===")
# Demographic Parity
dp_scores = self.demographic_parity(X, y_pred)
print(f"Demographic Parity: {dp_scores}")
# Equalized Odds
eo_scores = self.equalized_odds(X, y_true, y_pred)
print(f"Equalized Odds: {eo_scores}")
# Detect significant gaps
dp_values = list(dp_scores.values())
if max(dp_values) - min(dp_values) > 0.1:
print("π¨ BIAS DETECTED: Gap >10% in Demographic Parity")
return {"demographic_parity": dp_scores, "equalized_odds": eo_scores}
# Usage
detector = BiasDetector(model, sensitive_attribute='gender')
bias_report = detector.bias_report(X_test, y_true, y_pred)
# Correction via resampling
def debias_dataset(X, y, sensitive_attr, method='oversample'):
"""Dataset rebalancing to reduce bias"""
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
if method == 'oversample':
sampler = SMOTE(random_state=42)
X_balanced, y_balanced = sampler.fit_resample(X, y)
elif method == 'undersample':
sampler = RandomUnderSampler(random_state=42)
X_balanced, y_balanced = sampler.fit_resample(X, y)
return X_balanced, y_balanced
π Summary
Bias = automated discrimination reproducing training data prejudices. Detection via fairness metrics, correction through rebalancing and constraints. Vigilance required to avoid legal and ethical scandals.
π― Conclusion
My biased CV classifier taught me the importance of systematic fairness auditing. Global performance β equitable justice. Next step: integrating fairness constraints from design phase.
β Questions & Answers
Q: I think my model discriminates, how can I verify it? A: Calculate fairness metrics by group (Demographic Parity, Equalized Odds). If you see gaps >10%, it's very likely bias. Also test on obvious edge cases.
Q: My dataset is naturally imbalanced, what should I do?
A: Oversample minorities with SMOTE or undersample majorities. You can also generate synthetic data for underrepresented groups. Perfect balance doesn't exist, but aim to reduce gaps.
Q: Will fixing bias degrade my performance? A: Often yes, slightly. It's the classic performance vs fairness trade-off. But better 82% equitable accuracy than 85% discriminatory! Your users and the law will thank you.
π€ Did You Know?
Amazon spent millions on a recruiting AI system that systematically discriminated against women! The system penalized resumes containing the word "women's" (like "women's chess club captain") and favored "aggressive" verbs typically masculine. Discovered in 2015, abandoned in 2017... 3 years of development in the trash! Moral: a bias audit from the beginning would have saved time and money! πΈπ©βπ»
ThΓ©o CHARLET
IT Systems & Networks Student - AI/ML Specialization
Creator of AG-BPE (Attention-Guided Byte-Pair Encoding)
π LinkedIn: https://www.linkedin.com/in/thΓ©o-charlet
π Seeking internship opportunities