Data Science Masters

Jeszcze przez 11 dni można zgłaszać prace magisterskie w konkursie Data Science Masters – konkursie na najlepszą pracę z obszaru Analizy Danych i Uczenia Maszyn.

Mamy już 24 zgłoszenia!
Gdzie wykuwano zgłoszone w konkursie prace?

Screen Shot 2018-01-09 at 19.10.16

Miałem okazję przejrzeć kilka ze zgłoszonych prac. Są bardzo ciekawe i bardzo zróżnicowane. Od zastosowań głębokich sieci neuronowych, przez analizę matematyczną właściwości testów statystycznych po modele ekonometryczne.

Czekamy na kolejne zgłoszenia!
Formularz na stronie https://www.datasciencemasters.edu.pl/.

Konkurs jest organizowany przez wydział Matematyki i Nauk Informacyjnych Politechniki Warszawskiej oraz firmę Nethone z grupy DaftCode.

Fighting Against Fake Data and Visualizations

Pięć dni temu rozpoczęliśmy konkurs na Najgorszy wykres roku 2017. Do chwili obecnej w głosowaniu oddano 804 głosy co świadczy o rosnącej popularności i zasięgu tego konkursu.
Poniżej napiszę kto wygrał, dlaczego to ważne i jak nie zostać laureatem w kolejnej edycji.

Najgorsze wykresy 2018

Najwięcej głosów (429 głosów, 53% głosujących) zdobył poniższy wykres z portalu oko.press. Zbyt dużo kategorii, pionowe słupki spowodowały, że trudno z niego odczytać jakiekolwiek liczby.

Drugie miejsce (328 głosów, 41%) zajął mój faworyt z serwisu Bankier. Dziwaczna oś OX (na początku prezentująca dane co 10 lat a później co 1 rok), zaskakujące górki i dołki, brak odniesień do demografii (liczba zawartych małżeństw pewnie jakoś zależy od struktury demograficznej w danym roku), złożyły się na ten zapadający w pamięć wykres.

Na trzecie miejsce wystarczyło 151 głosów (19% głosujących), a zdobył je wykres kołowy z portalu wroclaw.pl.

Dlaczego szukanie dziury w całym jest takie ważne?

Każdy ze zgłoszonych wykresów, nawet te zwycięskie, można bronić używając rozmaitych argumentów. Najczęstsze to:

* Co z tego, że wykres jest nieczytelny, skoro pokazane są liczby.
[W takim razie po co pokazywać wykres? Lepsza byłaby tabela.]
* Wykres nie jest zły, bo gdyby pokazać dane poprawnie to nie byłoby widać żadnych różnic.
[A może nie ma istotnych różnic? Po co wprowadzać w błąd co do wielkości różnic?]
* Może i wykres pokazuje coś innego niż sugeruje tytuł, ale przecież jakieś informacje jednak pokazuje.
[A nie lepiej pokazać jednak informacje zgodne z tytułem?]
* Wykres to tylko poglądowa ilustracja, słowny opis w artykule jest poprawny.
[Nie lepsze byłoby jakieś ładne poglądowe zdjęcie z imageshack? Po co mydlić czytelnikowi oczy sugerując, że wykres pokazuje jakieś dane?]

Argumenty obrony mógłbym zrozumieć, gdyby dotyczyły grafik znalezionych na portalu z głupotkami. Ale na portalach informacyjnych (czy pretendujących do tego tytułu) nie ma miejsca na takie błędy.

I nie jest to opinia wyłącznie statystyka, ale też opinia poważnych dziennikarzy, np. takich jak Alberto Cairo.
Poniżej umieszczam nagranie z ubiegłorocznego odczytu Alberto Cairo nt. Visual Trumpery: Fighting Against Fake Data and Visualizations — From the Left and From the Right.
Bardzo polecam, świetne wystąpienie, wiele ciekawych argumentów i przykładów.

Jak żyć?

Tytuł tego wpisu zapożyczyłem z ww. prezentacji Alberto Cairo. Celem konkursu nie jest naśmiewanie się z konkretnych portali czy autorów konkretnych grafik, ale zasygnalizowanie problemu jakim jest nieumiejętna/wprowadzająca w błąd prezentacja danych w popularnych mediach.

