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_plotpokazuje, które cechy mają największy wpływ na model jako całość - Lokalnie:
force_plotiwaterfall_plotwyjaś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 drzewiastychexplainer.shap_values(X_test)zwraca wkład poszczególnych cech- Wykres rojowy
summary_plotpokazuje globalne znaczenie cech force_plotiwaterfall_plotwyjaś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
- Wykrywanie uprzedzeń w modelach ML
- Wartości SHAP do objaśniania modeli
- LIME: lokalne interpretowalne wyjaśnienia
- Etyka AI i ramy zarządzania