modelDown: a website generator for your predictive models

I love the pkgdown package. With a single line of code you can create a complete website with examples, vignettes and documentation for your package. Brilliant!

So what about a website generator for predictive models?
Imagine that you can take a set of predictive models (generated with caret, mlr, glm, xgboost or randomForest, anything) and automagically generate a website with an exploration/documentation for these models. A documentation with archvist hooks to models, with tables and graphs for model performance explainers, conditional model response explainers or explainers for particular predictions.

During the summer semester three students from Warsaw University of Technology (Kamil Romaszko, Magda Tatarynowicz, Mateusz Urbański) developed modelDown package for R as an team project assignment. You can find the package here. Visit an example website created with this package for four example models (instructions). And read more about this package at its pkgdown website or below.

BTW: If you want to learn more about model explainers, please come to our DALEX workshops at WhyR? 2018 conference in Wroclaw or UseR! 2018 conference in Brisbane.

Getting started with modelDown
by Kamil Romaszko, Magda Tatarynowicz, Mateusz Urbański

Introduction

Did you ever want to have one place where you can find information explaining your model? Or maybe you were missing a tool that can show difference in multiple models for the same dataset? Well, here comes modelDown package. By using DALEX package, it creates one html page with plots and information related to the model(s) you want to analyze.

If you want to check out example website generated with modelDown, check out this link (along with script that was used to create the html). Read on to see how to use package for your own models and what features it provides.

The examples presented here were generated for dataset HR_data from breakDown package (available on CRAN). The dataset contains various information about employees (for example their satisfaction from work or their salary). The information we predict is whether they left the company.

Installation
First things first – how can you use this package? Install it from github:

Czytaj dalej modelDown: a website generator for your predictive models

Z pamiętnika nauczyciela akademickiego: Challenge-Based Learning


Challenge-Based Learning to technika uczenia przez zderzanie uczestników (studenci, uczniowie) ze współczesnym, ciekawym, rzeczywistym problemem do rozwiązania.
Aby taki problem rozwiązać, uczestnicy muszą zrobić badania literaturowe, zrozumieć problem, zaprojektować rozwiązanie i to najlepiej działające. Ta technika jest coraz częściej stosowana w szkołach średnich i podstawowych otwartych na nowe formy nauczania. Rozmawiałem ostatnio z twórcą koderka (aktywności dla dzieci związane z informatyką i nowymi technologiami) o edukacji STEM dla dzieci i młodzieży. Wątek Challenge-Based Learning pojawiał się nieustannie.

A jak to może wyglądać na uczelni?
Od jakiegoś czasu (ojej, to już 10 lat?) testuję różne techniki edukacyjne na zajęciach. Tym razem sprawdzałem pewien pomysł wzorowany na Challenge-Based Learning. Poniżej opiszę sam pomysł wraz z moimi obserwacjami po przeprowadzeniu zajęć.

Zaprojektowany by upaść

Jak pokazać na zajęciach wyzwania, jakie niesie komunikacja przy budowaniu wspólnego rozwiązania przez wiele osób?
W letnim semestrze prowadziłem Zaawansowane programowanie i analizę danych w R na MiNI PW. Jako drugi projekt studenci wykonali inteligentnego asystenta, pakiet R, który pomaga w pracy analityka danych wykonując co trudniejsze/żmudniejsze czynności (jak już raz się nauczy wczytywać dane to nie będzie w kółko pytać o te same parametry analityka).

Każdy z 14 studentów (luksus pracy z małymi grupami) dostał do wykonania jedną funkcjonalność. W sumie te funkcjonalności powinny złożyć się w jeden pakiet – jednego asystenta wspierającego pracę analityka.
Wciąż, jeden student opiekuje się jedną przypisaną mu funkcjonalnością – wczytaj dane, wykonaj preprocessing danych, przeprowadź budowę modelu predykcyjnego, wygeneruj raport, zapisz wykres, odtwórz sesji itp.
Zaliczenie projektu dotyczy częściowo tej jednej funkcjonalności a częściowo spójności rozwiązania z całą resztą pakietu.
Pomimo iż każdy opiekuje się swoją częścią to też opłaca się wszystkim by całość działała.
A jak wiadomo, całość to więcej niż suma składowych.
Wspomniany asystent nazywa się Hugo. Jeżeli chcecie go poznać bliżej, to zerknijcie na https://github.com/hugo4r/hugo.

Czytaj dalej Z pamiętnika nauczyciela akademickiego: Challenge-Based Learning

Not only LIME

I’ve heard about a number of consulting companies, that decided to use simple linear model instead of a black box model with higher performance, because ,,client wants to understand factors that drive the prediction’’.
And usually the discussion goes as following: ,,We have tried LIME for our black-box model, it is great, but it is not working in our case’’, ,,Have you tried other explainers?’’, ,,What other explainers’’?

So here you have a map of different visual explanations for black-box models. Choose one in (on average) less than three simple steps.

These are available in the DALEX package. Feel free to propose other visual explainers that should be added to this map (and the package).

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.

RODO + DALEX, kilka słów o moim referacie na DSS


W przyszły piątek (8 czerwca) na wydziale MiNI PW odbędzie się konferencja Data Science Summit.
W sali 107 pomiędzy 10:50 a 11:20 ma miejsce mój referat Wyjaśnij! Jak budować wyjaśnialne modele ML / AI i jak to się ma do RODO?, na który serdecznie zapraszam.

Planuję opowiedzieć o temacie, który wciąga mnie coraz bardziej, czyli wyjaśnialnym AI (XAI). Jak to się ma do RODO i o co chodzi z pogłoskami o ,,prawie do wyjaśnienia”?

To będzie techniczny referat (sorry, żadnych zdjęć kotów czy psów, być może jakieś zdjęcia robotów). Pokażę jak konstruować i używać wykresy breakDown (i powiem dlaczego są lepsze niż LIME czy wartości Shapleya), będzie też mowa o najnowszym wyniku naszego zespołu, czyli wykresach What-If.

Osoby zainteresowane tematem, ale nie planujące udziału w konferencji, zapraszam do lektury dokumentacji DALEXa.

Btw: Na konferencji DSS planowany jest hackaton ,,Conquer urban data”, organizowany przez dr Marcina Lucknera. Hataton wykorzystujący dane z API Warszawy. Warto tam zajrzeć.

Maraton Analizy Danych, czyli niedzielna notatka z pamiętnika nauczyciela akademickiego


Miałem dzisiaj przyjemność uczestniczyć w pracach jury podczas Maratonu Analizy Danych, wydarzenia zorganizowanego przez koło SNK Data Science Management z SGH. Hakaton trwał 24h, a po maratonie były jeszcze 3h prezentacji. W maratonie wzięły udział zespoły głównie z UW, PW i SGH, choć byli też uczestnicy z innych uczelni, również spoza Warszawy.

Przestrzeń na hakaton bardzo przyjemna (Mysia 3), organizacja świetna (ale czy czegoś innego można się spodziewać po kole z SGH?). To był jeden z bardzo nielicznych hakatonów, w którym duży nacisk położono na faktyczną analizę danych.

Takie imprezy robią na mnie duże wrażenie. Młodzi ludzie, przez cały dzień i całą noc walczą z jakimś problemem, a później jeszcze mają siłę pokazać wyniki innym zespołom.
Ach te studenckie czasy!
Wśród rozwiązań dominował R i Python, sporo było map (oczywiście leaflet), były aplikacje Shiny, a nawet w prezentacjach pojawił się jakiś PowerBI. Od strony metodologicznej dało się wyczuć dwa rodzaje podejść, nazwijmy je umownie podejściem maszynowym (jak model to random forest albo xgboost) i statystycznym (aż po statystykę Morana dla danych przestrzennych). To już same w sobie było świetne, uczestnicy zostali wystawieni na nowe (dla części z nich) algorytmy i podejścia do analizy danych.

