Fairlearn으로 다루는 알고리즘 편향과 Demographic Parity

Fairlearn과 Demographic Parity를 중심으로 알고리즘 편향을 측정·완화하고 책임 AI 운영 체계를 설계하는 방법을 정리한다.

2026-08-14 · 최초 발행 2025-10-14

데이터 기반 의사결정이 늘수록 모델의 정확도만으로 승인 여부를 판단하기 어렵다. 특정 집단에 불리한 결과가 반복되는지 확인하고, 이를 완화한 근거와 운영 책임을 남겨야 한다. Fairlearn, Demographic Parity, 책임 AI는 이 과정을 연결하는 실무적 기준점이 된다.

편향을 측정 가능한 운영 문제로 다루기

알고리즘 편향은 데이터, 모델, 운영 환경에서 특정 집단에 불리한 결과가 체계적으로 나타나는 현상이다. 표본 불균형과 라벨 편향, 설계 가정의 누락, 운영 환경 변화가 원인이 될 수 있다.

Demographic Parity(DP)는 보호집단 속성 A의 값과 무관하게 예측 양성 비율 P(ŷ=1|A=a)가 같아야 한다는 공정성 기준이다. 실무에서는 Parity Difference와 Parity Ratio를 측정하고, 정해 둔 임계치를 기준으로 판단한다.

책임 AI는 공정성만을 뜻하지 않는다. 투명성, 안전성, 프라이버시, 설명가능성, 거버넌스를 포함하며, 규제 준수와 이해관계자 책임 분배까지 포괄하는 라이프사이클 운영 원칙이다.

데이터부터 배포 이후까지 연결하는 관리 체계

민감정보는 식별·분리·암호화하고 가명화를 적용한다. 라벨 생성 과정의 편향을 점검하고, 샘플링과 가중치 설계로 대표성을 확보하는 일도 함께 필요하다.

DP만으로 판단하지 않고 Equalized Odds, Predictive Parity 등을 보조 메트릭으로 병행할 수 있다. 사업 리스크를 기준으로 임계치를 정하고, 허용 가능한 정확도 손실 예산도 함께 설정한다.

완화 방식은 사전처리의 리웨이팅·리샘플링, 학습단계 제약인 Exponentiated Gradient, 사후처리인 Threshold Optimizer로 나눌 수 있다. 어느 방법이 적합한지는 데이터 조건, 모델 구조, 운영 제약과 트레이드오프에 따라 달라진다.

Fairlearn은 측정과 완화 과정을 일관되게 다루는 데 사용할 수 있다. MLflow와 Model Card로 실험과 판단 근거를 기록하고, 버전 관리와 파이프라인 자동화로 변경 이력 및 재현성을 확보한다. 배포 뒤에는 드리프트·성능·공정성을 동시에 관찰하며, 경보 기준과 롤백 계획, 재학습 및 임계치 재보정 절차를 미리 정한다.

공정성 검증이 승인과 재학습으로 이어지는 흐름

아니오아니오아니오입력: 데이터 수집/정제- 특성 X- 라벨 y- 민감속성 A(접근통제)측정: 공정성 평가- DP 차이/비율 계산- 기준선 산정DP 차이 임계치?모델 승인- 리스크 문서화- 모니터링 구성완화: Fairlearn 적용- Pre/IN/Post 처리 선택- 하이퍼파라미터 탐색검증: 성능/공정성 동시 검증- 교차검증- 민감속성별 성능정렬 조건 충족?(정확도 손실 예산AND DP 차이 임계치)배포 모니터링- 실시간 메트릭 수집- 경보/롤백 규칙운영 이슈?에러 핸들링- 데이터 품질 점검- 임계치 재설정- 재학습지속 운영

도메인별로 달라지는 공정성 판단

신용평가 모델

성별과 연령 그룹 같은 민감속성은 법적·윤리적 검토를 거친 뒤 최소 권한으로 접근 통제한다. 기준 모델을 학습한 다음 DP 차이를 측정하고, Exponentiated Gradient 제약 학습으로 정확도 손실 예산 2~3pp 안의 최적점을 탐색한다.