Problem nie jest znany od wczoraj. Jest wiele źródeł pokazujących jakich błędów należy unikać lub przedstawiających wizualizacje danych bogate w treść.

* W języku polskim najłatwiej mi polecić własną książkę ,,Zbiór esejów o sztuce prezentowania danych”. Jest to zbiór 8 krótkich esejów nt. różnych aspektów graficznej prezentacji danych. Dostępny w formie papierowej z wieloma kolorowymi ilustracjami jak i bezpłatnie dostępny w postaci elektronicznej na tej stronie.
* W języku angielskim klasyką gatunku są książki Edwarda Tuftego. Lista książek i wiele interesujących materiałów można znaleźć na jego stronie https://www.edwardtufte.com/tufte/
* Wspomniany wyżej Alberto Cairo jest autorem dwóch książek o wizualizacji danych oraz kursu online na ten temat. Więcej informacji na jego stronie internetowej http://albertocairo.com/
* Jest bardzo wiele świetnych blogów o wizualizacji danych. Ja najbardziej lubię śledzić Flowing Data (prowadzony przez Nathana Yau, autora kilku książek), Information is Beautiful (prowadzony przez Davida McCandlessa, autora Information is Beautiful i Knowledge is Beautiful) oraz Junk Charts (prowadzony przez Kaisera Fung, również autora kilku książek).

Materiałów zwiększających umiejętności krytycznego i wizualnego myślenia o danych jest znacznie więcej. Pracujemy właśnie nad świetną pozycją o roboczej nazwie ,,Wykresy unplugged”. Więcej informacji o tej pozycji już wkrótce.

Udanego 2018!

Najgorszy wykres 2017 roku

Zbliża się Sylwester, czas więc wybrać najgorszą prezentację danych opublikowaną w roku 2017.
Konkurs na najgorszą wizualizację przeprowadzamy co roku od 2012 (edycja 2016, edycja 2015, edycja 2014, edycja 2013, edycja 2012). W tym roku było wiele ciekawych zgłoszeń przesłanych przez facebook, emailem, od studentów przedmiotu Techniki Wizualizacji Danych. Ze zgłoszeń wybrałem 10 niezwykłych wykresów, mogących moim zdaniem śmiało rywalizować o tytuł najgorszego wykresu ever.

Zasada plebiscytu jest prosta. Do końca roku można wskazywać swoje typy na najgorszy wykres, głosując za pomocą ankiety umieszczonej na końcu tego wpisu (w jednym dniu można głosować tylko raz. Jednocześnie można wskazać do 5 kandydatów). Po nowym roku zobaczymy, który wykres otrzymał najwięcej głosów. To on otrzyma tytuł „Zniekształcenie roku 2017”. Aby ułatwić głosowanie, każdy kandydat ma skrótową wpadającą w ucho nazwę.

1. Detale są bez znaczenia

Ten wykres pochodzi z tvn24. Za pomocą słupków przedstawiono nakłady na zdrowie jako % PKB. Co jednak ciekawe, długość słupków wcale nie jest proporcjonalna do prezentowanych liczb. Słupki systematycznie sobie rosną zaznaczając wyłącznie kolejność. Wartość zakodowana przez pierwszy słupek różni się od wartości zakodowanej przez czwarty tylko o 1,2 pp. Różnica pomiędzy dwoma ostatnimi to 1,5 pp. Długość słupków tylko wprowadza w błąd. Wartości liczbowe zostały zignorowane – jak widać to tylko detale.

Screen Shot 2017-10-24 at 21.55.04

2. 12%

Ten wykres pochodzi z benchmarku nvidia. Wygląda na to, że wzrost wydajności jest naprawdę duży (pierwszy słupek jest 3x mniejszy od ostatniego), przynajmniej dopóki nie spojrzy się na oś. Więcej podobnych ciekawych zniekształceń jest opisanych tutaj.

nvidia

3. Gdzie jest Wally?

