Podcast

Łukasz Prokulski – dane i analizy

Cześć. Witam Cię w 72. odcinku podcastu Biznes Myśli. Dzisiejszym gościem jest Łukasz Prokulski. Jeżeli interesujesz się danymi, ich analizą, wizualizacją to myślę, że znasz Łukasza. Od bardzo dawna chciałem z nim nagrać podcast, tylko ciągle nam się to nie udawało z różnych powodów.

Zanim przejdziemy do naszej rozmowy, chciałbym przypomnieć, że 14 marca (Dzień Liczby Pi) odbędzie się, po raz pierwszy w historii Biznes Myśli, spotkanie ze słuchaczami podcastu. Tego dnia miną 3 lata, jak podcast istnieje. Dlaczego warto się pojawić?

To będzie zamknięte spotkanie dla stosunkowo małej grupy osób, żeby się poznać i nawiązać kontakty. O godzinie 12:00 startujemy, więc można będzie przyjechać z różnych zakątków Polski. Specjalnie wybraliśmy taką godzinę, aby możliwy był dojazd także z bardziej oddalonych miejsc – spodziewamy się m.in. gości z Gdańska. Kończymy oficjalnie o 18:00, ale później będzie również szansa na kontynuację rozmów.

W trakcie tego spotkania będzie dużo merytorycznej wiedzy. Zapraszamy też gości, którzy pojawili się już w podcaście. Będzie dużo networkingu, dużo inspiracji. Również będą dyskusje na temat tego, co można jeszcze zrobić rozwijając podcast (a może coś więcej niż podcast?), żeby wartość merytoryczna była jeszcze większa i jeszcze bardziej trafiała do Ciebie. Zapraszam, warto być.

Bilet możesz dostać tutaj.

Teraz przechodzimy do dzisiejszego odcinka podcastu – rozmowa z Łukaszem.

Cześć Łukasz! Przedstaw się – kim jesteś, czym się zajmujesz, gdzie mieszkasz?

Cześć Vladimir. Jestem Łukasz Prokulski. Jestem analitykiem danych, człowiekiem, który robi głównie jakieś wykresy, raporty. Przynajmniej tak to wyglądało w ciągu ostatnich kilku lat mojej kariery zawodowej. Mieszkam w Warszawie, gdzie pracuję w dużej instytucji finansowej. Doświadczenie mam głównie przy projektach IT, gdzie przeważnie zajmowałem się wyciąganiem danych na temat tego, ile czasu trwają te projekty, ile pochłaniają zasobów. Przygotowywałem z tego wszelakie zestawienia z próbą optymalizacji co robić, żebyśmy projekty kończyli szybciej.

Powiedz co ostatnio ciekawego przeczytałeś?

Ostatnio wreszcie udało mi się skończyć książkę „Sapiens. Od zwierząt do bogów”. Strasznie długo mi to szło, ale to chyba ze względu na to, że mam dosyć mało czasu (poza pracą i rodziną) na takie spokojne zajęcie się czytaniem. To jest książka, której rekomendacje krążą w naszym środowisku IT od jednej do drugiej osoby. W sumie zainteresowałem się nią po warsztatach, które odbyły się w 2018 r. Gdzieś na konferencji ktoś ją polecił i tak po dłuższym czasie trafiła w moje ręce. Polecam również i ja.

Widziałem Twoje komentarze na Facebooku: „DNA to szatan”.

Tak. Co kilka stron są takie zdania perełki w tej książce. Skłania to do przemyśleń o tym, jak się rozwijaliśmy jako gatunek i co nas czeka w przyszłości.

Skąd w Tobie pasja do danych i ich analizy? Jak zrodził się prowadzony przez Ciebie blog o danych i analizie? Przy okazji sprawdziłem, kiedy go zacząłeś – 4 stycznia 2005 r. Post wyglądał tak: „Mam swoją domenę. Mam swój host. Założyłem tego bloga. Zobaczymy, czy coś z tego wyjdzie…”.

I wyszło całkiem fajnie. Dzisiaj też o tym będziemy rozmawiać. Widać, że cały czas dodajesz kolejne artykuły. Ostatni wpis (jak nagrywałem ten odcinek) pojawił się 13 grudnia, czyli nie tak dawno temu. Czuć, że masz determinację, więc porozmawiamy trochę o tym. Ale najpierw – skąd ta pasja?

Jestem z wykształcenia fizykiem jądrowym. Śmieję się zawsze, jak mówię, kim jestem z wykształcenia, że pracuję w jednej z wielu polskich elektrowni atomowych. Pewnie gdzieś te studia i bardzo duża ilość laboratoriów, gdzie trzeba było przygotowywać różne dane, analizować z różnych pomiarowych przyrządów doprowadziły mnie do tej pasji.

Później w karierze zawodowej trafiły mi się miejsca, gdzie zajmowałem się dużą ilością danych. Może nie w takim rozumieniu, jak obecnie big data, ale to były setki czy tysiące wierszy w Excelu z 50 kolumnami. W którymś momencie Excel przestał mi wystarczać.

Wpadła mi w ręce książka o języku R. Zobaczyłem, że to jest dosyć proste dla mnie do zaadaptowania na własne cele. I tak po prostu testowałem – jestem zdania, że najlepiej uczyć się poprzez ćwiczenia i małe projekciki. Chcąc nauczyć się rysowania mapki z jakimiś informacjami na niej szukałem danych przez ich analizowanie, próbowanie i wizualizację – w ten sposób uczyłem się czegoś nowego. Stwierdziłem, że to może być też ciekawe dla innych.