승인된 모델은 모니터링 대시보드와 연결한다. DP 차이가 0.1을 초과하면 자동 경보와 부분 롤백이 이어지도록 운영한다.

인재 추천과 채용 스크리닝

성별·학교 배경처럼 간접적인 프록시가 되는 변수는 제거하거나 디바이어싱 임베딩을 적용한다. 사전 리웨이팅으로 대표성을 보정하고, 학습 단계의 공정성 제약과 사후 임계치 보정으로 오퍼율 균형을 맞춘다.

지역 고용법 준수 여부를 확인하고, 설명가능성 보고서와 거부사유 템플릿을 준비해야 한다.

헬스케어 트리아지

헬스케어에서는 DP와 False Negative Rate를 함께 보며 위험 기반의 다중 메트릭을 운영한다. 안전 한계를 설정하고 특정 그룹의 과소치료 위험을 줄이는 과정에 임상 검토 라운드를 포함한다.

기대할 수 있는 변화와 운영상 대가

DP 차이를 0.20에서 0.05로 축소하면서 정확도 손실을 1.5~3.0pp 범위로 유지한 사례가 다수 보고되어 있다. 그룹별 오퍼율 변동성은 30% 이상 줄일 수 있다.

문서화를 자동화하면 내부감사와 규제감사 대응 시간을 30~50% 절감할 수 있다. 차별 리스크와 브랜드 리스크를 낮추고, 이해관계자의 신뢰를 높이는 효과도 기대할 수 있다.

재현성과 추적성이 강화되면 배포·모니터링·재학습이 이어지는 MLOps 체계를 일관되게 운영할 수 있다. 공정성 임계치와 정확도 예산을 정량적 거버넌스 대상으로 다루게 되는 점도 중요하다.

Fairlearn으로 측정하고 완화하기

합성 데이터로 바이너리 분류 실험을 구성한다. Demographic Parity의 차이와 비율을 측정한 뒤 Exponentiated Gradient로 학습 단계 제약을 적용한다. 민감속성은 교육 목적의 파생 변수이며, 실제 운영에서는 합법성과 윤리성을 검토해야 한다.

전제 조건은 Python 3.9+ (최신 정보 확인 필요), scikit-learn 1.3+, fairlearn 0.10+이며, 로컬 또는 노트북 환경에서 시드를 고정해 재현성을 확보한다.

# python>=3.9, scikit-learn>=1.3, fairlearn>=0.10
import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from fairlearn.metrics import (
    MetricFrame, selection_rate,
    demographic_parity_difference, demographic_parity_ratio
)
from fairlearn.reductions import ExponentiatedGradient, DemographicParity

# 1) 데이터 생성
X, y = make_classification(
    n_samples=8000, n_features=10, n_informative=5, n_redundant=2,
    class_sep=1.0, weights=[0.6, 0.4], random_state=42
)
# 민감속성 A: 특성의 부호 기반 그룹 분할(데모용)
A = (X[:, 0] > 0).astype(int)

X_tr, X_te, y_tr, y_te, A_tr, A_te = train_test_split(
    X, y, A, test_size=0.3, stratify=y, random_state=42
)

# 2) 기준선 모델
base = LogisticRegression(max_iter=1000, n_jobs=-1, random_state=42)
base.fit(X_tr, y_tr)
pred_base = base.predict(X_te)

# 3) 공정성 측정
mf_base = MetricFrame(
    metrics={"accuracy": accuracy_score, "sel_rate": selection_rate},
    y_true=y_te, y_pred=pred_base, sensitive_features=A_te
)
dp_diff_base = demographic_parity_difference(y_te, pred_base, sensitive_features=A_te)
dp_ratio_base = demographic_parity_ratio(y_te, pred_base, sensitive_features=A_te)

print("Baseline overall accuracy:", accuracy_score(y_te, pred_base))
print("Baseline group metrics:\n", mf_base.by_group)
print("Baseline DP difference:", dp_diff_base)
print("Baseline DP ratio:", dp_ratio_base)

# 4) 학습단계 완화: Exponentiated Gradient + DemographicParity 제약
constraint = DemographicParity()
mitigator = ExponentiatedGradient(
    estimator=LogisticRegression(max_iter=1000, n_jobs=-1, random_state=42),
    constraints=constraint, eps=0.02,  # 공정성 허용오차(작을수록 엄격)
    random_state=42
)
mitigator.fit(X_tr, y_tr, sensitive_features=A_tr)
pred_fair = mitigator.predict(X_te)

# 5) 사후 평가
mf_fair = MetricFrame(
    metrics={"accuracy": accuracy_score, "sel_rate": selection_rate},
    y_true=y_te, y_pred=pred_fair, sensitive_features=A_te
)
dp_diff_fair = demographic_parity_difference(y_te, pred_fair, sensitive_features=A_te)
dp_ratio_fair = demographic_parity_ratio(y_te, pred_fair, sensitive_features=A_te)

print("Fair model overall accuracy:", accuracy_score(y_te, pred_fair))
print("Fair model group metrics:\n", mf_fair.by_group)
print("Fair model DP difference:", dp_diff_fair)
print("Fair model DP ratio:", dp_ratio_fair)

# 6) 간단한 합격/불합격 판단
# 조직 정책 예: DP 차이 ≤ 0.05, 정확도 손실 ≤ 0.02
acc_loss = accuracy_score(y_te, pred_base) - accuracy_score(y_te, pred_fair)
print("Accuracy loss:", acc_loss)

eps는 공정성과 정확도 사이의 트레이드오프를 조정하는 레버이며, Bayesian Optimization으로 탐색할 수 있다. 민감속성에는 접근 통제를 적용하고 로그는 비식별화한다. 배포 전에는 그룹별 에러바를 부트스트랩으로 산출해 불확실성을 검정한다.

완화 방식이 바꾸는 성능과 운영 조건

전략 성능(정확도) 확장성(대규모 데이터) 일관성(재현성) 안정성(분산/요동) 운영 편의(통합·설명)
사전처리(리웨이팅/리샘플링) 손실 낮음~중간 높음 높음 중간 높음
학습단계 제약(Exponentiated Gradient) 중간 중간 높음 중간 중간
사후처리(Threshold Optimizer) 낮음~중간 매우 높음 높음 높음(데이터 안정 시) 매우 높음

사전처리는 모델을 바꾸지 않고 적용할 수 있지만 피처 중요도가 왜곡될 가능성이 있다. 학습단계 제약은 가장 체계적인 방식이지만 탐색 비용이 늘어난다. 사후처리는 배포를 단순하게 만들지만 모형의 확률교정 품질에 민감하다.

책임 AI 운영에서 남겨야 할 통제 지점

민감정보는 최소 접근 원칙, 키 분리 암호화, 감사 로그 의무화로 관리한다. 프록시 변수를 검출하고 제거하는 절차도 병행하며, 규제와 내부정책에서 허용한 경우에만 사용한다.

모델 카드, 데이터 시트, 공정성 관련 의사결정 기록을 유지하고, 리스크 오너·승인권자·운영담당자의 RACI를 명확히 한다. 고용·신용·헬스케어는 도메인별 규제가 다르므로 관할권의 최신 가이드라인을 확인해야 하며, 자동화된 의사결정에 대한 설명과 이의제기 권리에 대응하는 프로세스가 필요하다.

공정성은 일회성 평가가 아니라 측정·완화·검증·모니터링을 반복하는 시스템이다. Demographic Parity는 해석과 정책 정렬에 유용하지만 보조 메트릭과 병행해야 한다. 정확도 손실 허용 예산과 공정성 임계치를 명시적으로 합의하면 Fairlearn 기반의 책임 AI 운영을 MLOps 과정에 연결할 수 있다.

알고리즘 편향Fairlearn공정성책임 AI데이터 거버넌스