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_rateTworzenie 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.59Wyniki 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 groupsWizualizacja 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
- Wykrywanie uprzedzeń w modelach ML
- Wartości SHAP do objaśniania modeli
- LIME: lokalne interpretowalne wyjaśnienia
- Etyka AI i ramy zarządzania