πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Fairness, Bias, and Equity in Healthcare AI

Healthcare AIFairness, Bias, and Equity in Healthcare AI🟒 Free Lesson

Advertisement

Fairness, Bias, and Equity in Healthcare AI

Module: Healthcare AI | Difficulty: Advanced

Demographic Parity

Equalized Odds

Calibration by Group

Fairness Metrics

| Metric | Definition | Healthcare Context | |--------|-----------|-------------------| | Demographic Parity | Equal prediction rates | Resource allocation | | Equalized Odds | Equal TPR and FPR | Diagnostic accuracy | | Predictive Parity | Equal PPV | Screening programs | | Calibration | Equal reliability | Risk assessment | | Counterfactual Fairness | Consistent under change | Treatment decisions |

import torch
import torch.nn as nn
import numpy as np

class FairnessConstrainedModel(nn.Module):
    def __init__(self, input_dim, num_groups=2, lambda_fair=0.1):
        super().__init__()
        self.feature_net = nn.Sequential(
            nn.Linear(input_dim, 128), nn.ReLU(),
            nn.Dropout(0.3), nn.Linear(128, 64), nn.ReLU())
        self.prediction_head = nn.Linear(64, 1)
        self.adversary = nn.Sequential(
            nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, num_groups))
        self.lambda_fair = lambda_fair

    def forward(self, x, return_sensitive=False):
        features = self.feature_net(x)
        prediction = torch.sigmoid(self.prediction_head(features))
        if return_sensitive:
            group_pred = self.adversary(features)
            return prediction, group_pred, features
        return prediction

def compute_fairness_metrics(predictions, labels, groups):
    metrics = {}
    for g in np.unique(groups):
        mask = groups == g
        metrics[f'group_{g}_mean_pred'] = predictions[mask].mean()
        metrics[f'group_{g}_mean_true'] = labels[mask].mean()
        metrics[f'group_{g}_tpr'] = (
            ((predictions[mask] > 0.5) & (labels[mask] == 1)).sum() /
            max((labels[mask] == 1).sum(), 1))
        metrics[f'group_{g}_fpr'] = (
            ((predictions[mask] > 0.5) & (labels[mask] == 0)).sum() /
            max((labels[mask] == 0).sum(), 1))
    return metrics

model = FairnessConstrainedModel(input_dim=100, lambda_fair=0.1)
x = torch.randn(500, 100)
y = torch.randint(0, 2, (500,)).float()
groups = torch.randint(0, 2, (500,))
pred = model(x)
print(f'Predictions shape: {pred.shape}')
metrics = compute_fairness_metrics(pred.detach().numpy(), y.numpy(), groups.numpy())
for k, v in list(metrics.items())[:4]:
    print(f'  {k}: {v:.4f}')

Research Insight: Healthcare AI systems often exhibit worse performance for underrepresented groups, exacerbating existing health disparities. The root cause is typically historical bias in training data. Mitigation strategies include reweighting training samples, adversarial debiasing, and post-processing calibration, but each introduces trade-offs between fairness and overall accuracy.

Need Expert Healthcare AI Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement