Hoppa till innehållet
AI-grafen
D· AI-utvecklareetik-juridik-samhalle· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Bias och rättvisa i modeller

Kunna mäta olika utfall mellan grupper och förklara var skevheten kommer ifrån.

Förkunskaper

Intuition

En modell med 95 % träffsäkerhet totalt kan ha 98 % för en grupp och 74 % för en annan. Genomsnittet döljer det.

Var skevheten kommer ifrån:

KällaExempel
Historisk datatidigare beslut var skeva → modellen lär sig dem
Urvalen grupp är underrepresenterad i datan
Etiketter«bra medarbetare» definierades av tidigare chefer
Featurespostnummer som proxy för etnicitet
Mätningen sensor fungerar sämre på vissa hudtoner

Första steget är alltid samma: dela upp alla mått per grupp och titta. Det du inte mäter kan du inte se.

Formellt

Tre vanliga rättvisemått:

  • Demografisk paritet: P(Y^=1∣G=a)=P(Y^=1∣G=b)P(\hat Y = 1 \mid G=a) = P(\hat Y=1\mid G=b) — lika andel positiva beslut i varje grupp.
  • Lika möjlighet (equal opportunity): P(Y^=1∣Y=1,G=a)=P(Y^=1∣Y=1,G=b)P(\hat Y=1\mid Y=1, G=a) = P(\hat Y=1\mid Y=1, G=b) — lika recall bland dem som faktiskt uppfyller kriteriet.
  • Kalibrering: bland dem som får poäng ss ska andelen med Y=1Y=1 vara ss i varje grupp.

Omöjlighetsresultatet (Kleinberg m.fl. 2016; Chouldechova 2017): om basfrekvenserna skiljer sig mellan grupperna kan kalibrering och lika felkvoter inte uppfyllas samtidigt, utom i triviala fall. Det finns alltså inget mått som är «det rättvisa» — valet är normativt och måste motiveras i sitt sammanhang.

Därför är den praktiska minimirutinen: mät per grupp, redovisa vilket mått ni prioriterar och varför, och låt en människa besluta i gränsfall.

Kod

import numpy as np

def per_grupp(y, pred, grupp):
    for g in np.unique(grupp):
        m = grupp == g
        tp = ((pred[m] == 1) & (y[m] == 1)).sum(); fp = ((pred[m] == 1) & (y[m] == 0)).sum()
        fn = ((pred[m] == 0) & (y[m] == 1)).sum()
        print(f"{g}: n={m.sum():4d}  andel positiva={pred[m].mean():.2f}  "
              f"recall={tp / max(tp + fn, 1):.2f}  precision={tp / max(tp + fp, 1):.2f}")

per_grupp(y_test, modell.predict(X_test), grupp_test)
# A: n= 800  andel positiva=0.42  recall=0.91  precision=0.88
# B: n= 120  andel positiva=0.19  recall=0.63  precision=0.71   ← stor skillnad

Behärskning innebär

  • Mäter utfall per grupp
  • Förklarar var skevheten uppstår
  • Vet att rättvisemått kan vara oförenliga

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser