Break Down: model explanations with interactions and DALEX in the BayArea

The breakDown package explains predictions from black-box models, such as random forest, xgboost, svm or neural networks (it works for lm and glm as well). As a result you gets decomposition of model prediction that can be attributed to particular variables.

The version 0.3 has a new function break_down. It identifies pairwise interactions of variables. So if the model is not additive, then instead of seeing effects of single variables you will see effects for interactions.
It’s easy to use this function. See an example below.
HR is an artificial dataset. The break_down function correctly identifies interaction between gender and age. Find more examples in the documentation.

Figure below shows that a single prediction was decomposed into 4 parts. One of them is related to the interaction between age and gender.

BreakDown is a part of DALEXverse – collection of tools for visualisation, exploration and explanation of complex machine learning models.

Till the end of September I am visiting UC Davis and UC Berkeley. Happy to talk about DALEX explainers, XAI and related stuff.
So, if you want to talk about interpretability of complex ML models, just let me know.

Yes, it’s part of the DALEX invasion 😉
Thanks to the H2020 project RENOIR.

Ceteris Paribus Plots – a new DALEX companion

If you like magical incantations in Data Science, please welcome the Ceteris Paribus Plots. Otherwise feel free to call them What-If Plots.

Ceteris Paribus (latin for all else unchanged) Plots explain complex Machine Learning models around a single observation. They supplement tools like breakDown, Shapley values, LIME or LIVE. In addition to feature importance/feature attribution, now we can see how the model response changes along a specific variable, keeping all other variables unchanged.

How cancer-risk-scores change with age? How credit-scores change with salary? How insurance-costs change with age?

Well, use the ceterisParibus package to generate plots like the one below.
Here we have an explanation for a random forest model that predicts apartments prices. Presented profiles are prepared for a single observation marked with dashed lines (130m2 apartment on 3rd floor). From these profiles one can read how the model response is linked with particular variables.

Instead of original values on the OX scale one can plot qunatiles. This way one can put all variables in a single plot.

And once all variables are in the same scale, one can compare two or more models.

Yes, they are model agnostic and will work for any model!
Yes, they can be interactive (see plot_interactive function or examples below)!
And yes, you can use them with other DALEX explainers!
More examples with R code.

ML models: What they can’t learn?

What I love in conferences are the people, that come after your talk and say: It would be cool to add XYZ to your package/method/theorem.

After the eRum (great conference by the way) I was lucky to hear from Tal Galili: It would be cool to use DALEX for teaching, to show how different ML models are learning relations.

Cool idea. So let’s see what can and what cannot be learned by the most popular ML models. Here we will compare random forest against linear models against SVMs.
Find the full example here. We simulate variables from uniform U[0,1] distribution and calculate y from following equation

In all figures below we compare PDP model responses against the true relation between variable x and the target variable y (pink color). All these plots are created with DALEX package.

For x1 we can check how different models deal with a quadratic relation. The linear model fails without prior feature engineering, random forest is guessing the shape but the best fit if found by SVMs.

With sinus-like oscillations the story is different. SVMs are not that flexible while random forest is much closer.

Turns out that monotonic relations are not easy for these models. The random forest is close but event here we cannot guarantee the monotonicity.

The linear model is the best one when it comes to truly linear relation. But other models are not that far.

The abs(x) is not an easy case for neither model.

Find the R codes here.

Of course the behavior of all these models depend on number of observation, noise to signal ratio, correlation among variables and interactions.
Yet is may be educational to use PDP curves to see how different models are learning relations. What they can grasp easily and what they cannot.

ML nad Wisłą

28 maja odbędzie się pierwsze Warszawsko-Krakowskie Spotkanie Naukowe dotyczące uczenia maszynowego. Wspólne seminarium grup GUM (UJ) i MI2 (UW + PW) zajmujących się Machine Learningiem. Lista pięciu planowanych referatów jest tutaj (strona będzie uzupełniana). To pierwsze spotkanie, planowane są kolejne, na zmianę w Krakowie i Warszawie. Wstęp wolny. Będzie czas na poznanie się. Zapraszamy osoby zainteresowane poważniejszymi badaniami w obszarze ML.

W marcu odbyła się Gala Konkursu Data Science Masters na najlepszą pracę magisterską z obszaru Machine Learning i Data Science. Otrzymaliśmy w konkursie 72 prace z 17 uczelni! Zwycięzcy pierwszej edycji to: Tomasz Wąs (UW), Mateusz Susik (UW), Aleksander Nosarzewski (SGH). Wyróżnienia otrzymali: Dymitr Pietrow (WUT), Agnieszka Sitko (UW), Urszula Mołdysz (PŚ). Więcej informacji o nagrodzonych pracach na tej stronie (trochę trwało jej uzupełnienie). Dziękujemy Nethone (grupa DaftCode) za ufundowanie nagród.

Z okazji 100-lecia GUS w lipcu odbędzie się II Kongres Statystyki Polskiej. Więcej informacji na tej stronie. Jeszcze przez kilka dni można zgłaszać propozycje referatów. Jest kilka bardzo ciekawych sesji, np. poświęcona statystyce polskiej, analizie danych czy danym statystycznym.

Grupa europejskich badaczy ML apeluje do UE o utworzenie ELLIS: European Lab for Learning & Intelligent Systems, badawczego instytutu uczenia maszynowego na styku akademii i biznesu. Także w naszym kraju trwają prace nad powołaniem instytutu badawczego zajmującego się analizą danych. Robocza nazwa NISAD. Osoby zainteresowane tą inicjatywą zapraszam na priv.

Ministerstwo nauki ogłosiło konkurs na drugą edycję Doktoratów Wdrożeniowych. To może być ciekawa propozycja dla świeżych absolwentów pracujących w działach badawczych firm zainteresowanych zaawansowanym ML. Do tego programu można zgłaszać się jeszcze przez miesiąc.

DALEX: how would you explain this prediction?

Last week I wrote about single variable explainers implemented in the DALEX package. They are useful to plot relation between a model output and a single variable.

But sometimes we are more focused on a single model prediction. If our model predicts possible drug response for a patient, we really need to know which factors drive the model prediction for a particular patient. For linear models it is relatively easy as the structure of the model is additive. In 2017 we have developed breakDown package for lm/glm models.

But how to explain/decompose/approximate predictions for any black box model?
There are several approaches. The (probably) most known is LIME with great examples for image and text data. There is an R port lime developed by Thomas Pedersen. In collaboration with Mateusz Staniak we developed live package, similar approach, easy to use with models created by mlr package.
The other technique that can be used here are Shapley values which use attribution theory/game theory to attribute effects of different variables for a single prediction.

Recently we have developed a yet another approach (paper under preparation, implemented in the breakDown version 0.4) that works in a model agnostic way (here you can check how to use it for caret models). You can play with it via the single_prediction() function in the DALEX package.
Such decomposition is useful for many reasons mentioned in papers listed above (deeper understanding, validation, trust, etc).
And, what is really extra about the DALEX package, you can compare contributions of different models on the same scale.

Let’s train three models (glm / gradient boosting model and random forest model) to predict quality of wine. These models are very different in structure. In the figure below, for a single wine, we compare predictions calculated by these models. For this single wine, for all models the most influential variable is the alcohol concentration as the wine has much higher concentration than average. Then pH and sulphates take second and third positions in all three models. Looks like models have some agreement even if they structure is very different.


If you want to learn more about DALEX package and decompositions for model predictions please consult following cheatsheet or the DALEX website.

If you want to learn more about explainers in general, join our DALEX Invasion!
Find our DALEX workshops at SER (Warsaw, April 2018), ERUM (Budapest, May 2018), WhyR (Wroclaw, June 2018) or UseR (Brisbane, July 2018).


Explain! Explain! Explain!

Predictive modeling is fun. With random forest, xgboost, lightgbm and other elastic models…
Problems start when someone is asking how predictions are calculated.
Well, some black boxes are hard to explain.
And this is why we need good explainers.

In the June Aleksandra Paluszynska defended her master thesis Structure mining and knowledge extraction from random forest. Find the corresponding package randomForestExplainer and its vignette here.

In the September David Foster published a very interesting package xgboostExplainer. Try it to extract useful information from a xgboost model and create waterfall plots that explain variable contributions in predictions. Read more about this package here.

In the October Albert Cheng published lightgbmExplainer. Package with waterfall plots implemented for lightGBM models. Its usage is very similar to the xgboostExplainer package.

Waterfall plots that explain single predictions are great. They are useful also for linear models. So if you are working with lm() or glm() try the brand new breakDown package (hmm, maybe it should be named glmExplainer). It creates graphical explanations for predictions and has such a nice cheatsheet:


Install the package from

Thanks to RStudio for the cheatsheet’s template.

Co się działo na hakatonie Urban Sensors?


Hakaton Urban Sensors odbył się 26 września, dzień przed konferencją WhyR? Poniżej opiszę z jakimi danymi walczyliśmy i co ciekawego udało się zrobić.


Podczas tej jednodniowej imprezy pracowaliśmy z miejskimi danymi pochodzącymi z projektu VaVeL. Dokładniej z trzema źródłami danych:

  • Danymi online o położeniu autobusów i tramwajów w Warszawie. Poprzez interface REST pobieraliśmy szczegółową informację o tym gdzie znajdują się obecnie autobusy i tramwaje w Warszawie, ile są spóźnione, w którym kierunku jadą, kto je prowadzi, jaki jest najbliższy przystanek itp.
  • Danymi offline o położeniu autobusów i tramwajów. W plikach tekstowych mieliśmy zebrane informacje o położeniach autobusów i tramwajów przez cały lipiec i wrzesień. To całkiem spore dane. Logi dla jednego dnia zajmują średnio około 2.5GB.
  • Danymi offline z telefonii komórkowej. Dla poszczególnych stref Warszawy mieliśmy informacje ile było zdarzeń w sieci komórkowej w poszczególnych godzinach. Dane pokrywały lipiec i wrzesień. Te dane nie były tak duże jak informacje o ruchu pojazdów, ale były bardzo ciekawe.



Hakaton rozpoczął się od dwóch krótkich warsztatów. Pierwszy prowadzony przez Przemysława Biecek opisywał jak dostać się do danych. Drugi prowadzony przez Ewę Baranowską poświęcony był interaktywnej wizualizacji z użyciem biblioteki D3. Materiały wideo z obu warsztatów będą dostępne na stronie hakatonu w połowie października.


Po warsztatach, uczestników hakatonu przywitali przedstawiciele partnerów projektu VaVeL. W kolejności wystąpienia, byli to: dziekan wydziału MiNI PW prof. Wojciech Domitrz; dyrektor Biura Cyfryzacji Miasta um. st. Warszawy, p. Tadeusz Osowski i dr Jarosław Legierski z Orange Labs.


Uczestnicy z entuzjazmem zabrali się do pracy z danymi. Intensywna praca trwała do godziny 20 i zakończyła się wieloma ciekawymi rozwiązaniami.
Zadanie nie było proste, dane były gigantyczne i nie wszystkie zespoły zdecydowały się na zaprezentowanie rozwiązań. Ale te zaprezentowane były bardzo ciekawe.


Prezentacje rozpoczął projekt Jana Bajerskiego, pokazujący jak wyglądają wizualizacje przejazdów autobusów i tramwajów na tle danych rozkładowych. Do wizualizacji wykorzystano diagramy Mareya. Z opracowanym narzędziem można się pobawić na stronie (wersja rozwojowa).
Diagramy Mareya okazują się fantastycznym narzędziem by śledzić czy pojazdy się spóźniają, gdzie są wąskie gardła, jak bardzo się spóźniają, jak wydłuża się czas podróży. Można też łatwo zauważyć, czy autobusy tej samej linii mają tendencje do tworzenia ,,stad” kilku pojazdów jadących blisko siebie.


Kolejne rozwiązanie przedstawiła Ewa Baranowska. Pozwala ono w czasie rzeczywistym śledzić gdzie znajdują się obecnie autobusy i tramwaje w naszej okolicy. Interaktywna wizualizacja znajduje się na tej stronie.


Następnie Adam Wróbel przedstawił przeprowadzoną statystyczną analizę opóźnień tramwajów. Modelowanie z użyciem modeli regresyjnych pozwala szukać linii narażonych na wysokie ryzyko opóźnienia. Ciekawym wynikiem była ujemna korelacja przyrostów opóźnienia z przesuniętymi wartościami. Oznacza to, że (zgodnie z intuicją) motorniczy jeżeli ma opóźnienie i może je nadrobić to je nadrabia, a jeżeli jedzie przed rozkładem to zwalnia by zlikwidować nadczas.


Silny zespół z firmy Pearson w składzie Krzysztof Jędrzejewski, Mikołaj Olszewski, Mikołaj Bogucki, Mateusz Otmianowski, Kacper Łodzikowski przedstawił aplikację shiny, którą udało się błyskawicznie zbudować w czasie hakatonu. Aplikacja o wdzięcznej nazwie CzyZdążę.pl pozwala na sprawdzenie, dla planowanej trasy przejazdu, gdzie obecnie jest najbliższy tramwaj/autobus na który trzeba się spieszyć i ile średnio potrwa przejazd. To było niesamowite oglądać ile udało się temu zespołowi wykonać w ciągu zaledwie kilku godzin.


Pearson nie był jedyną firmą licznie reprezentowaną na hakatonie. Ciekawe rozwiązanie zaprezentował również zespół analityków z GfK Polonia w składzie Natalia Okińczyc, Barbara Czarnota, Andrzej Surma, Agnieszka Fronczyk. Przygotowali analizę przystanków skazanych na największe opóźnienia wraz z animowanymi wykresami wykonanymi w pakiecie animation.


Aplikacji skiny było więcej. Ciekawą analizę z użyciem biblioteki leaflet i shiny wykonał zespół z firmy Neuca (Karolina Mazanowska, Kamil Sieklucki). Ich wyniki znaleźć można na GitHubie.


Obok zespołów analityków z jednej firmy, w hakatonie brały udział zespoły w barwach wydziałowych. Silny zespół 100 składający się głównie ze studentów, doktorantów i absolwentów MIM UW zaprezentował ciekawą analizę danych dotyczącą dużych wydarzeń w mieście i ich wpływu na ruch miejski.
Ich wstępna analiza znajduje się pod tym adresem.



Wiele z opracowanych rozwiązań, razem z prezentacjami z warsztatów, można znaleźć w repozytorium GitHub.
Na zakończenie zorganizowaliśmy konkurs na najbardziej innowacyjne rozwiązanie.

Zwyciężył zespół z firmy Pearson, wyprzedzając o zaledwie kilka głosów rozwiązanie zaprezentowane przez Jana Bajerskiego. Zwycięska drużyna otrzymała na pamiątkę Pałac Kultury z nadrukowanym wielkim R.


Realizacja hakatonu była możliwa dzięki wsparciu ze strony organizatorów: Aleksandry Dąbrowskiej, Alicji Gosiewskiej, Klaudii Korniluk, Marcina Kosińskiego i Konrada Więcko; licznych ekspertów merytorycznych wspierających nas ze strony Urzędu Miasta Warszawa; przedstawicieli MiNI w osobie Grzegorza Bagrowskiego i Jarosława Legierskiego, którzy wiedzieli wszystko o danych; Krzysztof Wittelsa który wspierał nas organizacyjne ze strony Urzędu Miasta oraz całego zespołu projektu VaVeL, który przygotował infrastrukturę z którą mogliśmy pracować.


Hakaton już się zakończył, ale nie jest to ostatnia inicjatywa związana z analizą tych szalenie ciekawych danych. Wkrótce informacja o kolejnych.

Urban Sensors – hakuj dane o komunikacji w Warszawie

Urban Sensors to jednodniowy hakaton nad danymi miejskimi, który odbędzie się w Warszawie 26 września na wydziale MiNI Politechniki Warszawskiej (Koszykowa 75) – dzień przed konferencją WhyR.

Położenie online każdego tramwaju i autobusu

Kręcą Cię miejskie dane? Ten Hakaton to unikalna okazja pracy na dużych danych miejskich (więcej poniżej) wspólnie z pracownikami Urzędu Miasta Warszawa, którzy te dane znają od podszewki. Eksperci z urzędu miasta będą z nami przez czas trwania hakatonu, pomogą ocenić realizowalność nawet najbardziej szalonego pomysłu, zaproponują ciekawe tematy badawcze, wskażą gdzie szukać dodatkowych danych.

Hakaton prowadzony jest w ramach projektu VaVeL, dzięki któremu powstaje nowa unikatowa infrastruktura dostępu do bardzo głębokich danych online o tym co się dzieje w mieście. Podczas hakatonu będziemy pracowali na prototypowej platformie, z dostępem do danych których w takiej skali wcześniej nie było.

Dane z którymi będziemy pracować w pierwszej kolejności to położenie autobusów i tramwajów (GPS) oraz zagęszczenie osób w różnych rejonach Warszawy (na podstawie raportów ze stacji bazowych). Z danymi będzie można pracować w trybie online (online śledzenie gdzie jest teraz który autobus); trybie dostępu do danych historycznych (gigabajty danych o położeniu pojazdów z całego miesiąca); oraz trybie batch (zrzut danych dla dwóch wybranych ciekawych dni, względnie małe pliki).

Co będziemy robić na hakatonie?

Punktem wspólnym projektów na hakaton są dane miejskie, format rozwiązań może być dowolny. Przykładowe pomysły na projekty:
– tramRadar – aplikacja mobilna pokazująca gdzie w okolicy są w obecnej chwili tramwaje i jakie mają opóźnienie (jeżeli mają) na bazie danych online,
– automatycznie generowany dzienny raport z opóźnień w ruchu,
– system machine-learning przewidujący opóźnienie autobusów i tramwajów.
Można oczywiście też przyjść z własnym pomysłem.

Do samego hakatonu pozostało jeszcze trochę czasu. Jeżeli macie ciekawy pomysł na urozmaicenie tego wydarzenia, podzielcie się w komentarzach.

Podczas hakatonu nie planujemy bezpośrednich nagród finansowych.
Ale Urban Sensors to świetna okazja by popracować z danymi miejskimi nad projektem który może być wdrożony i skomercjalizowany, więc sława i pieniądze czekają na osoby, które na tej prototypowej platformie zbudują użyteczne usługi.

Jak się zapisać?

Zapisy na hakaton rozpoczną się 5 września.
Planujemy przyjąć 40-50 osób.
Pierwszeństwo będą miały osoby mogące pochwalić się ciekawymi realizacjami.
Informacja o zapisach pojawi się w pierwszej kolejności na stronie

Jakich metod statystycznej analizy danych uczyć się?

The New England Journal of Medicine (dla bibliometroholików: 50 pkt MNiSW, impact factor ponad 50, pierwsza liga) opublikował dwa tygodnie temu krótki, ale bardzo ciekawy komentarz Statistical Methods. Przebadano 238 prac z roku 2015 pod kątem używanych technik statystycznych oraz zestawiono te wyniki z artykułami z poprzednich lat (od 1978, łącznie ~1000 artykułów).

Całość streszcza wykres po prawej (to link do oryginalnego artykułu). W dobrych czasopismach medycznych wykorzystywane są coraz bardziej zaawansowane metody statystyczne. Metody nieparametryczne i regresja wielokrotna w ponad 1/3 prac. Analiza przeżycia i analiza mocy testów, każde w ponad połowie artykułów (bardzo duży wzrost w ostatnich latach). Wielokrotne testowanie w co piątym artykule. Tylko co dwudziesty artykuł nie ma ,,statystyki”.

Przecinające się krzywe przeżycia

Spotkałem się ostatnio z ciekawym problemem.
Mamy dwie grupy pacjentów na dwóch różnych schematach leczenia i chcemy porównać ich dalsze losy, a konkretnie krzywe niepowodzenia leczenia (prawdopodobieństwo zgonu/wznowy).
Na pierwszy rzut oka klasyczna analiza przeżycia, test log-rank i po sprawie.

Ale szybko okazuje się, że krzywe przeżycia się przecinają, co więcej oczekiwać można tego po wcześniejszej rozmowie z lekarzem. Jeden schemat leczenia jest bardziej agresywny więc może prowadzić do gorszych rokowań krótkookresowych, ale lepszych w dalszej perspektywie.

Klasyczny test dla krzywych przeżycia oparty jest o odległość pomiędzy krzywymi, mierzoną jest jako ważona suma kwadratów odległości w poszczególnych punktach. Ale gdy krzywe się przecinają to taki test ma niską moc i nie ma sensu go stosować.

A więc co robić?
Ciekawe studium symulacyjne porównujące różne podejścia do testowania przecinających się krzywych zostało opublikowane dwa lata temu w Plos One (!).
Okazuje się, że dobrze sprawdza się rodzina testów Renyi, która jest oparta o supremum ważonych odległości pomiędzy krzywymi przeżycia.
W R te testy są zaimplementowane w pakiecie survMisc w funkcji comp. Jest to znacznie mocniejszy test dla przecinających się krzywych.

A przy okazji, okazuje się, że zmianę w hazardach w rozpatrywanym problemie dobrze ilustrują reszty Schonefelda. Poniższy wykres pokazuje, że hazard w jednej grupie jest znacznie wyższy do 12 miesiąca, a później gorsze losy czekają pacjentów drugiej grupy.

Oba wykresy wykonane pakietem survminer.

Opisy osi usunąłem ponieważ wyniki tych analiz jeszcze nie są opublikowane, ale też nazwy nie mają większego znaczenia.