W sumie nie było żadnych materiałów po polsku na ten temat. Stwierdziłem: dlaczego nie napisać czegoś na blogu? Tak z tygodnia na tydzień powstawały nowe posty i trwa to do dzisiaj. Zbudowałem wokół bloga fanpage’a na Facebooku – kręci się to dalej.

Jeszcze raz mogę Ci pogratulować, jeżeli chodzi o determinację, bo 14 lat to jest długi okres czasu. Jak teraz nagrywam podcast 3 lata, to wiem, jaki wysiłek trzeba włożyć, żeby odcinki pojawiały się w sposób regularny. To jest kawał pracy.

To trochę nie tak, bo ja założyłem tego bloga i kupiłem domenę (rzeczywiście 14 lat temu) z myślą o tym, że coś chciałbym napisać od siebie. Na początku pisałem o tym, co zobaczyłem w kinie, jakiej muzyki posłuchałem, dawałem komentarz do wydarzeń około internetowych. Później miałem strasznie długą przerwę, a o analizie danych zacząłem pisać 2-3 lata temu. Więc nie liczyłbym, że mój blog na temat analizy danych ma 14 lat.

Próbowałem przypomnieć sobie, kiedy po raz pierwszy trafiłem na Twój blog. Było to jakiś czas temu, ale myślę, że tak 3 lata temu (może trochę więcej), ale na pewno pisałeś już o analizie danych. Moją uwagę przykuła jakość postów, to jak dogłębnie grzebiesz w tych danych pokazując kolejne wykresy. Jeżeli ktoś nie słyszał o tym blogu, to bardzo gorąco zapraszam.

Mówiąc o danych – często pojawia się takie stwierdzenie, że są dane dobrej i złej jakości. Ta druga kategoria bardzo przeszkadza firmom, żeby efektywniej działać, podejmować właściwe decyzje, być bardziej innowacyjnymi. Czy mógłbyś wyjaśnić (najlepiej poprzez przykłady), kiedy możemy mówić, że dane są dobrej, a kiedy złej jakości?

Dobrej jakości dane muszą być pewne. Załóżmy, że zbieramy dane z czujników np. o temperaturze, wilgotności powietrza. Jeśli mamy pewność, że te instrumenty pomiarowe stabilnie pracują, nie mają żadnych momentów, kiedy przestają zbierać dane, mierzą tę prawdziwą temperaturę czy wilgotność – to możemy mówić o tym, że mamy dobre dane.

Dane są dobre, jeśli są ciągłe i w odczytach powiedzmy co 1 minutę rzeczywiście te odczyty nie różnią się od siebie. Jeżeli nie ma takiej sytuacji, że w ciągu pierwszej minuty mamy 10 stopni, w ciągu następnej 50, natomiast w trzeciej minucie odczyt wskazuje 10 stopni, to powinno wszystko być w porządku. W przeciwnym wypadku należy podejrzewać, że coś jest nie tak z instrumentem pomiarowym.

To troszeczkę też wyjaśnia, czym są złe dane. “Złe” bardziej w znaczeniu “zniekształcone”. Dużo też jest danych zbieranych przez różne instytucje bez pomysłu na to, co z nimi zrobić. Mamy taki strumień danych czy pisany wolnym tekstem, w plikach excelowskich czy w innych źródłach (zdjęciach, filmach).

W sytuacji kiedy te dane są nieustrukturyzowane w żaden sposób, mogą być złymi danymi. Mamy Excele z raportami sprzedaży z kilku miejsc w Polsce, z różnych oddziałów, z kolejnych miesięcy, ale każdy wygląda inaczej. To są troszeczkę złe dane. One mogą mieć merytoryczną wartość, ale do późniejszej obróbki nie są tak bardzo przydatne. Później trzeba się nad nimi namęczyć aby przygotować te dobre dane.

No właśnie. To jest ciekawa rzecz. Wydaje się, że większość firm, jeżeli sprawdzić jakość danych, które posiadają w tym momencie, to jest właśnie to, co opisałeś: są różne oddziały, różne historie w czasie się wydarzyły (był jeden zespół, drugi zespół, jedna osoba pracowała, odeszła, potem kolejna).

Myślę, że w wielu firmach pojawia się właśnie to kryterium oceny jako złej jakości dane. Co z tym zrobić? Jak sprawić, żeby przejść od danych złej do dobrej jakości? Masz przydatne triki, które się sprawdzają u Ciebie? Czy to jest zawsze tak, że to jest sztuka i ciężko to opisać jednoznacznie?

To zależy od momentu zbierania wymagań do takiej analizy. Jeśli powiemy sobie: „Ok, od dzisiaj będziemy zbierać dane na jakiś tam temat”, to analityk, który później z tymi danymi będzie pracował, może założyć, jakich rzeczy potrzebuje, co powinno być zbierane i w jakiej formie. Czy w formie wpisów do bazy danych, plików płaskich typu *csv czy Exceli? To już jest kwestia wtórna. Na “dzień dobry” takiego zbierania danych możemy określić, że zbieramy konkretne informacje.

Jeśli już przechodzimy na taki projekt z danymi zebranymi przez pewien okres czasu, z danymi, które już istnieją i nie możemy nałożyć na nie jakiś wymagań – to zaczyna się praca pod tytułem “trzeba to oczyścić i przygotować”. Tutaj chyba nie ma złotych środków. Możemy oczekiwać, że liczby będą w formie liczbowej (liczbami całkowitymi czy dziesiętnymi), teksty będą w formie tekstowej bez żadnych ozdobników takich jak znaczniki HTML, a co z tym zrobić dalej to już kwestia problemu.

Niestety nie da się powiedzieć, że przy każdym zadaniu trzeba wykonać następujące kroki. One są podobne za każdym razem, ale nie ma złotego przepisu.

Spróbujmy może ugryźć to trochę z innej strony, tak żeby jakaś porada się pojawiła i kilka konkretnych punktów. Załóżmy, że teraz mówimy o przyszłości.

Czyta nas osoba decyzyjna i myśli sobie: „zdaję sobie sprawę, że jak do tego nie podejdę w sposób strategiczny, to dane będą złej jakości. Prawdopodobnie muszę coś zrobić, żeby było inaczej”.

Jakiej porady, możesz udzielić takiej osobie? Na co koniecznie warto zwrócić uwagę w momencie, kiedy projektujesz proces zbierania i przechowywania danych, żeby później te dane łatwo było wyciągnąć do analizy i ostatecznie wykorzystać choćby w uczeniu maszynowym lub w podobnych zaawansowanych podejściach? Co zrobić, aby dane były dobrej jakości? Jak najlepiej to zaprojektować?

To zależy od merytorycznego zakresu tych danych. Jeśli mówimy o zebraniu informacji o ludziach, którzy przyszli do naszego sklepu internetowego z jakiejś kampanii reklamowej, to pewnie byśmy chcieli wiedzieć, skąd użytkownik przyszedł, czy przyszedł sam szukając nas w wyszukiwarce, czy kliknął w jakąś reklamę, jaka to była reklama, co na niej było, o której godzinie przyszedł, jakie produkty przeglądał, co kupił, czy kupił w ogóle, ile zostawił pieniędzy.

To są takie rzeczy, na których można zrobić bardzo ciekawą analizę i dobrą segmentację klientów. Załóżmy jednak, że ktoś zapomni o zbieraniu informacji o czasie wizyty w sklepie oraz o konkretnych reklamach, które go na stronę sprowadziły. Wtedy nie wiemy, kiedy warto puszczać reklamy i które się najlepiej sprawdzają (który wariant tekstu, która grafika itd.). Po zebraniu takich danych przez powiedzmy 3 miesiące, przyjdzie analityk, spróbuje zbudować jakieś kategorie tych produktów.

Coś mu z tego wyjdzie, ale czy biznesowo to będzie przydatne na przyszłość do budowania kolejnych kampanii? Mam wątpliwości. Ważne jest to, żeby wiedzieć, co z tymi danymi chcemy zrobić później. Super jest zbierać jak najwięcej danych, ale takie zbieranie danych bez celu to magazynowanie rzeczy tzw. „przydasiów”. Jeśli nie wiemy, po co nam te dane, to oczywiście możemy je zbierać, tylko później szukanie pomysłów na ich wykorzystanie to nie jest to. W biznesie powinniśmy wiedzieć, czego oczekujemy.

Co właśnie jeżeli nie wiemy w tym momencie, ale później przychodzi ktoś, kto ma pewne inspiracje i przemyślenia? Jeśli nie mielibyśmy tych danych, to nie da się ich w jednym ruchu zebrać (rok, dwa, pięć lat wstecz). Tutaj warto byłoby podejść bez żadnych skrajności, żeby z jednej strony zbierać to, czego już potrzebujemy, ale z drugiej strony może być tak, że za chwilę dowiemy się czegoś i wtedy zrozumiemy: „Aha, to warto było zbierać jeszcze coś więcej niż to co zebraliśmy”. Co o tym myślisz?

Tak, masz rację. Być może są jakieś informacje zebrane w danej organizacji i ktoś przychodzi, ogląda sobie te informacje i mówi: „Gdybyśmy wiedzieli jeszcze to, to byłoby nam łatwiej. Ale z tego co mamy, możemy wyciągnąć jakieś wnioski”. W takim przypadku – “zbieramy dane a nie wiemy po co”, najważniejsze jest usystematyzowanie tego zbierania, czyli np. słowniki zamknięte (żeby to nie były rzeczy wpisywane z palca).

Pamiętam, jak przy jakiejś okazji byłem w Urzędzie Miasta i pani, z którą rozmawiałem przy składaniu wniosku mówiła, że Zielona Góra w systemie państwowym przetrzymującym informacje o obywatelach jest zapisana na 16 czy 17 sposobów. To jest przecież jedno i to samo miasto. Raz jest przez „ó”, raz jest “góra” a raz “Góra”, pojawiają się literówki – dramat.

Dlatego warto wprowadzać słowniki do rzeczy, które w naszym obszarze są zamknięte. Oczywiście słownik zawsze można poszerzyć. Lepiej poszerzyć słownik o kolejne miasto niż o kolejną wersję Zielonej Góry. Podobnie jest z innymi kategoriami danych. Liczby niech będą liczbami. Jak one są z przecinkiem, z wartością dziesiętną to niech to zawsze będzie przecinek, a nie wymienne z kropką.

Grunt, aby zawsze to był ten sam znak rozdzielający. Daty niech będą ustalone w konkretnym formacie. Ostatnio miałem taką sytuację, że przygotowałem narzędzie, które z Excela generowało prezentację w *pdf. Tam data dzieliła prezentację na osobne strony z wybranym informacjami. Wszystko było dobrze, póki w Excelu data była excelową datą. W jednym czy dwóch wierszach ktoś napisał “lipiec 2010 r.” jako ciąg tekstowy i mechanizm przestał działać. To są takie sytuacje typu wspomnianej Zielonej Góry.

Teraz klaruje nam się taka jedna mocna prawda – unikajmy możliwości podawania informacji wprost wpisanych przez człowieka. Człowiek jest bardzo niedeterministyczny. Nawet ta sama osoba w różne dni (a tym bardziej miesiące, lata) wpisze na to samo miejsce coś innego. Jeszcze bardziej się to komplikuje, jeżeli mówimy o różnych oddziałach. Warto więc zrobić słowniczki albo różnego rodzaju checkboxy itd. 

A propos dat, przypomniało mi się, że w szczególności kiedy pracujesz z danymi mieszanymi czyli np. z Europy i ze Stanów, to wszystko jeszcze bardziej się przekręca. W Stanach używa się innego formatu daty (miesiąc-dzień-rok) i wtedy jak masz 9-10-2019 to nie wiadomo czy to jest 9 października czy 9 września.

Tak, to prawda. Jeszcze przyszło mi do głowy, że jeśli pracujesz w biznesie, w którym na całym świecie w ciągu doby coś się dzieje i ważna jest godzina tego wydarzenia, to warto też trzymać strefę czasową, bo nasza 18:00 to nie 18:00 w Australii.

Tak. Dość często się stosuje UTC (czyli strefa zerowa), więc to też może być wygodne. Warto też pamiętać, że dobrze jest umieć odczytać godzinę, która była w tym momencie fizycznie w miejscu zdarzenia. Przykładowo, jak robimy prognozowanie, to godzina fizyczna ma jednak wpływ, czy to była noc, czy dzień. Nawet godzinne przesunięcie może mieć duże znaczenie dla ostatecznego wyniku.

Kilka porad już nam się utworzyło. Jeszcze jednym ze sposobów zbierania danych jest tzw. scrapowanie, czyli zbieranie danych przy pomocy pajączka. Zauważyłem w Twoich postach kilkakrotnie, że o tym wspominasz. Mógłbyś wyjaśnić, czym jest scrapowanie?

Scrapowanie czy zbieranie informacji ze stron internetowych polega w dużym uproszczeniu na tym, co może zrobić nieskończona liczba praktykantów w naszym biznesie w nieskończonym czasie.

Można napisać do tego skrypty, pajączki. Po co robić powtarzalną pracę ludźmi, skoro mogą to zrobić maszyny? Polega to na tym, że przechodzimy od strony do strony w ramach jednej kategorii produktów, następnie to samo robimy na kolejnych kategoriach i sczytujemy stamtąd interesujące nas informacje (cenę produktu, jego kategorię, kolor czy inne cechy, przechodzimy do kolejnego produktu i robimy to samo) i te dane zapisujemy do późniejszej analizy.

W ten sposób zrobiłem kilka rzeczy np. jak szukałem samochodu, to napisałem post, który wykorzystał dane zebrane z serwisu ogłoszeniowego z samochodami. Jak chciałem wynająć mieszkanie to zrobiłem coś podobnego z innym serwisem. Czy to jest dobre zachowanie? To kwestia dyskusyjna.

Ja staram się nie nadwyrężać serwisów, z których pobieram dane, tj. korzystam w sposób udający przeglądarkę, zwykłego użytkownika. Nie chcę, żeby w ciągu 1 sekundy serwer sklepu czy innego serwisu, musiał odpowiedzieć 30-40 razy na moje zapytania, tylko daję mu odpocząć chwilę. Taka dobra praktyka. Pytajmy co sekundę albo dwie, udając takiego użytkownika, który rzeczywiście w ciągu 1 sekundy nie przeczyta 30 stron (raczej jedną czy dwie).

Warto też spojrzeć na polityki prywatności, regulaminy i tego typu zapisy na stronach – zweryfikować, czy można to robić. W pierwszej kolejności jednak polecam przede wszystkim poszukać API i pobierać dane serwisu, które są dostępne przez API.

Dzięki temu nie wczytujemy wszystkich informacji w tym tych zbędnych (obrazki i wszystko co jest przydatne człowiekowi oglądającemu stronę), a pobieramy już gotowe informacje w przygotowanym ładnym formacie. Nie musimy bawić się też w czyszczenie tych danych, przerabianie formatów i tego typu zabawy.

Bardzo się cieszę, że zwróciłeś uwagę na to, żeby robić odstępy w czasie. Osobiście widziałem, jak często ludzie po prostu wysyłają za dużo requestów. To jest mega nieetyczne i problematyczne, gdy administrator musi się zajmować tymi żądaniami, odciąć tego użytkownika itd. 

Podsumujmy to, co powiedziałeś. Po pierwsze sprawdźmy, czy jest API. Jeżeli API na pierwszy rzut oka jest niedostępne, to może jednak jest gdzieś schowane. Warto też zapytać wprost, czy można zebrać dane.

Zazwyczaj w przypadku projektów bardziej edukacyjnych administratorzy zdecydują się na współpracę, bo takiemu sklepowi czy firmie (jeżeli jest to w miarę dojrzała struktura) na tym powinno zależeć. Też pewnie zachęcą potem, żeby podzielić się swoimi wynikami.

Druga rzecz, to jeżeli jednak nie ma API i nie ma możliwości się dostać, a bardzo byśmy chcieli, to warto się zapoznać prawnie z regulaminem, polityką prywatności, skonsultować się z prawnikiem, gdyż w większości przypadków nie da się tego jednoznacznie zinterpretować.

Jeżeli jest to raczej w celach prywatnych to jest bardzo cienka granica, bo tak naprawdę równie dobrze mogę skopiować sobie linijka po linijce do Excela – to to nie może być zakazane samo w sobie, bo to są dane publiczne. Jeżeli więc nie jest to zakazane, to w jaki sposób można zakazać, że robię to w sposób nie w 100% banalny, tylko automatyzuję proces?

Dopóki to jest prywatny użytek, edukacyjny to zwykle nie ma większego problemu. Natomiast pojawia się on wtedy, jeżeli robimy to komercyjnie, a w szczególności jeżeli budujemy konkurencyjne rozwiązania, czyli zbieramy dane i stawiamy podobny serwis.

