0Pricing
Learn AI with Python · Lekcja

Wartości SHAP do objaśniania modeli

shap.Explainer, TreeExplainer, wykresy sił, wykresy beeswarm, ranking ważności cech.

Wartości SHAP do objaśniania modeli to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 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.

Dlaczego wyjaśnialność ma znaczenie

Złożone modele są dokładne, ale nieprzejrzyste. Wyjaśnialność odpowiada na pytanie „dlaczego model utworzył tę predykcję?”, co ma kluczowe znaczenie dla zaufania, debugowania i zgodności z przepisami. SHAP jest jedną z najczęściej stosowanych metod wyjaśniania.

Co mierzy SHAP

SHAP (SHapley Additive exPlanations) przypisuje każdej cesze wkład w pojedynczą predykcję. Wartości te opierają się na wartościach Shapleya z teorii gier kooperacyjnych: każda cecha jest „graczem”, a jej wartość SHAP stanowi sprawiedliwą część predykcji względem wartości bazowej.

Addytywność

Wartości SHAP są addytywne: wartość bazowa (średni wynik modelu) plus suma wszystkich wartości SHAP cech równa się rzeczywistej predykcji. Dzięki temu każde wyjaśnienie stanowi kompletne i możliwe do skontrolowania rozliczenie wyniku.

# prediction = base_value + sum(shap_values_for_each_feature)

TreeExplainer

W przypadku modeli drzewiastych (XGBoost, LightGBM, lasy losowe) shap.TreeExplainer szybko oblicza dokładne wartości SHAP, wykorzystując strukturę drzew.

import shap
import xgboost

model = xgboost.XGBClassifier().fit(X_train, y_train)
explainer = shap.TreeExplainer(model)

Obliczanie shap_values

explainer.shap_values(X_test) zwraca macierz: po jednej wartości SHAP dla każdej cechy w każdym wierszu. Są to surowe wartości wkładu, które zostaną zwizualizowane.

shap_values = explainer.shap_values(X_test)
print(shap_values.shape)  # (n_samples, n_features)

Wykres roju summary_plot

shap.summary_plot tworzy wykres rojowy: każda kropka reprezentuje jedną próbkę dla jednej cechy. Położenie pokazuje wartość SHAP (kierunek i wielkość wpływu), a kolor — wartość cechy. Cechy są uszeregowane według ogólnego znaczenia.

shap.summary_plot(shap_values, X_test)

Odczytywanie wykresu roju

Aby odczytać wykres rojowy:

  • Najważniejsze globalnie cechy znajdują się na górze
  • Kropki daleko po prawej zwiększają predykcję, a kropki daleko po lewej ją zmniejszają
  • Kolor pokazuje kierunek wpływu, np. czerwone kropki po prawej oznaczają, że wysokie wartości cechy zwiększają predykcję

Wyjaśnianie pojedynczej predykcji

SHAP szczególnie dobrze sprawdza się na poziomie pojedynczych przypadków. Aby wyjaśnić jeden wiersz, potrzebujesz jego wartości SHAP oraz bazowej wartości modelu.

idx = 0
base = explainer.expected_value
row_shap = shap_values[idx]

force_plot

shap.force_plot przedstawia pojedynczą predykcję jako siły przesuwające wynik od wartości bazowej: czerwone cechy zwiększają wynik, a niebieskie go zmniejszają. Ich łączny efekt prowadzi do końcowej predykcji.

shap.force_plot(
    explainer.expected_value,
    shap_values[0],
    X_test.iloc[0],
)

waterfall_plot

shap.waterfall_plot to najbardziej czytelny widok pojedynczej predykcji. Zaczyna od wartości bazowej i krok po kroku dodaje wkład każdej cechy, aż do osiągnięcia końcowego wyniku, porządkując cechy według wielkości wkładu.

shap.waterfall_plot(
    shap.Explanation(
        values=shap_values[0],
        base_values=explainer.expected_value,
        data=X_test.iloc[0],
    )
)

Globalnie a lokalnie

SHAP służy dwóm celom:

  • Globalnie: summary_plot pokazuje, które cechy mają największy wpływ na model jako całość
  • Lokalnie: force_plot i waterfall_plot wyjaśniają jedną konkretną predykcję

Oba zastosowania korzystają z tych samych wartości SHAP, zapewniając spójny obraz na różnych poziomach szczegółowości.

Szybki test

Sprawdź swoją wiedzę na temat SHAP.

Podsumowanie

Nauczyłeś się wyjaśniać działanie modeli za pomocą SHAP:

  • shap.TreeExplainer(model) oblicza dokładne wartości dla modeli drzewiastych
  • explainer.shap_values(X_test) zwraca wkład poszczególnych cech
  • Wykres rojowy summary_plot pokazuje globalne znaczenie cech
  • force_plot i waterfall_plot wyjaśniają pojedynczą predykcję
  • Wartości SHAP są addytywne: wartość bazowa + wkłady = predykcja

Często zadawane pytania

Czy lekcja „Wartości SHAP do objaśniania modeli” jest bezpłatna?

Tak — pełny tekst „Wartości SHAP do objaśniania modeli” 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 „Wartości SHAP do objaśniania modeli”?

shap.Explainer, TreeExplainer, wykresy sił, wykresy beeswarm, ranking ważności cech. Ć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 2 z 4.

Ile czasu zajmuje lekcja „Wartości SHAP do objaśniania modeli”?

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