Data Analytics, Data Science, Machine Learning – co wybrać?
Mnóstwo ambitnych, aktywnych ludzi z branży IT deklaruje chęć zajmowania się „Data Science” lub „Data Analytics”, a nawet „Machine Learning”. To aktualnie bardzo modne pojęcia i pewnie wiele osób skieruje się właśnie na taką ścieżkę rozwoju kariery. Dlatego warto dowiedzieć się, co one znaczą i jak wygląda praca na stanowiskach z nimi związanych.
Rafał Kraik. Specjalizuje się w programowaniu, bazach danych, analizie danych, automatyzacji i projektowaniu rozwiązań informatycznych. Z racji wykształcenia nie unika matematyki. Trener profesjonalnych szkoleń IT w formie tradycyjnej i online. Pracował/pracuje/prowadził szkolenia dla takich firm i instytucji jak ING, Intel, Cadbury, Bank PeKaO, Volvo, UPC, ZUS, Poczta Polska i wiele innych.
Zacznijmy od tego, jak należy rozumieć pojęcia Data Science i Data Analytics, ponieważ bywają błędnie rozpoznawane, a jeśli dodać do nich Machine Learning, to rzeczywiście można mieć pewne wątpliwości, co jest czym.
Spis treści
Data Analytics
Data Analytics zajmuje się analizą istniejących danych (to ważne!), a tych obecnie przybywa w astronomicznych prędkościach. Niestety dane pochodzą z różnych źródeł, posiadają różne formaty i są różnej jakości. Stąd też spora część pracy analitycznej zaczyna się jeszcze przed właściwą analizą! Jej celem jest wykrywanie prostych zależności, które między poszczególnymi danymi występują oraz zaprezentowanie tej informacji w taki sposób, aby były czytelne dla biznesu. To właśnie biznes jest głównym odbiorcą przetworzonych danych, bo dobra znajomość zależności między zdarzeniami biznesowymi pozwala je efektywnie wykorzystać i dzięki temu odnosić sukcesy biznesowe, jakiekolwiek by one nie były, bo przecież nie tylko o sukcesach finansowych mowa.
Badać można zależność skutków leczenia od zastosowanej terapii, częstość występowania skutków ubocznych podawanych leków, albo bezpieczeństwo pojazdów w zależności od wykorzystanych komponentów i technologii. Można nawet przeprowadzać humanistyczne studia dotyczące zależności poczucia szczęścia od stanu posiadania itp. Znając takie zależności, można następnie podejmować decyzje, licząc na to, że firma więcej zarobi, lub że wyleczona zostanie choroba uznawana za nieuleczalną, samoloty będą bezpieczniejsze, a ludzie szczęśliwsi. To podejmowanie decyzji jest już poza gestią analityka danych. Udokumentowanie zależności i ich zaprezentowanie kończy jego rolę, choć nie bagatelizujmy tego zajęcia. Biorąc pod uwagę natłok danych i często ich słabą jakość – przetworzenie danych, wykrycie zależności i jej opisanie, to już naprawdę dużo.
Data Science
Tymczasem Data Science to pojęcie szersze, które jest zbudowane w oparciu o Data Analytics, ale które wychodzi do przodu, w przyszłość, w bardziej aktywne odnajdowanie zależności, kierowanie procesem, który na tych zależnościach jest zbudowany. Specjalista zajmujący się Data Science będzie musiał w zdecydowanie większym stopniu rozumieć dane. Co ciekawe, do dobrego ich zrozumienia nie wystarczy tylko znajomość IT. Chcesz wydajnie opisywać to co się dzieje na giełdzie, chcesz doradzić jak zmienić proces produkcyjny, albo pomóc wygrać wybory – musisz wykazać się znajomością tych właśnie dziedzin. Bardzo ważne stają się też umiejętności matematyczne i statystyczne. Właśnie tutaj najbardziej widoczna staje się różnica między Data Analytics a Data Science.
W Data Science do odnajdowania zależności, które nierzadko są w danych dobrze ukryte, zostaną dodatkowo zastosowane metody typowo naukowe. Zdarza się, że programista aplikacji biznesowych zastanawia się po co właściwie uczył się w swoim życiu zaawansowanej matematyki. Przecież do stworzenia aplikacji księgowej, magazynowej, obsługi sklepu internetowego wystarczy… znajomość dodawania, odejmowania, czasami dzielenia i działań na procentach. A po co cała reszta wyższej matematyki? Takie pytania nie powinny dręczyć specjalisty Data Science. Wariancja, kowariancja, średnia, mediana, kwantyl, odchylenie standardowe, błąd średniokwadratowy – to pojęcia, którymi musi się posługiwać na co dzień. To pewnie przesada, ale Data Scientist, to trochę „człowiek renesansu”, znający kilka różnych dziedzin.
Z jednej strony musi znać branżę IT – bo Data Scientist musi być w stanie programowo rozwiązywać swoje problemy. Z drugiej strony znać matematykę i statystykę, bo rozumiejąc pojęcia statystyczne może lepiej opisywać dane i aktywnie poszukiwać niekiedy ukrytych zależności. To właśnie te elementy sprawiają, że Data Analyst staje się Data Scientist.
Machine Learning
Mamy jeszcze trzecie pojęcie, które znajduje się pod parasolem Data Science. Jest to Machine Learning Specialist. Otóż kiedy dane są już dokładnie zbadane, można pójść jeszcze jeden krok do przodu. Można zadać pytanie o takie dane, które w tej chwili jeszcze nie istnieją. Tym właśnie zajmuje się Machine Learning. Jednak nie o samo przewidywanie przyszłości tutaj chodzi. Jeśli zapytam o to jakie szkody wyrządzi kamień rzucony w okno, to nie jest to raczej pytanie, na które należy odpowiadać stosując machine learning. O wiele lepsze będzie tu zastosowanie reguł fizycznych, które przy znanej masie kamienia, gęstości szyby, sile rzutu itp. dokładnie odpowie na pytanie co się stanie.
Machine Learning to również nie przewidywanie pogody – tutaj stosuje się specyficzne algorytmy, które jednak potrafią rozwiązać tylko jeden specyficzny problem. Machine Learning buduje swoje algorytmy pozwalające na odgadywanie nieznanych wartości w oparciu o dane, które już istnieją. Korzystając z informacji zwróconych przez Data Science można zbudować model zależności, pozwalający z pewnym prawdopodobieństwem przewidywać wyniki dla nowych napływających danych. W Machine Learning mamy do czynienia z tym, co zostało odkryte w etapie pracy Data Scientist, ale zapominamy o samych danych, pozostają jedynie zależności, które całościowo nazywa się modelem.
Przykład z krakowskiego podwórka
Prześledźmy to na przykładzie. Ostatnimi czasy pojawiła się w Internecie publikacja dotycząca badania opóźnień tramwajów w Krakowie (https://aczepielik.github.io/post/kraktram/). Jak to jest z tramwajami każdy mniej więcej wie. Można się domyślać, że w godzinach szczytu opóźnienia są największe, można zgadywać, czy tramwaj jest w stanie nadrobić spóźnienie, można nawet próbować typować miejsca na mapie, gdzie dochodzi do największych opóźnień. Praca analityka badającego opóźnienia tramwajów w Krakowie rozpoczęła się od pobrania danych z serwisu zsynchronizowanego z wyświetlaczami na przystankach. Trzeba przyznać, że już ten etap jest dość złożony technicznie.
Wynika to chociażby z tego, że na stronie zakładu komunikacji nie znajdziemy gotowego pliku z historią przejazdów tramwajów. Każdy typ informacji, jak np. dane pojazdów, numery i nazwy przystanków, spodziewane i niedawne odjazdy pojazdów są zwracane przez dedykowany do tego web service. Dane te trzeba regularnie pobierać, oczyszczać i zapisywać. Jak podaje autor opracowania jedna runda zapytań trwała około 20 sekund, po której należało uruchomić następną rundę. Nie każdy dałby sobie z tym radę.
Kolejny etap to wstępne przeanalizowanie zebranych informacji: jakie mamy linie, ile przystanków ma każda z nich, jak często wyjeżdżają tramwaje, ile wynosi ich opóźnienie itp. Znowu praca wcale nie jest łatwa, bo trzeba przecież wyraźnie określić co to jest opóźnienie. Tramwaj mógł się po drodze zepsuć i wcale nie dotrze na przystanek. Co z tym zrobić? W każdym razie praca analityka skończyłaby się prawdopodobnie na etapie stworzenia odpowiednich zestawień, bez wywodzenia spektakularnych wniosków.
Autor analizy poszedł jednak krok dalej i do zebranych danych zastosował analizy statystyczne, a ze względu na stopień ich skomplikowania wielokrotnie posługiwał się wykresami, które pozwalały obserwować wykrywane nowe zależności. I co się okazało? Udało się ustalić godziny największych spóźnień, najbardziej strategiczne przystanki, a nawet w jakim stopniu tramwaje są w stanie nadrobić opóźnienia! A to wszystko poparte wzorami, obliczeniami i zilustrowane wykresami. Taka analiza zdecydowanie wykracza już poza zwykłą analizę – to już z całą pewnością Data Science!
Ponieważ autorowi udało się matematycznie opisać ruch tramwajowy, to właściwie już niewiele brakuje, żeby ten model sam potrafił przewidzieć z jakim opóźnieniem dotrze tramwaj wyruszający ze stacji A do stacji B, jeśli miałoby to miejsce w przyszłą środę o 10:00. Gdyby tylko istniała możliwość wykonywania takich prognoz, to mielibyśmy już model Machine Learning.
Każda przeprowadzona analiza mogłaby być chyba bez końca pogłębiana. Jaki wpływ na opóźnienie ma ilość podróżujących pasażerów, jak mocny wpływ na ruch tramwajowy ma ruch samochodowy itp. Co jednak ciekawe, badania autora zostały skomentowane przez czytelników, którzy znają prawdopodobnie transport tramwajowy bardziej od podszewki. Zasugerowali kolejne zależności, których autor mógł nie być świadomy, jak np. długość składu.
Wymagania
Wiedząc, co opisują te pojęcia, możemy dalej zastanowić się nad umiejętnościami potrzebnymi w każdej z tych dziedzin.
Analityk pracujący na istniejących danych musi umieć nimi operować. W przypadku mniejszych zbiorów danych, może pracować nawet z Excelem, jednak jako narzędzie graficzne, w miarę analizowania coraz to obszerniejszych zbiorów danych, stanie się problemem a nie pomocą. Zważając, że dane trzeba coraz częściej pobierać z różnych źródeł danych przydaje się znajomość SQL, umiejętność korzystania z XML, JSON, CSV, webservice, PIG, HIVE i wielu innych – wszystko zależy skąd są pobierane dane.
Druga kwestia to narzędzia, które pozwalają na tych danych operować. I tu do dyspozycji pozostają dwaj główni liderzy – Python i język R. Oba potrafią połączyć się do różnorodnych źródeł danych i oba potrafią je przetwarzać. Zadziwiające jest, jak bardzo analiza danych wykonywana w Python z modułem PANDAS jest podobna do operacji wykonywanych w Excelu! Dzięki pobraniu właściwych danych, można je następnie zinterpretować i przedstawić w postaci wykresów, które pozwalają zrozumieć dane nawet osobom nietechnicznym.
Każda z wymienionych wcześniej umiejętności jest potrzebna w zaawansowanym Data Science. Wydaje się, że do dogłębnego przeanalizowania zależności w danych potrzebna jest zdecydowanie bardziej znajomość programowania. Nawiązując do przykładu z analizą ruchu tramwajowego, samo pobranie danych i ich wstępne przetworzenie wymagało doświadczenia w kilku technologiach. Dodatkowo właściwe zinterpretowanie wyników wymagało sięgnięcia do pojęć z matematyki i statystyki. Odkrywając poszczególne zależności analityk musi sobie stale zadawać pytanie „dlaczego?”. Nierzadko odpowiedzi tej nie znajdzie, póki nie zdobędzie rzeczowej informacji z rzeczywistego świata, który jest poddawany analizie. To, że tramwaj spóźnia się na określonym przystanku o określonej godzinie może być spowodowane np. remontem torowiska, o którym zebrane dane milczą – a to tylko prosty przykład dotyczący komunikacji, na który może się wypowiedzieć praktycznie każdy pasażer. A co w przypadku analiz dotyczących działania leku? Czy analityk nie będzie potrzebował wiedzy lub wsparcia w zakresie medycyny? Oczywiście, że tak.
O ile sam proces zebrania danych lub analizy to w większości praca z narzędziami informatycznymi, o tyle samo „uprawianie nauki” na tych danych to już typowa praca kreatywna i odkrywcza. Na szczęście wiele statystycznych metod oraz narzędzi wizualizujących wyniki może być tworzonych w wyspecjalizowanych do tego celu narzędziach. W wielu przypadkach są one z racji swojego zaawansowania płatne. Istnieją jednak biblioteki obsługiwane z poziomu Pythona lub R, które pozwalają efektywnie badać dane.
Często przedstawiając taki punkt widzenia zdarza się usłyszeć, że przecież języki Python i R są językami skryptowymi, interpretowanymi, a co za tym idzie wcale nie najbardziej wydajnymi, tymczasem naukowe badanie danych wymaga super wydajnych obliczeń. Coś tutaj nie gra – czy Python i R nie są przypadkiem tylko modą wśród analityków? Zarówno Python jak i R w tych zastosowaniach to jedynie interfejs dla wyspecjalizowanych i zoptymalizowanych bibliotek matematycznych stworzonych i skompilowanych w językach Fortran lub C. Kiedy w Pythonie wykonujesz mnożenie wielowymiarowych macierzy, to operacja taka będzie wykonywana przez moduł NumPy – zoptymalizowany do takich działań. Nie ma więc obaw o to, że coś zostanie wykonane amatorsko. Biblioteki są tworzone i testowane nie tylko przez wąskie grono zapalonych naukowców. Korzysta z nich praktycznie cały świat od uczelni po czołowych graczy rynku IT.
No i teraz wisienka na torcie – Machine Learning. Do całego wcześniej opisanego zestawu umiejętności i narzędzi trzeba dorzucić specjalistyczną wiedzę dotyczącą budowania modułów predykcyjnych oraz powiązane z nimi moduły. Co ciekawe baza cały czas pozostaje ta sama: Python, R lub dedykowane płatne narzędzia. Bez dobrych umiejętności programistycznych i bez znajomości statystyki dobry model danych raczej nie powstanie. Machine Learning jest jedną z najmłodszych dziedzin w zakresie pracy z danymi. Algorytmy uczące skupiają się na takim opisaniu danych, że… właściwie powstają gotowe wzory, do których należy wstawić nowe, w chwili obecnej jeszcze nie znane dane, a algorytm w oparciu o nabyte wcześniej doświadczenia wyliczy z pewnym prawdopodobieństwem wynikowe dane. Istnieją różne metody na zbudowanie struktur, które potrafią przewidywać jeszcze nieznane wyniki, a te najbardziej popularne to regresja liniowa (Linear Regression), metody gradientowe (Gradient Descent), drzewa decyzyjne (Decision Tree), las losowy (Random Forest), metoda najbliższych sąsiadów (KNN K- Nearest Neighbors) i wiele innych. To jest właśnie ta szczegółowa wiedza, którą musi poznać adept Machine Learning.
Większość z tych metod jest zaimplementowana w modułach, które wystarczy dołączyć do projektów Python lub R. Korzystanie z modułów nie jest skomplikowane, ale to co się dzieje w środku – to naprawdę czysta matematyka i właśnie tą matematykę trzeba dobrze rozumieć, aby do konkretnych problemów stosować odpowiednie metody. Po prostu – nie wszystko da się naprawić młotkiem, za dobór właściwych metod odpowiada specjalista Machine Learning!
Podsumowanie
Mamy jeszcze jeden etap wtajemniczenia w analizę danych i Machine Learning. Każdy z nas słyszał przecież o sztucznej inteligencji (Artificial Intelligence – AI). Po części Machine Learning to już pierwszy krok w stronę AI, jednak AI może więcej. AI to systemy podejmujące samodzielną decyzję, uczące się nie tylko w oparciu o specyficzne próbki danych. AI są bardziej wszechstronne i chociaż ciągle pracują pod kontrolą człowieka, kto wie, co będzie dalej. W tym przypadku nie chodzi już tylko o biznes i pieniądze. Nad AI pracuje wojsko, ale pewnie też terroryści. AI jest przydatne dla rządów, bo pomoże utrzymać spokój i porządek, ale i dla cyber przestępców. AI poprowadzi dla nas samochód, podejmie decyzję lub zarekomenduje jak leczyć człowieka (właściwie IBM Watson już to robi). AI prawdopodobnie zmieni życie każdego z nas.
Wielu ludzi straci pracę, bo zastąpią ich roboty, ale… ktoś te roboty musi tworzyć, nadzorować, utrzymywać i naprawiać. To właśnie tam powstaną miejsca pracy, których jeszcze nie znamy! Jeśli nie wydarzy się coś nadzwyczajnego w rodzaju upadku wielkiego meteorytu na Ziemię, to chyba właśnie w Data Science będzie sporo pracy do zrobienia.
Zdjęcie główne artykułu pochodzi z unsplash.com.