Mapki (czyli kartogramy) są wspaniałe, wyglądają elegancko, często są kolorowe i jeszcze powodują przyjemne uczucie zrozumienia, przecież ‚łał widziałem gdzieś ten kształt – to chyba kontury Polski’.
Do pewnych analiz kartogramy się jednak zupełnie nie nadają, a jedną z nich jest porównywanie dwóch kartogramów.
Np. jak znaleźć istotne różnice na poniższych kartogramach?
Przykład pochodzi z biqdata.

Screen Shot 2017-10-23 at 15.47.11

4. Będzie lepiej!

Wykresy słupkowe to jedna z najprostszych w użyciu technik prezentacji danych. Trudno zrobić je źle, a jednak, poniższy wykres pokazuje, że się da. Prezentuje dane z lat 2016/2017 oraz prognozy. A prognozy nie dość, że są optymistyczne, to jeszcze narysowane w taki sposób…
Źródło

Screen Shot 2017-01-25 at 15.17.38

5. Jak tankować, to tylko na Śląsku

Za Forbes podajemy wykres ze średnimi cenami benzyny w różnych województwach. Gdzieś musi być drożej, a gdzieś musi być taniej, ale czy z poniższego wykresu łatwo odczytać, że maksymalna różnica cen pomiędzy województwami to 5%?

tabelka-ceny-paliw

6. Nie interesuję się

Poniższy wykres pochodzi z portalu oko.press i prezentuje odpowiedzi na pytanie które wydarzenia można uznać za najważniejsze w 2016 roku.
Jeden z nielicznych przypadków w których legenda jest 3 razy większa niż wykres, sam wykres całkowicie nieczytelny, właściwie jedyne co można odczytać to, że na pytanie ,,Które wydarzenie było najważniejsze” w poprzednim roku najczęstsza odpowiedź to ,,Nie wiem, nie interesuję się, nie zastanawiałem się”.

screen-shot-2016-12-31-at-10-12-02

7. Walec

Jak przedstawić cztery liczby by wyglądały poważnie? Dodajmy dwie kategorie, masę cyfr najlepiej nic nie wnoszących i koniecznie pokażmy dane w 3D. Gdy jeszcze zastosujemy różne agregacje dla różnych słupków oraz dwie kategorie, wtedy będziemy mogli być pewni, że z wykresu niewiele da się odczytać.

Żródło wyjaśnia związek tego wykresu ze smogiem w Wadowicach.

Screen Shot 2017-10-24 at 22.04.01

8. Ślub tylko w miesiącu z r i roku z 0

W serwisie Bankier znaleźć można taki zaskakujący wykres przedstawiający liczbę małżeństw.
Z jakichś niezwykłych powodów autor wykresu zdecydował się pomiędzy pomiarami dodać dołki aby wykres był ciekawszy.

Screen Shot 2017-02-14 at 16.38.49

9. Wrocław na tle innych miast

Na portalu wroclaw.pl znaleźć można porównanie finansów Wrocławia z pięcioma innymi dużymi miastami. Dane ciekawe, ale sposób prezentacji dziwaczny (w raporcie jest więcej takich kwiatków). Np. co można odczytać z poniższej szarlotki (podpowiedź, segmenty szarlotki NIE są posortowane po wielkości)?

Screen Shot 2017-12-28 at 01.03.31

10. Będzie impreza

Na portalu biznes.onet umieszczono portret zamożnego Polaka. Poniższy wykres pokazuje rozkład wielkości miesięcznych oszczędności. Nie przypuszczałem, że to powiem, ale: te dane znacznie lepiej byłoby pokazać na wykresie kołowym. A tutaj, skąd te kolory, skąd te wielkości?

kola

Który wykres zasługuje na tytuł ,,Zniekształcenie roku 2017''?

View Results

Loading ... Loading ...

chRistmas tRees

Year over year, in the last classes before Christmas I ask my students to create a Christmas tree in R.
Classes are about Techniques of data visualisation and usually, at this point, we are discussing interactive graphics and tools like rbokeh, ggiraph, vegalite, googleVis, D3, rCharts or plotly. I like this exercise because with most tools it is easy to create a barchart, but how good must be the tool and the craftsman to handle a christmas tree?