Trzecia rzecz, to jeżeli nic nie mam, nie ma żadnego prawa i chcemy sobie to trochę zautomatyzować, to pamiętajmy o takich prostych zasadach etycznych. Nie nadużywajmy tej automatyzacji, nie wysyłajmy za dużo requestów na sekundę.

Warto sobie założyć malutką maszynkę w chmurze. Niech ona zbiera te dane przez tydzień, ale tak powoli, strona po stronie i wszyscy będą zadowoleni, nikomu to nie będzie przeszkadzało.

Jeszcze pozwolę sobie dodać jedną rzecz. Teraz np. bawię się strumieniem informacji z Twittera. Pewnie za jakiś czas powstanie z tego post na blogu.

Zbieram tweety według różnych słów kluczowych i zapisuję je w bazie. Analizując zapisane dane widzę jakich rzeczy nie zapisałem i które muszę policzyć po fakcie. Interesuje mnie np. liczba tweetów w danej godzinie, w danym dniu tygodnia. W bazie zapisuję tylko datę wysłania tweeta razem z godziną.

Żeby dostać się do informacji o dniu tygodnia i godzinie, muszę tę datę rozłożyć na składowe części. To uświadamia mi, że zebrałem już jakąś ilość danych i teraz kolejne operacje będą wymagały tego, żeby rozłożyć posiadane informacje na drobniejsze części. Można było to rozłożyć wcześniej na poziomie zbierania danych.

To trochę nawiązując do tego, o czym mówiliśmy przy projektowaniu procesu zbierania danych. Warto też przy web scrapingu pomyśleć o tym, co później z tymi danymi będziemy robić, żeby nie okazało się, że po tygodniu zbierania danych brakuje nam jakiejś jednej informacji i musimy przepuścić jeszcze raz cały ten serwis zbierając te same informacje plus jedną dodatkową. Warto sprawdzać też tego typu rzeczy i myśleć o tym do przodu.

Tutaj też bardzo trzeba uważać. Jak zbieramy dane i później je przekształcamy np. dodajemy logikę, to trzeba bardzo uważać, żeby nie popełnić błędu. Wtedy jeżeli nie mamy źródła prawdy, to nie mamy innej opcji niż zacząć jeszcze raz od nowa, żeby to ewentualnie naprawić.

Myślę, że w przypadku, o którym wspominasz, pewnie sensowniejszym mogłoby być zbieranie surowych danych i do tego dodanie dnia, miesiąca, godziny. Te dane surowe ja bym trzymał z tego powodu, że znając życie człowiek i tak popełnia bugi, więc ostatecznie fajnie jest mieć lokalną wersję surową, żeby można było do niej wrócić w razie potrzeby.

Nie jest to aż takie przyjemne, bo trzeba przemierzyć wszystkie dane. Jeżeli tych danych jest więcej niż tysiąc, to może to trochę zająć czasu. Niemniej to i tak jest znacznie łatwiejsze niż ponowne zbieranie danych, ponieważ strumień cały czas płynie.

Tak, ja bardziej pod tym kątem, że strumień płynie, my pobieramy z niego pewne dane, wzbogacamy je rozbijając datę na składowe po to, żeby w jakimś innym procesie on-linowo pokazać, że o danej godzinie było X elementów.

Jeśli tych danych jest bardzo dużo i są zapisane w tabeli esquelowej, z której musimy zrobić selecta po godzinie, to łatwiej zrobić go po tej godzinie, jeśli ona jest wyodrębnioną kolumną, niż zbierać wszystkie dane i tę godzinę wyciągnąć już z tych danych źródłowych. Myślmy też o tym, co się z tymi danymi będzie działo później. Żeby je wzbogacić o pewne elementy w procesie zbierania. 

To co powiedziałeś o zbieraniu danych surowych – zawsze. Zawsze trzeba mieć dane surowe, oryginalne, bo rzeczywiście gdzieś po drodze może się okazać, że coś dodaliśmy czy usunęliśmy. Posiadając dane źródłowe nie trzeba będzie powtarzać całego procesu, który może być nie do powtórzenia.

Załóżmy teraz, że mamy dane. Przechodzimy do ich analizy i tu sam w sobie proces już nie jest taki trywialny. Pojawia się szereg wyzwań. Z Twojej perspektywy – spróbuj wymienić wyzwania, które mogą się pojawić? Jak sobie z tym poradzić?

To wszystko zależy. To takie ulubione powiedzenie informatyków w rozmowach z biznesem – to zależy. 

Najtrudniejsze rzeczy to chyba czyszczenie danych, czyli to, co mówiłem o brakujących danych albo momentami zakłóconych z jakiegoś powodu: bo przyrządy zbierające nie działały, bo ktoś wpisał “Zielona Gura” itp. Mówi się, że przy projekcie analitycznym 80% czasu to jest właśnie oczyszczanie danych i normalizacja. Później narysowanie wykresów czy zbudowanie modeli idzie dosyć szybko, jeśli dane są dobre (czyste, bez zakłóceń, bez wartości odstających).

Najtrudniej jest właśnie zdecydować, co z tymi danymi chcemy zrobić. Jakich cech potrzebujemy ewentualnie dodatkowych? Czy liczby są z jakiegoś przedziału i może warto to znormalizować? Czy rozkład tych liczb jest specyficzny, nie jest rozkładem normalnym?

Twoje posty charakteryzują się dużą ilością wykresów – można je robić na różne sposoby. Można je poprostu zrobić i czasem ładnie wyglądają, ale największa wartość z punktu widzenia biznesu jest wtedy, kiedy patrzysz na wykres i rozumiesz, co masz zrobić. Nie tak, że się zastanawiasz, tylko to jest oczywiste, tzw. action label.

