04 · Ocena · 4 min czytania · aktualizacja
Co pokazuje wykres zależności częściowej (PDP) i czym różnią się od niego krzywe ICE?
W skrócie
Wykres zależności częściowej pokazuje, jak średnio zmienia się przewidywanie modelu wraz z jedną cechą. Krzywe ICE pokazują to osobno dla każdego przykładu.
Co to jest
Wykres zależności częściowej (partial dependence plot, PDP) pokazuje, jak średnie przewidywanie modelu zmienia się, gdy zmieniamy wartość jednej (czasem dwóch) cech, a pozostałe zostawiamy takie, jakie są w danych. Krzywe ICE (individual conditional expectation) pokazują to samo dla każdego przykładu z osobna: jedna linia na jedną obserwację. PDP jest dokładnie średnią krzywych ICE.
Ważność cechy mówi, czy model z niej korzysta. PDP i ICE mówią, jak: czy przewidywanie rośnie, maleje, ma próg, nasyca się — i czy ten kształt jest wspólny dla wszystkich przykładów, czy różny w różnych grupach.
Mechanizm — dlaczego tak działa
Konstrukcja jest eksperymentem myślowym przeprowadzonym na modelu. Wybieramy siatkę wartości cechy, np. wiek 2, 5, 10… 70 lat. Dla każdej wartości bierzemy cały zbiór danych, wpisujemy tę wartość wszystkim przykładom w kolumnie wieku, nie ruszając innych cech, i liczymy przewidywania. Przewidywania jednego przykładu dla kolejnych wartości siatki tworzą jego krzywą ICE. Średnia z nich w każdym punkcie siatki to PDP. Formalnie: PD(x_S) = średnia po danych z f(x_S, x_C⁽ⁱ⁾), gdzie x_S to badana cecha, a x_C — pozostałe.
Dlaczego potrzebne są oba wykresy? Średnia potrafi ukryć interakcje. Jeśli cecha podnosi przewidywanie w jednej grupie, a obniża w drugiej, PDP może wyjść płaska i sugerować brak wpływu. Krzywe ICE od razu pokażą dwa rozbieżne pęki linii. Goldstein i współautorzy zaproponowali też wersję wyśrodkowaną (c-ICE), w której wszystkie krzywe zaczynają się w zerze — łatwiej wtedy porównać same zmiany, a nie poziomy.
Główne zastrzeżenie: wpisywanie jednej wartości wszystkim przykładom ignoruje korelacje między cechami. Gdy cechy są zależne, powstają kombinacje, które w rzeczywistości nie występują — pięcioletnie dziecko podróżujące samotnie albo pasażer pierwszej klasy z najniższą opłatą. Model musi wtedy ekstrapolować, a wykres pokazuje jego zachowanie w obszarze, w którym nie widział danych. Alternatywą odporną na ten problem są wykresy ALE (accumulated local effects), które uśredniają tylko lokalne zmiany wśród podobnych przykładów.
Drugie zastrzeżenie: PDP opisuje model, nie przyczynowość. Wykres „przewidywanie spada z wiekiem” mówi, jak model reaguje na zmianę wieku przy innych cechach ustalonych, a nie, co by się stało z prawdziwą osobą, gdyby była młodsza. Interpretacja przyczynowa wymaga dodatkowych założeń o strukturze danych. Warto też zaznaczać na osi rozkład badanej cechy (np. kreskami u dołu) — fragmenty krzywej nad obszarem bez danych są najmniej wiarygodne.
Na przykładzie
Na zbiorze Titanic (podział warstwowy 75/25, random_state=0; cechy: klasa, płeć, wiek, rodzeństwo/małżonkowie, rodzice/dzieci, opłata) wytrenowałem HistGradientBoostingClassifier (80,7% trafności na teście) i policzyłem zależność częściową prawdopodobieństwa przeżycia od wieku na 668 pasażerach treningowych. PDP spada z 0,82 dla wieku 5 lat do 0,55 dla 10 lat, 0,38 dla 15 lat i 0,35 dla 30 lat. Średnio model mówi więc: dzieci miały dużo większe szanse.
Krzywe ICE pokazują, że ta średnia łączy dwa różne światy. Różnica między przewidywaniem dla wieku 5 i 30 lat wynosi średnio 0,66 dla mężczyzn, ale tylko 0,13 dla kobiet. Dla mężczyzn z drugiej klasy model przewiduje średnio 0,90 w wieku 5 lat i 0,15 w wieku 30 lat; dla kobiet z pierwszej klasy krzywe są niemal płaskie, między 0,92 a 0,99 w całym zakresie wieku. To interakcja wieku z płcią, której sam PDP nie ujawnia. Zastrzeżenie: wiek 177 pasażerów był nieznany i został uzupełniony medianą (28 lat), a „pięcioletni” warianty dorosłych pasażerów podróżujących bez rodziców to właśnie nierealistyczne kombinacje, o których była mowa wyżej.
Dane: Titanic
W praktyce
PartialDependenceDisplay.from_estimator(model, X, features=['age'], kind='both')rysuje PDP razem z krzywymi ICE;kind='individual'same ICE,centered=Truewersję wyśrodkowaną.- Wartości liczbowe:
partial_dependence(model, X, features=['age'], kind='both')zsklearn.inspection. - Dwie cechy naraz:
features=[('age', 'fare')]daje mapę konturową interakcji. - Przy dużych zbiorach rysuj ICE dla próbki (
subsample=200) — tysiące linii zlewają się w plamę. - Przy skorelowanych cechach rozważ wykresy ALE (np. biblioteka
alibilubPyALE) i zawsze pokazuj rozkład cechy na osi. - Typowy błąd: odczytywanie PDP jako efektu przyczynowego albo jako kształtu zależności w danych (od tego jest zwykły wykres średniego celu w przedziałach cechy).
Najczęstsze pytania
- Czym PDP różni się od zwykłego wykresu średniego celu względem cechy?
- Zwykły wykres pokazuje, jak w danych zmienia się średni cel w przedziałach cechy, razem z wpływem wszystkich cech z nią skorelowanych. PDP pokazuje, jak zmienia się przewidywanie modelu, gdy zmieniamy tylko tę cechę, a pozostałe pozostają bez zmian.
- Kiedy patrzeć na ICE zamiast PDP?
- Zawsze, gdy podejrzewasz interakcje albo gdy PDP wyszła płaska mimo wysokiej ważności cechy. Rozbieżne pęki krzywych ICE mówią, że efekt cechy zależy od innych cech i średnia go zafałszowuje.
- Czy PDP działa dla klasyfikacji wieloklasowej?
- Tak, ale osobno dla każdej klasy: wykres pokazuje przewidywane prawdopodobieństwo (lub wynik decyzyjny) wybranej klasy. W scikit-learn wskazuje się ją parametrem `target`.
Źródła
- Friedman J. H. (2001). Greedy Function Approximation: A Gradient Boosting Machine. Annals of Statistics, 29(5).
- Goldstein A., Kapelner A., Bleich J., Pitkin E. (2015). Peeking Inside the Black Box: Visualizing Statistical Learning with Plots of Individual Conditional Expectation. Journal of Computational and Graphical Statistics, 24(1).
- Apley D. W., Zhu J. (2020). Visualizing the Effects of Predictor Variables in Black Box Supervised Learning Models. Journal of the Royal Statistical Society, Series B, 82(4).
- Molnar C. „Interpretable Machine Learning”, rozdz. Partial Dependence Plot i Individual Conditional Expectation — https://christophm.github.io/interpretable-ml-book/
- Dokumentacja scikit-learn: Partial Dependence and Individual Conditional Expectation plots — https://scikit-learn.org/stable/modules/partial_dependence.html