Here is what they did this year (having around 1 hour to finish the task). Knitr scripts.

Update: I am still getting new submissions, feel free to submit yours as well.

Screen Shot 2017-12-22 at 13.07.26Screen Shot 2017-12-22 at 13.04.49

Screen Shot 2017-12-21 at 23.10.40Screen Shot 2017-12-21 at 23.10.23

Screen Shot 2017-12-21 at 22.06.35Screen Shot 2017-12-21 at 22.00.11

Screen Shot 2017-12-21 at 23.11.45Screen Shot 2017-12-21 at 23.11.19

Screen Shot 2017-12-21 at 21.57.54Screen Shot 2017-12-22 at 13.07.54

Screen Shot 2017-12-22 at 23.09.48Screen Shot 2017-12-22 at 23.09.25

Screen Shot 2018-01-09 at 22.37.20Screen Shot 2018-01-09 at 22.20.51

Screen Shot 2018-01-09 at 22.13.01Screen Shot 2018-01-09 at 21.57.06

Screen Shot 2018-01-09 at 21.47.06Screen Shot 2018-01-09 at 21.43.25

Screen Shot 2018-01-09 at 21.39.49Screen Shot 2018-01-09 at 21.22.31

Screen Shot 2017-12-21 at 23.10.48

Czekamy na zgłoszenia do tegorocznej edycji ,,Najgorszego wykresu roku”

Na koniec roku przygotowujemy szóstą (!!!) edycję konkursu na najgorszy wykres roku.
Jeżeli widzieliście w mediach papierowych lub elektronicznych wykresy zniekształcające dane, powodujące, że prosta informacja staje się całkowicie nieczytelna, zgłoście ją do konkursu!
Wykres/wizualizacja powinna być opublikowana w 2017 roku.
Zgłoszenia można przesyłać w komentarzach lub na adres email: przemyslawbiecek na serwerze gmail.com.

Jakie wykresy stawały w szranki w poprzednich latach?

archivist: Boost the reproducibility of your research

A few days ago Journal of Statistical Software has published our article (in collaboration with Marcin Kosiński) archivist: An R Package for Managing, Recording and Restoring Data Analysis Results.

Why should you care? Let’s see.

Starter

a
Would you want to retrieve a ggplot2 object with the plot on the right?
Just call the following line in your R console.

archivist::aread('pbiecek/Eseje/arepo/65e430c4180e97a704249a56be4a7b88')

Want to check versions of packages loaded when the plot was created?
Just call

archivist::asession('pbiecek/Eseje/arepo/65e430c4180e97a704249a56be4a7b88')

Wishful Thinking?

When people talk about reproducibility, usually they focus on tools like packrat, MRAN, docker or RSuite. These are great tools, that help to manage the execution environment in which analyses are performed. The common belief is that if one is able to replicate the execution environment then the same R source code will produce same results.

And it’s true in most cases, maybe even more than 99% of cases. Except that there are things in the environment that are hard to control or easy to miss. Things like external system libraries or dedicated hardware or user input. No matter what you will copy, you will never know if it was enough to recreate exactly same results in the future. So you can hope that results will be replicated, but do not bet too high.
Even if some result will pop up eventually, how can you check if it’s the same result as previously?

Literate programming is not enough

There are other great tools like knitr, Sweave, Jupiter or others. The advantage of them is that results are rendered as tables or plots in your report. This gives you chance to verify if results obtained now and some time ago are identical.
But what about more complicated results like a random forest with 100k trees created with 100k variables or some deep neural network. It will be hard to verify by eye that results are identical.

So, what can I do?

The safest solution would be to store copies of every object, ever created during the data analysis. All forks, wrong paths, everything. Along with detailed information which functions with what parameters were used to generate each result. Something like the ultimate TimeMachine or GitHub for R objects.

With such detailed information, every analysis would be auditable and replicable.
Right now the full tracking of all created objects is not possible without deep changes in the R interpreter.
The archivist is the light-weight version of such solution.

What can you do with archivist?

