04 · Ocena · 5 min czytania · Interaktywne · aktualizacja
Czym są wartości SHAP i jak wyjaśniają pojedynczą predykcję modelu?
W skrócie
Wartości SHAP rozkładają przewidywanie modelu dla jednego przykładu na wkłady cech, które sumują się do różnicy między tym przewidywaniem a średnią.
Co to jest
Wartości SHAP (SHapley Additive exPlanations) to metoda wyjaśniania pojedynczych przewidywań, która przypisuje każdej cesze liczbę φ — jej wkład w przesunięcie przewidywania od wartości bazowej (średniego przewidywania modelu) do przewidywania dla danego przykładu. Wkłady sumują się dokładnie: f(x) = E[f(X)] + φ₁ + φ₂ + … + φₘ. Metodę spopularyzowali Lundberg i Lee w 2017 roku, opierając ją na wartości Shapleya z teorii gier kooperacyjnych (Shapley, 1953).
Intuicja: cechy to gracze, którzy wspólnie „wypracowali” przewidywanie. Pytamy, jak sprawiedliwie podzielić wygraną. Problem w tym, że wkład gracza zależy od tego, kto już jest w drużynie — informacja „pasażer trzeciej klasy” znaczy co innego, gdy wiemy już, że to mężczyzna. Shapley rozwiązał to, uśredniając wkład gracza po wszystkich możliwych kolejnościach dołączania do drużyny.
Mechanizm — dlaczego tak działa
Potrzebujemy funkcji v(S): jakie przewidywanie daje model, gdy znamy tylko cechy ze zbioru S. Model wymaga jednak wszystkich cech, więc brakujące uzupełnia się wartościami z danych tła i uśrednia. W wersji „interwencyjnej” v(S) = średnia po danych tła z f(x_S, x_C⁽ⁱ⁾): cechy z S bierzemy od wyjaśnianego przykładu, resztę od kolejnych przykładów tła. v(∅) to średnie przewidywanie, v(wszystkie cechy) to f(x).
Wartość Shapleya cechy j to średnia ważona jej wkładów krańcowych v(S ∪ {j}) − v(S) po wszystkich podzbiorach S pozostałych cech, z wagą |S|! · (m − |S| − 1)! / m!. Waga odpowiada odsetkowi kolejności, w których cecha j dołącza dokładnie po zbiorze S. Jest to jedyny sposób podziału spełniający cztery aksjomaty: wkłady sumują się do f(x) − v(∅) (efektywność), cechy o identycznym wpływie dostają to samo (symetria), cecha bez wpływu dostaje zero, a wyjaśnienie sumy modeli to suma wyjaśnień (addytywność).
Dokładne obliczenie wymaga 2ᵐ podzbiorów, co przy dziesiątkach cech jest niewykonalne. Dlatego stosuje się przybliżenia: KernelSHAP (losowanie podzbiorów i ważona regresja), TreeSHAP (dokładny i szybki algorytm dla drzew i ich zespołów) oraz metody gradientowe dla sieci. Dla modelu liniowego z interwencyjną funkcją v jest wzór zamknięty: φⱼ = βⱼ · (xⱼ − średnia xⱼ).
Zastrzeżenia. Wartości SHAP zależą od wyboru danych tła i od skali wyjścia — te same cechy dadzą inne liczby dla prawdopodobieństwa i dla log-szans. Przy skorelowanych cechach wersja interwencyjna ocenia model na nierealistycznych kombinacjach (jak PDP), a wersja warunkowa może przypisać wkład cechom, których model w ogóle nie używa. SHAP wyjaśnia model, nie świat: duża wartość φ nie oznacza związku przyczynowego. Wreszcie średnie |φ| po zbiorze dają globalną ważność cech, ale to inna wielkość niż ważność permutacyjna — mierzy wpływ na przewidywania, nie na jakość.
Na przykładzie
Biblioteka shap nie była zainstalowana, więc policzyłem wartości Shapleya dokładnie, wszystkimi 2³ = 8 podzbiorami, dla małego modelu: regresji logistycznej na trzech cechach Titanica — płci, klasie i wieku (braki uzupełnione medianą). Trening na 668 pasażerach z warstwowego podziału 75/25 (random_state=0), te same 668 osób jako dane tła; trafność testowa 77,1%. Wyjaśniam przewidywane prawdopodobieństwo przeżycia 22-letniego mężczyzny z trzeciej klasy. Średnie przewidywanie to 0,383, a dla niego model daje 0,107. Rozkład różnicy −0,276: płeć −0,171, klasa −0,137, wiek +0,032 (młody wiek nieco pomaga). Suma wkładów zgadza się z różnicą dokładnie, jak wymaga aksjomat efektywności.
Skąd −0,171 dla płci? Wkład krańcowy „mężczyzna” wynosi −0,172, gdy jest pierwszą znaną cechą (0,383 → 0,211), −0,161 po klasie, −0,168 po wieku i −0,177 po obu; średnia z wagami 1/3, 1/6, 1/6, 1/3 daje −0,171. Wkłady różnią się, bo model jest nieliniowy w skali prawdopodobieństwa. Dlatego ta sama płeć u 4-letniego chłopca z pierwszej klasy dostaje −0,138, a nie −0,171. W skali log-szans oba wkłady wynoszą identycznie −0,90 i zgadzają się ze wzorem β · (x − średnia). Dla 38-letniej kobiety z pierwszej klasy (przewidywanie 0,904) wkłady to: płeć +0,303, klasa +0,258, wiek −0,040.
Dane: Titanic
W praktyce
- Biblioteka
shap:explainer = shap.Explainer(model, X_background), potemsv = explainer(X); wykresyshap.plots.waterfall(sv[0])dla jednego przykładu,shap.plots.beeswarm(sv)dla całego zbioru. - Dla lasów i boostingu (XGBoost, LightGBM, scikit-learn) używany jest szybki i dokładny
TreeExplainer; dla dowolnego modelu wolniejszyKernelExplainerz niewielką próbką tła (np. 100 przykładów). - Zwróć uwagę na skalę: modele boostingowe domyślnie wyjaśniane są w log-szansach, nie w prawdopodobieństwie.
- Globalna ważność: średnia z |φ| dla każdej cechy; zależność efektu od wartości cechy:
shap.plots.scatter(sv[:, 'age']). - Przy skorelowanych cechach interpretuj wyniki dla grup cech, nie pojedynczych kolumn.
- Typowy błąd: traktowanie wartości SHAP jako dowodu, że cecha jest przyczyną wyniku, albo porównywanie φ policzonych z różnymi danymi tła.
Najczęstsze pytania
- Czym SHAP różni się od ważności permutacyjnej?
- Ważność permutacyjna mówi, o ile spada jakość modelu bez informacji z cechy, i działa globalnie. SHAP mówi, o ile cecha przesunęła konkretne przewidywanie i w którą stronę, a średnie z |φ| dają obraz globalny. Pierwsza dotyczy jakości, druga — samych przewidywań.
- Dlaczego wartości SHAP sumują się do przewidywania?
- To aksjomat efektywności wartości Shapleya: wkłady wszystkich graczy sumują się do wartości całej koalicji minus wartości pustej, czyli do f(x) − E[f(X)]. Dzięki temu wyjaśnienie jest pełnym rozliczeniem przewidywania, bez reszty.
- Czy wartości SHAP są „prawdziwym” wyjaśnieniem modelu?
- Są jednym, dobrze uzasadnionym aksjomatycznie sposobem podziału przewidywania. Inny wybór danych tła, skali wyjścia lub wersji funkcji v(S) da inne liczby, a przy skorelowanych cechach różnice bywają duże. Traktuj je jako opis zachowania modelu, a nie jako jedyną prawdę.
Źródła
- Shapley L. S. (1953). A Value for n-Person Games. W: Kuhn H. W., Tucker A. W. (red.), Contributions to the Theory of Games II, Annals of Mathematics Studies 28, Princeton University Press.
- Lundberg S. M., Lee S.-I. (2017). A Unified Approach to Interpreting Model Predictions. Advances in Neural Information Processing Systems 30 (NIPS 2017).
- Lundberg S. M. i in. (2020). From local explanations to global understanding with explainable AI for trees. Nature Machine Intelligence, 2.
- Molnar C. „Interpretable Machine Learning”, rozdz. Shapley Values i SHAP — https://christophm.github.io/interpretable-ml-book/