0Pricing
Learn AI with Python · Lekcja

Wykrywanie uprzedzeń w modelach ML

Atrybuty chronione, disparate impact, metryki fairlearn, wyrównane szanse, parytet demograficzny.

Wykrywanie uprzedzeń w modelach ML to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Czym jest stronniczość algorytmiczna

Model jest stronniczy, gdy jego przewidywania systematycznie stawiają w gorszej sytuacji grupę zdefiniowaną za pomocą wrażliwej cechy (płci, rasy lub wieku). Stronniczość często wynika z niezrównoważonych danych treningowych i może powodować rzeczywiste szkody w decyzjach dotyczących zatrudnienia, udzielania kredytów lub opieki zdrowotnej.

Wrażliwe cechy

Wrażliwa cecha to atrybut, względem którego mierzymy sprawiedliwość, na przykład płeć lub pochodzenie etniczne. Metryki sprawiedliwości porównują zachowanie modelu w grupach wyznaczonych przez tę cechę, nawet jeśli nie jest ona używana jako dane wejściowe modelu.

Parytet demograficzny

Parytet demograficzny wymaga, aby wskaźnik pozytywnych predykcji był taki sam w każdej grupie. Jeśli model oceny wniosków kredytowych zaakceptuje 60% wniosków z grupy A, ale tylko 35% wniosków z grupy B, parytet demograficzny jest naruszony niezależnie od rzeczywistej zdolności kredytowej wnioskodawców.

# P(prediction = 1 | group = A) == P(prediction = 1 | group = B)

Wyrównane ilorazy szans

Wyrównane ilorazy szans są bardziej rygorystyczne: wymagają, aby wskaźniki prawdziwie pozytywnych i fałszywie pozytywnych predykcji były takie same w poszczególnych grupach. Uwzględniają rzeczywistą etykietę, dzięki czemu dopuszczają różne wskaźniki wyboru, o ile model jest równie dokładny dla każdej grupy.

# TPR and FPR equal across groups
# P(pred=1 | y=1, A) == P(pred=1 | y=1, B)
# P(pred=1 | y=0, A) == P(pred=1 | y=0, B)

Parytet a wyrównane ilorazy szans

Te metryki mogą być sprzeczne:

  • Parytet demograficzny pomija rzeczywistą etykietę, więc może wymuszać równe wskaźniki nawet wtedy, gdy częstości bazowe rzeczywiście się różnią
  • Wyrównane ilorazy szans uwzględniają rzeczywistą etykietę, ale dopuszczają różne wskaźniki wyboru

Żadna pojedyncza metryka nie jest uniwersalnie właściwa — wybór zależy od kontekstu i przepisów prawa.

Wprowadzenie do fairlearn

fairlearn to biblioteka języka Python służąca do mierzenia i ograniczania niesprawiedliwości. Jej podstawowym narzędziem pomiarowym jest MetricFrame, które oblicza dowolną metrykę z podziałem na grupy wrażliwe.

import pandas as pd
from fairlearn.metrics import MetricFrame
from sklearn.metrics import accuracy_score, selection_rate

Tworzenie MetricFrame

Przekazuje się słownik metryk, prawdziwe etykiety, predykcje oraz cechy wrażliwe. fairlearn ocenia każdą metrykę osobno dla każdej grupy.

mf = MetricFrame(
    metrics={
        "accuracy": accuracy_score,
        "selection_rate": selection_rate,
    },
    y_true=y_test,
    y_pred=y_pred,
    sensitive_features=X_test["gender"],
)

Wyniki dla poszczególnych grup

Atrybut by_group zwraca tabelę zawierającą każdą metrykę dla każdej grupy, dzięki czemu dysproporcje od razu rzucają się w oczy.

print(mf.by_group)
#            accuracy  selection_rate
# gender
# female        0.81            0.34
# male          0.83            0.59

Wyniki ogółem i różnice

fairlearn udostępnia również widoki zagregowane: overall dla całego zbioru danych oraz funkcje pomocnicze, takie jak difference() i ratio(), które podsumowują różnicę między grupą z najlepszym a grupą z najgorszym wynikiem.

print(mf.overall)
print(mf.difference(method="between_groups"))
# selection_rate    0.25  -> 25 point gap between groups

Wizualizacja dysproporcji

Wykres słupkowy oparty na danych by_group zamienia liczby w intuicyjny obraz. Duża różnica między słupkami dla tej samej metryki to wyraźny sygnał alarmowy, że model traktuje grupy odmiennie.

mf.by_group.plot.bar(
    subplots=True,
    layout=[1, 2],
    figsize=(10, 4),
    title="Metrics by group",
)

Od wykrywania do ograniczania

Po zmierzeniu skali obciążenia modelu fairlearn udostępnia algorytmy ograniczania niesprawiedliwości, takie jak ExponentiatedGradient oraz przetwarzanie po treningu z użyciem ThresholdOptimizer. Ponownie trenują one model lub dostosowują progi, aby spełnić warunek sprawiedliwości. Wykrywanie zawsze jest pierwsze: nie da się naprawić tego, czego się nie zmierzyło.

Szybki test

Sprawdź swoją wiedzę na temat sprawiedliwości modeli.

Podsumowanie

Nauczyłeś się wykrywać obciążenia modelu:

  • Parytet demograficzny wyrównuje wskaźniki pozytywnych predykcji w poszczególnych grupach
  • Wyrównane ilorazy szans wyrównują TPR i FPR, uwzględniając etykietę
  • fairlearn MetricFrame oblicza słownik metryk dla każdej grupy określonej przez sensitive_features
  • Wizualizuj dane by_group, aby wykrywać dysproporcje, a następnie stosuj ich ograniczanie

Często zadawane pytania

Czy lekcja „Wykrywanie uprzedzeń w modelach ML” jest bezpłatna?

Tak — pełny tekst „Wykrywanie uprzedzeń w modelach ML” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Wykrywanie uprzedzeń w modelach ML”?

Atrybuty chronione, disparate impact, metryki fairlearn, wyrównane szanse, parytet demograficzny. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Wykrywanie uprzedzeń w modelach ML”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wykrywanie uprzedzeń w modelach ML
  2. Wartości SHAP do objaśniania modeli
  3. LIME: lokalne interpretowalne wyjaśnienia
  4. Etyka AI i ramy zarządzania
← Powrót do Learn AI with Python