Use the saveToRepo() function to store selected R objects in the archivist repository.
Use the addHooksToPrint() function to automatically keep copies of every plot or model or data created with knitr report.
Use the aread() function to share your results with others or with future you. It’s the easiest way to access objects created by a remote shiny application.
Use the asearch() function to browse objects that fit specified search criteria, like class, date of creation, used variables etc.
Use asession() to access session info with detailed information about versions of packages available during the object creation.
Use ahistory() to trace how given object was created.

Lots of function, do you have a cheatsheet?

Yes! It’s here.
If it’s not enough, find more details in the JSS article.

Data Science Masters – najlepsze prace magisterskie z Data Science i Uczenia Maszynowego

DataScienceMasters_Mail_Banner 27.11

Do 20 stycznia 2018 można zgłaszać prace do konkursu Data Science Masters.
Zgłaszać można prace magisterskie obronione na dowolnej polskiej uczelni w latach 2016 lub 2017.

Data Science i Uczenie Maszynowe to dwie bardzo szerokie dziedziny. Aby je objąć w Jury znajdują się matematycy i informatycy z czterech różnych uczelni z szeroką gamą zainteresowań, od bioinformatyki, ekonometrii po Big Data czy analizę obrazów.

Łączna pula nagród to 8 500 zł, a prezentacja zwycięskiej pracy jest zaplanowana na dzień liczby Pi, czyli 14 marca.

Celem konkursu jest pokazanie jak ciekawe problemy rozwiązywane są w ramach prac magisterskich w Polsce. Mamy nadzieję, że będą one inspirowały przyszłe tematy prac.

Więcej informacji: https://www.datasciencemasters.edu.pl/

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:

breakDownCheatsheet

Install the package from https://pbiecek.github.io/breakDown/.

Thanks to RStudio for the cheatsheet’s template.

Z pamiętnika nauczyciela akademickiego – Irracjonalne wybory

TL;DR

Wybory studentów są czasem nieracjonalne, przynajmniej z mojego punktu widzenia. Ale czasem to znaczenie lepiej i bardzo mnie to cieszy.

Dłuższa wersja

Na przedmiocie Techniki Wizualizacji Danych mam w tym roku bardzo silną grupę matematyków ze specjalności SMAD (statystyka i analiza danych) i informatyków ze specjalności PAD (przetwarzanie i analiza danych). W semestrze mamy trzy projekty i spodziewałem się, że wyniki każdego będą tak ciekawe, że je tutaj opiszę.

Ale…

W terminie oddanie pierwszego projektu zadałem też całkiem wciągającą pracę domową. Projekt dotyczył wizualizacji danych komunikacji miejskiej VaVeL, praca domowa dotyczyła przeprowadzenia badania sprawdzającego jak ludzie odczytują dane z wykresów. Z projektu można było dostać do 100 punktów, praca domowa jest punktowana 10 punktów, z możliwością dodatkowego bonusu 10 punktów jeżeli będzie bardzo dobra. Projekt był dosyć silnie skierowany na konkretny dobór danych, praca domowa pozostawiała bardzo szerokie pole do interpretacji.
Czasu oczywiście niewiele, warto zrobić jedno i drugie ale projekt to 100 punktów a praca domowa max 20.
Na co studenci poświęcili więcej czasu?
Racjonalnie (więcej o tym na samym końcu) byłoby się skupić głownie na projekcie. Ale patrząc na wyniki, więcej czasu i serca widać w pracach domowych. Badania, które wykonali na pracę domową były tak ciekawe, że to właśnie o nich napiszę poniżej.

Ale o co chodzi

Punktem wyjścia do pracy domowej był esej Percepcja obrazu oraz trudność w wyobrażenia sobie co odbiorca widzi na naszym wykresie, jeżeli nie jest obciążony naszą wiedzą, co na tym wykresie chcieliśmy pokazać. Na wykładzie omawialiśmy sobie jak nasz mózg widzi wykresy, jak rozumie dane i co potrafi z wykresu odczytać a czego nie.
Zadaniem było przeprowadzenie badania na kolegach/koleżankach, badania oceniającego które wykresy są lepiej (=precyzyjniej) odczytywane.