Czyli co takiego zrobić z naszymi wykresami, żeby one były faktycznie pomocne, kiedy interpretacja tych wykresów nie wymaga od Ciebie dłuższego zastanawiania, tylko patrzysz i widzisz. Jakieś złote porady od Łukasza?

Przeczytałem kilka artykułów na temat wizualizacji danych i tego jak efektywnie pokazywać ane. Pamiętam, że byłem na wykładzie w Warszawie człowieka, który robi takie rzeczy. Chyba tylko 2 albo 3 informacje na wykresie powinny być pokazane na raz, czyli jeśli mamy np. wykres ceny akcji, to jest czas i cena. Nie dodajemy do tego koloru, wolumenu, liczby sprzedanych akcji, logarytmu i porównania z czymś innym.

Czasami trzeba wykres jednej spółki porównać z indeksem giełdowym – to wystarczą dwie linie na jednym wykresie, gdzie na osi X mamy czas, a na osi Y wartość indeksów. Jedna, dwie informacje na raz – tak żeby to łatwo, jednym rzutem oka można było zrozumieć i bez dodatkowej osoby, która musi wytłumaczyć, że jeśli w danym momencie wykres spadł, to wtedy coś tam znaczy. Przede wszystkim nie przeładowanie.

Druga rzecz to typ wykresu, który opowiada daną historię. Jeśli coś się dzieje w czasie – linia. Jeśli coś jest w kilku kategoriach – słupki. Jeśli coś pokazuje dwa powiązane ze sobą parametry – wykres punktowy, gdzie jeden element jest na jednej osi, a drugi na drugiej. Czasami potrzeba dodać trzeci, to wtedy albo kolor, albo wielkość punktu.

Proste zasady, które tak naprawdę wystarczy zastosować. Jest pełno materiałów w Internecie na ten temat. Ja staram się ostatnio wkoło fanpage’a i bloga budować profil na Instagramie, gdzie też pokazuję ciekawe wizualizacje. Może one też kogoś zainspirują.

A propos interpretowalności wykresów, mam dwa kolejne pytania. 

Przy pomocy wykresu można manipulować opinią ludzi, wpływać na wyniki. W jaki sposób można być bardziej odpornym na manipulację? Można znaleźć bardzo dużo materiałów w Internecie mówiących o tym, jak przedstawiając wykresy w ten czy inny sposób, można osiągnąć takie wyniki, które się chce osiągnąć. 

Tak, najczęstszy przykład to słupki poparcia dla partii w telewizji. Wykres słupkowy zawsze u podstawy powinien mieć 0. Sam zauważyłem, że np. Excel nie zaczyna słupków od 0. Robiąc szybko wykres słupkowy, mamy wartości 900 i 1000, a Excel zaczyna przecięcie z osią w okolicach 800. To jest mylące, bo to pokazuje różnice między jedną wartością a drugą, ale w skali zawężonej (do samych szczytów słupków, a nie na całości). 

Mylące są osie podwójne, gdzie mamy dwie rzeczy pokazane na jednym wykresie. Jedna seria danych jest na jednej osi opisana, a druga jest na drugiej i one do siebie pasują, tylko jedna zmienia się o wartości od 0 do 1, a druga np. od 1 mln do 2 mln. 

Dużo jest też kwestii związanych z tym, że korelacja nie oznacza przyczynowości. Bardzo dużo jest takich wykresów, które mówią o liczbie utonięć w basenie, w powiązaniu z liczbą filmów z jakimś aktorem. Tutaj zostaje zdroworozsądkowe myślenie, bo można pokazać dwie liczby ze sobą powiązane, bo ich przebiegi w czasie wyglądają podobnie, ale powinniśmy się zastanowić, czy to rzeczywiście ma jakiś wpływ. Może to być ciekawe, ale czy jedno ma wpływ na drugie?

Niekoniecznie. To, że dwie cechy zachowują się podobnie, nie znaczy, że są ze sobą powiązane. Jeśli chodzi o ten temat, można zobaczyć materiały o złych wykresach – Przemek Biecek z Politechniki Warszawskiej prowadzi bloga, na którym co roku ogłasza mini konkurs na najgorzej zrobione wykresy opublikowane w mediach. Polecam – tam są czasami perełki. Teraz rok zbliża się ku końcowi i myślę, że Przemek przygotuje kolejną serię.

Polecam sprawdzić kategorię “Zły wykres” na tym blogu. W zeszłym roku był temat odry w Polsce. W telewizji pokazano wypaczone dane mówiące, że wskaźnik zachorowań rośnie, a później na innych danych można było zobaczyć, że to wszystko się waha w czasie. Ostateczne wnioski różniły się od tego, co pokazano w telewizji.

Idąc dalej – manipulacja. Chciałbym to podzielić na dwie kwestie: świadoma manipulacja z użyciem danych i ta wywołana przez błąd. Na co muszę uważać i co muszę dodatkowo sprawdzić jako osoba tworząca wizualizację danych, żeby przypadkiem nie zniekształcić rzeczywistości?

To chyba te elementy, o których wspomniałem mówiąc o tym, jak można oszukiwać na wykresach. Gdzieś widziałem ostatnio wykres zmiany średniej temperatury na przestrzeni ostatnich lat. Na jednym wykresie był spadek – tylko wykres uwzględniał ostatnie 10 lat. Drugi wykres pokazywał ostatnie 30 lat i był lekki wzrost. A na wykresie, który uwzględniał ostatnie 150 lat był gwałtowny wzrost.

Jest to pewien sposób na oszukiwanie danych. Często jest tak w korporacjach, że jakieś wyniki dla zarządu trzeba przygotować i ma być widoczny wzrost. Nieważne czy rzeczywiście urosło czy nie – ma być pokazany wzrost. To jest “świetna” szkoła oszukiwania w wykresach. Zawsze można dobrać okres w ten sposób, żeby rosło. Bazę, czyli wcześniejszy pomiar też – albo to jest miesiąc, albo rok temu. Nie ważne, da się zrobić tak, żeby rosło.