Lubię takie wydarzenia, ponieważ pokazują jakie kompetencje posiadają najaktywniejsi studenci (ech, to spaczone spojrzenie nauczyciela akademickiego).
Od strony narzędziowej zespoły prezentowały bardzo wysoki poziom (a to studenci I i II stopnia), niesamowite co udało się zrobić w 24h. Od strony prezentacyjnej poziom też był wysoki. Czytelne sensowne przedstawianie problemu i rozwiązania. Były zespoły, które zdążyły zrobić i analizę i aplikację webową i bardzo graficznie dopracowaną prezentację. Znacznie wyższy poziom niż +-10 lat temu gdy prezentacje projektów bywały drętwe.

Ponieważ jestem człowiekiem, dla którego do szklanki zawsze można jeszcze trochę dolać, więc i tutaj zastanawiałem się jakie kompetencje dotyczące analizy danych można by dalej rozwinąć.

I wyszło mi, że wąskim gardłem było najczęściej samo określenie problemu do rozwiązania. Często (a pisząc często rozszerzam to i na inne znane mi hakatony i na znane mi projekty uczelniane) analiza danych jest ,,data-driven” a nie ,,problem-driven”.
Wychodzi się od dostępnego zbioru danych i zastanawia jaki by tu problem z tych danych rozwiązać. W konsekwencji gdy już wydaje się, że ten problem się rozwiązało, okazuje się, że te dane niespecjalnie się do tego problemu nadawały. Czy to z powodu agregacji, czy zakresów czy czegoś innego.
Pozostawia to pewien niedosyt. Widać było ciekawy problem, widać było wysiłek i umiejętności, ale rozwiązanie nie jest w pełni satysfakcjonujące z uwagi na ,,zniewolenie myślenia przez te konkretne dane”. Rozwiązanie nie jest wymuskane, lśniące, pachnące itp.
Potraktowałbym to jako wskazówkę dla prowadzących przedmioty projektowe na uczeniach, by większy nacisk włożyć na krytyczną ocenę potencjału wykorzystania określonego źródła danych.

Tak czy inaczej Maraton Analizy Danych był fantastycznym wydarzeniem pełnym pozytywnej energii. To była pierwsza edycja, oby były kolejne.
Najbliższy hakaton związany z analizą danych odbędzie się za dwa tygodnie, podczas konferencji Data Science Summit (nasza fundacja jest partnerem!).
Z pewnością też tam będę 😉

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.

DALEX @ eRum 2018

DALEX invasion has started with the workshop and talk @ eRum 2018.

Find workshop materials at DALEX: Descriptive mAchine Learning EXplanations. Tools for exploration, validation and explanation of complex machine learning models (thanks Mateusz Staniak for having the second part of the workshop).

And my presentation Show my your model 2.0! (thanks go to the whole MI2DataLab for contributions and Malgorzata Pawlak for great stickers).

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 Stories – Warsaw apartments

This Monday we had a machine learning oriented meeting of Warsaw R Users. Prof Bernd Bischl from LMU gave an excellent overview of mlr package (machine learning in R), then I introduced DALEX (Descriptive mAchine Learning EXplanations) and Mateusz Staniak introduced live and breakDown packages.

The meeting pushed me to write down a gentle introduction to the DALEX package. You may find it here https://pbiecek.github.io/DALEX_docs/.
The introduction is written around a story based on Warsaw apartments data.

The story goes like that:
We have two models fitted to apartments data: a linear model and a randomForest model. It happens that both models have exactly identical root mean square for errors calculated on a validation dataset.
So an interesting question arise: which model we should choose?

The analysis of variable importance for both models reveals that variable construction.year is important for randomForest but is completely neglected by linear model.
New observation: something is going on with construction.year.

The analysis of model responses reveals that the relation between construction.year and price of square meter is nonlinear.
At this point it looks like the random forest model is the better one, since it captures relation, which the linear model do not see.

But (there is always but) when you audit residuals from the random forest model it turns out that it heavily under predicts prices of expensive apartments.
This is a very bad property for a pricing model. This may result in missed opportunities for larger profits.
New observation: do not use this rf model for predictions.

So, what to do?
DALEX shows that despite equal root mean squares of both models they are very different and capture different parts of the signal.
As we increase our understanding of the signal we are able to design a better model. And here we go.
This new liner model has much lower root mean square of residuals, as it is build on strengthens of both initial models.

All plots were created with DALEX explainers. Find R code and more details here.