I co z tego wyszło

Jedna z grup (Alicja Gosiewska, Kinga Jamróz, Maja Kalinowska, Karolina Marcinkowska) przygotowała internetową ankietę weryfikującą co internauci widzą a czego nie widzą a następnie zebrała wyniki w raporcie.

Ankietę można znaleźć w internecie TUTAJ i bardzo polecam ją zrobić. Jest świetnie przygotowana, zaskakująca i to po prostu dobra zabawa.

Wyniki z zebranych badań w postaci raportu są dostępne TUTAJ.
Uwierzcie, że po zrobieniu ankiety, będziecie chcieli wiedzieć jak zrobili ją inni.

Ciekawych prac domowych było oczywiście więcej.
Zespół (Mateusz Mazurkiewicz, Wojciech Rosiński, Dawid Stelmach) sprawdzał czy wykresy słupkowe sa faktycznie takie dobre jak je prowadzący rysuje.
Ta praca mierzy się z wykresami typu tree plot (Ahmed Abdelkarim, Aleksandra Hernik, Iwona Żochowska)
Z piktogramami (czy ISOTYPE) mierzyła się grupa (Paweł Pollak, Karol Prusinowski, Karol Szczawiński)
A zespół (Anton Lenartovich, Mateusz Mechelewski) rozstrzygał komu podobają się wykresy typu płatki śniegu.

A co do tytułowej irracjonalności.
Na jesienną pluchę polecam książkę Dana Ariely (dostępna też jako audiobook) Predictably Irrational: The Hidden Forces That Shape Our Decisions.
Oczywiście zachowania studentów wcale nie są irracjonalne. Zamiast wybrać zadanie z większą liczbą punktów wybrali zadanie ciekawsze w dłuższej perspektywie jest lepszym wyborem.
A to, jak pisałem na wstępie, bardzo mnie ucieszyło.

intsvy: PISA for research and PISA for teaching

The Programme for International Student Assessment (PISA) is a worldwide study of 15-year-old school pupils’ scholastic performance in mathematics, science, and reading. Every three years more than 500 000 pupils from 60+ countries are surveyed along with their parents and school representatives. The study yields in more than 1000 variables concerning performance, attitude and context of the pupils that can be cross-analyzed. A lot of data.

OECD prepared manuals and tools for SAS and SPSS that show how to use and analyze this data. What about R? Just a few days ago Journal of Statistical Software published an article ,,intsvy: An R Package for Analyzing International Large-Scale Assessment Data”. It describes the intsvy package and gives instructions on how to download, analyze and visualize data from various international assessments with R. The package was developed by Daniel Caro and me. Daniel prepared various video tutorials on how to use this package; you may find them here: http://users.ox.ac.uk/~educ0279/.

PISA is intended not only for researchers. It is a great data set also for teachers who may employ it as an infinite source of ideas for projects for students. In this post I am going to describe one such project that I have implemented in my classes in R programming.

I usually plan two or three projects every semester. The objective of my projects is to show what is possible with R. They are not set to verify knowledge nor practice a particular technique for data analysis. This year the first project for R programming class was designed to experience that ,,With R you can create an automated report that summaries various subsets of data in one-page summaries”.
PISA is a great data source for this. Students were asked to write a markdown file that generates a report in the form of one-page summary for every country. To do this well you need to master loops, knitr, dplyr and friends (we are rather focused on tidyverse). Students had a lot of freedom in trying out different things and approaches and finding out what works and how.

This project has finished just a week ago and the results are amazing.
Here you will find a beamer presentation with one-page summary, smart table of contents on every page, and archivist links that allow you to extract each ggplot2 plots and data directly from the report (click to access full report or the R code).

FR

Here you will find one-pagers related to the link between taking extra math and students’ performance for boys and girls separately (click to access full report or the R code).

ZKJ

And here is a presentation with lots of radar plots (click to access full report or the R code).

GMS

Find all projects here: https://github.com/pbiecek/ProgramowanieWizualizacja2017/tree/master/Projekt_1.

And if you are willing to use PISA data for your students or if you need any help, just let me know.