Można powiedzieć, że nie urosło albo spadło coś co jest złe. Np. sprzedaż nam nie wzrosła, ludzie którzy sprzedają odeszli z pracy, to możemy powiedzieć, że spadły koszty sprzedaży. Jest to prawda, a niekoniecznie mówi o tym, że jest dobrze. Chociaż spadek kosztów sprzedaży może być czymś dobrym. Przy spadku wartości sprzedaży – już nie koniecznie. Jakie było pytanie? 🙂

Pytałem o to, na co należy uważać, żeby niechcący nie zmanipulować danych. Ze swojej strony dodam, że należy maksymalizować krytyczne myślenie.

Czy to jest faktycznie rzeczywistość, czy tylko ułamek obrazu, który wyrwaliśmy z big picture i to jest kawałek wyciętej wiedzy?

No tak, właśnie takie krytyczne spojrzenie i stawianie się po dwóch stronach barykady jest dobrym rozwiązaniem. Dobrze jest skonsultować się z kimś, bo jako autor wykresów czy modelu ciężko jest o inny punkt widzenia. W końcu napracowałeś się nad tym i wierzysz w to, co robisz. Być może jest jakiś mały kamyczek, który wywróci Twoje myślenie do góry nogami i da krytyczne spojrzenie.

Niekoniecznie jesteś w stanie znaleźć to w sobie tym bardziej pracując pod presją czasu. Chcesz oddać jak najszybciej swoją pracę, bo terminy gonią. Wtedy druga osoba się przydaje, która powie, że: Nie, jakby to było na niebiesko, a nie na zielono, to by było lepiej. Nawet tego typu proste rzeczy. Albo: pokazujesz tutaj dane z ostatniego tygodnia, a popatrz na cały kwartał czy rok. Jak to się zachowa?

Podsumowując ten wątek, możemy powiedzieć, że po pierwsze – krytyczne myślenie. Trzeba to rozwijać, bo to jest bardzo ważna umiejętność związana z danymi i z całym tym obszarem. Druga rzecz to warto po prostu zapytać kolegę, koleżankę, co o tym myślą. Szczególnie, że ta osoba nie jest w to wkręcona emocjonalnie w ten temat, albo przynajmniej przez chwilę robiła coś innego. To ona będzie miała świeże spojrzenie.

Mnie studia nauczyły takiego krytycznego myślenia i spojrzenia na świat. Jakby ktoś zapytał, co zawdzięczam fizyce, to na pierwszym miejscu byłoby takie powątpiewanie w rzeczywistość. Czy to co widzę, jest prawdziwe? Czy to, co widzę, ma sens? Chcę to też przekazać na blogu w swoich tekstach, że być może to, co widzimy, nie jest prawdziwe, może trzeba szukać głębiej.

Być może dlatego one są na tyle ciekawe, bo nie pokazują tylko zmiany czegoś na podstawie danych. Z drugiej strony to konsultacja. Kiedyś pracowałem jako człowiek projektujący interfejsy stron internetowych. Fajnie było robić badania z użytkownikami, zapłacić masę pieniędzy za to, żeby ich zapytać, czy button powinien być czerwony czy zielony, z prawej czy z lewej.

Najtańszym, najprostszym i najszybszym rozwiązaniem okazywał się tzw. test korytarzowy. Czyli idziesz korytarzem, łapiesz 4-5 osób, które nie pracują nad tym co Ty i zadajesz im dokładnie te same pytania, które możesz zadać na testach za grube pieniądze. Możesz pokazać komuś wykres i zapytać, co na nim jest zaprezentowane, jak on to rozumie.

Wracając do Twojego bloga, bo już na początku powiedziałem, że są na nim bardzo ciekawe artykuły. Jest tam bardzo dużo treści, których skonsumowanie wymaga dużo czas. Co w szczególności polecasz przeczytać? Z którego artykułu jesteś wyjątkowo dumny?

Najpopularniejsze są artykułu o danych, które wyciągnąłem z portalu Sympatia – jakich cech szukają mężczyźni, jakich kobiety u swoich partnerów. Te teksty są w moich odczuciu takie sobie. Najbardziej pamiętam tekst „Sprzedam Opla” o szukaniu samochodu. Tam zastosowałem właściwie wszystko, co mi przyszło wtedy do głowy i drążyłem głębiej i głębiej. Tekst mówi o tym, że zebrałem dane z serwisu ogłoszeniowego, wiedziałem, jakiej marki szukałem i w jakim mniej więcej roczniku.

Więc w jaki sposób znaleźć najlepszą okazję dla tego samochodu? Ile kosztuje średnio model wyprodukowany w danym roku? Jaki ma średnio przebieg? Ale też zacząłem się zastanawiać wtedy, czy wartość samochodu z biegiem lat się zmienia? Jak się zmienia w zależności od marki czy modelu?

Korzystając z tych oferowanych cen, czy rocznik 2010 dużo straci na wartości, kiedy minie rok? Weźmy rocznik 2009 dzisiaj i sprawdźmy, jaka jest różnica między cenami. Tam jest jeszcze kilka takich elementów. To jest chyba najlepszy mój tekst. Taki w miarę łatwy do przeczytania, a też pokazujący najwięcej rzeczy, które można (z dosyć prostych informacji) wyciągnąć. Mamy tylko rok, przebieg i cenę danego samochodu – 5 czy 6 kolumn w Excelu. Oczywiście nie pisałem tego w Excelu. Excel jest fajny, ale do zbierania danych.

Już zbliżając się ku końcowi naszej rozmowy chciałbym porozmawiać o przyszłości.

Jaką przyszłość widzisz? Jak powinien wyglądać dostęp do danych w idealnym świecie według Ciebie?

W idealnym świecie wszystkie instytucje, które są opłacane z podatków, powinny mieć dane otwarte, dostępne przez API. Chciałbym wiedzieć, ile zgłoszeń do straży miejskiej w okolicy mojego osiedla miało miejsce w ostatnim miesiącu. Chciałbym, żeby te dane były dostępne online. To kosztuje infrastrukturę, to kosztuje ludzi, którzy te dane wprowadzają.

Ludzie są omylni, wprowadzają je w różny sposób. Przez to, że w Polsce nie mamy tego typu informacji, nie jesteśmy w stanie zrobić zadań z konkursów publikowanych na Kaggle, gdzie mamy np. nowojorską policję czy mandaty samochodowe z Los Angeles i tego typu zestawy danych. Nie jesteśmy w stanie powtórzyć tych ćwiczeń dla naszego kraju. Jeśli chodzi o dane bardziej komercyjne, to tu już zależy od właściciela danych, czyli od firmy, która je zbiera. Czyli im więcej pokaże, tym bardziej może się odsłonić przed konkurencją. Może być to różnie. Fajnie by było, gdyby instytucje co jakiś czas organizowały np. hackathony i publikowały dane, na których można poćwiczyć.

Tutaj myślę bardziej pod kątem osób, które uczą się analizy danych. Bardzo fajny zestaw danych ostatnio opublikował Narodowy Fundusz Zdrowia, gdzie były informacje o zachorowaniach na jakiś rodzaj raka. Dane o pacjentach i o tym, jakie leki biorą.

Koleżanka napisała wpis gościnny na ten temat. Sam tego nie pisałem, więc nie pamiętam dokładnie zestawu danych, ale były one w ciekawy sposób zanonimizowane. To też jest jakiś sposób na to, żeby dana firma pokazała swoje dane nie odsłaniając wszystkiego. Dane z NFZ były w jednej części z 2 lat, a w drugiej części dotyczącej już osób – z 2 kolejnych lat, więc te dwa okresy nie zazębiały się. To teoretycznie uniemożliwiało sprawdzenie, z którego miejsca w kraju są pacjenci i jakie biorą leki. Już o dotarciu do konkretnej osoby nie mówiąc.

Trzymam kciuki w takim razie, żeby czytały nas również osoby decyzyjne, które mają wpływ na to, żeby te dane zostały udostępnione. Tak naprawdę nie chodzi o to, żeby dołożyć kolejną pracę. Wbrew pozorom taka analiza przygotowana przez ludzi, którzy po prostu z ciekawości, po pracy, w weekendy mogą coś przeanalizować i pokazać, jak można to jeszcze bardziej usprawnić. To będzie przestrzeń do poprawy i usprawnienia czegoś. 

Dzięki wielkie Łukaszu za dzisiejszą rozmowę i życzę Ci dużo ciekawych postów na Twoim blogu. Do zobaczenia, do usłyszenia.

Dzięki serdeczne. Miło było porozmawiać z Tobą, Vladimirze. Mam nadzieję, że to nie ostatni raz, kiedy się spotykamy.

Jak wspomniałem, blog Łukasza znalazłem już kilka lat temu. Poznaliśmy się również na żywo też już kilka lat temu. Łukasz sprawia na mnie bardzo pozytywne wrażenie, bo ma dość specyficzny pogląd na życie, dość specyficznie komentuje różne zjawiska, ma również ciekawe poczucie humoru, które warto umieć zrozumieć. Też z tego powodu obserwuje go na fanpage’u i różne inne komunikaty, które gdzieś wrzuca. Bardzo się cieszę, że mieliśmy okazję porozmawiać.

Nie jestem pewny, czy udało się pokazać się w 100% głębokość myśli, jeżeli chodzi o Łukasza, bo on jest człowiekiem skromnym. Polecam sprawdzić jego blog. To naprawdę robi wrażenie, jaki wysiłek wkłada i jakie ma podejście, jeżeli chodzi o analizę danych i wizualizację, wyciąganie odpowiednich wniosków. 

Pamiętam jak w jednej z rozmów, Łukasz powiedział, że jeżeli chodzi o wyciąganie wniosków z wykresów, to jedną z trudniejszych rzeczy jest (w trakcie tworzenia postów) to, że jak patrzysz na wykres, to już wiadomo, o co chodzi. Po co to jeszcze wysyłać?

No właśnie. Ale to nie jest takie oczywiste dla wszystkich. Warto powiedzieć, że czym bardziej wykres staje się oczywisty, tym lepiej te wnioski się wyciąga. Jeszcze taką ciekawostkę Ci zdradzę – Łukasz przede wszystkim używał język R (o to zapomniałem go zapytać), ale widzę, że ostatni post już się pojawia też w języku Python. Nie wiem, co to oznacza w praktyce, ale niech to będzie taka mała zagadka.

To tyle na dzisiaj. Dziękuję Ci bardzo za wspólnie spędzony czas. Do zobaczenia, do usłyszenia, do przeczytania. 

Pamiętaj, 14 marca widzimy się na zjeździe słuchaczy i czytelników Biznes Myśli.

Od 2013 roku zacząłem pracować z uczeniem maszynowym (od strony praktycznej). W 2015 założyłem inicjatywę DataWorkshop. Pomagać ludziom zaczać stosować uczenie maszynow w praktyce. W 2017 zacząłem nagrywać podcast BiznesMyśli. Jestem perfekcjonistą w sercu i pragmatykiem z nawyku. Lubię podróżować.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *