Data Science – termin niezmiernie ostatnio popularny. Mamy stanowiska pracy związane z data science, kierunki studiów, książki, kursy i konferencje. Zdarzają się nawet firmy, które mają w nazwie data science. Można mieć wrażenie, że ta nazwa i temat, który reprezentuje wpada w definicję Hype. Ale czy na pewno?
Historia
Zobaczmy jak wygląda popularność hasła data science w Google:
Widać wyraźnie, że popularność tego hasła systematycznie rośnie i w ciągu 5 lat wrosła około 5 razy. Nie znam się na analizowaniu trendów internetowych, ale nie wygląda to na chwilową modę. Może więc faktycznie coś jest na rzeczy i nie jest to tylko Hype?
Wikipedia podaje, że zwrot data science po raz pierwszy został użyty już w roku 1960. W tamtych czasach był używany jako alternatywa dla computer science, szczególnie w kontekście nowoczesnych metod przetwarzania danych. Prawdziwy boom na używanie tego zwrotu i zmianę jego znaczenia możemy zauważyć w roku 2012. Wtedy opublikowany został artykułu Data Scientist: The Sexiest Job of the 21st Century w Harvard Business Review. Wtedy też mniej więcej do powszechnego używania przeniknął zwrot data scientist jako osoby zajmującej się data science.
W jaki więc sposób zmieniło się znaczenie tego hasła? Pierwotnie osoba zajmująca się danymi pracowała na mniej więcej obrobionych danych i dokonywała ogólnie zdefiniowanych operacji. Była w zasadzie programistą i raczej nie musiała zajmować się niczym więcej niż tworzeniem sprawnych programów. Z czasem jednak okazało się, że danych jest coraz więcej i reprezentują coraz lepiej kontekst biznesowy. Ale nie udaje się ich łatwo przekuć na rozwiązanie problemu. Zaczęto więc zlecać proste zadanie pojedynczym osobom – męczyć dane tak długo, aż zaczną się przydawać. Taki sposób pracy zahaczał często o data mining i ogólnie o tak zwane knowledge discovery.
I przez pewien czas wszyscy byli zadowoleni. Dopóki nie pojawiła się coraz większa potrzeba pracy z danymi które nie posiadały wyraźnej struktury. W tym wypadku nie dało się już po prostu usiąść i z „palca” tworzyć aplikacje wykorzystujące dane. Trzeba było zacząć sprawdzać kontekst pozyskanych danych. I trzeba było też trochę się postarać, żeby dopasować do siebie te dane.
Z czasem w wielu miejscach programiści zaczęli wpadać na coraz lepsze sposoby wykorzystywania danych do rozwiązywania różnych problemów. I przez to część z nich została wyrwana ze swoich ciepłych pokoików i zaproszona na spotkania dyrektorów. Dyrektorzy Ci chcieli jak najszybciej zacząć wykorzystywać nowe rozwiązania, w celu rozbudowania przyszłych strategii. Tacy programiści, musieli nagle nauczyć się przedstawiać dane w przystępny sposób. I tak tworzenie prezentacji zostało na stałe włączone w proces data science.
Nie można też zapomnieć o administratorach systemów informatycznych. Z dnia na dzień oprócz utrzymywania małej bazy danych na temat klientów zostali zapędzeni do ogarniania gigabajtów danych. W czasie rzeczywistym. Z i dla wielu działów.
Tak, wyobrażam sobie, wyglądała sytuacja. Może więc najlepiej byłoby podejść do tej definicji przez pryzmat współczesnych zawodów?
Umiejętności związane z Data Science
Obrazek powyżej (z artykułu na Udacity) przedstawia przykład, jak można opisać zawody związane z data science.
Według tej koncepcji mamy cztery typy zawodów i osiem typów umiejętności.
Zacznijmy od umiejętności pożądanych w kontekście data science:
- programming tools – narzędzia programistyczne. Biegłość w językach Python, R, SQL, Java i C. Docelowy poziom zależy od konkretnych zadań. W kontekście matematyczno – statystycznym, R będzie bardziej przydatny. Przy bazach danych, SQL będzie ważniejszy. Przy projektowaniu i utrzymywaniu rozwiązań big data, Java może być kluczowa. Natomiast Python bardzo dobrze przyjął się w kontekście modelowania i sieci neuronowych. Jeżeli zależy nam na szybkości i ilości używanych zasobów, C będzie kluczowe.
- data visualization and communication – wizualizacje i komunikacja. Te umiejętności są często nazwane umiejętnościami miękkimi. Osoba która je posiada, potrafi tworzyć przydatne prezentacje graficzne i przejrzyście przedstawiać problemy. Potrafi również prezentować rozwiązania w zrozumiały i przystępny sposób. Umiejętności takie są kluczowe przy współpracy z osobami, które ustalają strategię rozwoju organizacji.
- data intuition – intuicja danych. Umiejętność nieco rozmyta, mówiąca mniej więcej o spostrzeganiu okazji związanych z danymi. Chodzi tutaj o wyczucie, co można zrobić z aktualnie posiadanymi danymi i jakie dane można łatwo uzyskać. Przydatne jest też wyczucie, w co warto zainwestować w celu rozwiązania konkretnego problemu. Umiejętność raczej wynikająca z doświadczenia.
- statistics – statystyka. Jak sama nazwa wskazuje, umiejętność ta bazuje na wykorzystywaniu statystyki. Tutaj w przeciwieństwie do powyższej umiejętności, można się całkiem nieźle rozwinąć, wykorzystując podręczniki do statystyki.
- data wrangling – przetwarzanie danych. Bardzo mało danych jest w formie, która pozwala na ich natychmiastowe wykorzystanie. Mówi się wręcz, że około 4/5 czasu pracy w data science jest poświęcone na przygotowanie danych. Umiejętność sprawnego ich przekształcenia jest więc wbrew pozorom bardzo przydatna.
- machine learning – uczenie maszynowe. Uczenie maszynowe to w zadzie dziedzina wiedzy. Zajmuje się ona algorytmami pozwalającymi tworzyć programy w taki sposób, żeby były w stanie samodzielnie uczyć się reguł. Reguły te są wykorzystywane później, aby rozwiązać problem w efektywny sposób. Można powiedzieć, że taka umiejętność to odpowiedni dobór i wykorzystanie tych algorytmów w odpowiednim miejscu i czasie.
- software engineering – inżynieria oprogramowania. Ta umiejętność obejmuje wiele dziedzin związanych z projektowaniem, wdrożeniem i wytwarzaniem systemów informatycznych. Można tutaj wskazać umiejętne budowanie m.in. systemów big data. Ale pasuje tutaj również tworzenie samo-organizujących się systemów bazujących na algorytmach uczenia maszynowego. Znajomość systemów DevOps też wchodzi w zakres tej umiejętności.
- multivariable calculus and linear algebra – rachunek różniczkowy wielu zmiennych i algebra liniowa. Podobnie jak statystyka, umiejętność ta bazuje na sprawnym posługiwaniu się matematyką. Można tę umiejętność dość dobrze rozwinąć „na sucho”. Aczkolwiek bardzo dobrze jest jej się uczyć wraz z zaznajamianiem się z sieciami neuronowymi.
Zawód – Data Scientist?
Jak widać, lista umiejętności jest całkiem rozbudowana. Jednakże nikt nie oczekuje, że każda osoba zajmująca się data science będzie posiadać je na najwyższym poziomie. Okazuje się bowiem, że tak jak wspomniałem powyżej, temat można ugryźć z co najmniej czterech stron:
- data analyst – analityk danych. Osoba taka będzie umieć programować na tyle dobrze, że będzie umieć wydobyć wszystkie potrzebne jej dane. Będzie umiała dokonać ich analizy i przekuć na raporty i prezentacje. Powinna mieć trochę intuicji na temat kontekstu, w którym pracuje i umieć użyć statystyki, żeby potwierdzić swoje wnioski. Nie będzie musiała się wgłębiać w szczegóły działania systemów, których używa. I raczej nie będzie musiała budować wielu modeli predykcyjnych.
- machine learning engineer – inżynier uczenia maszynowego. Jak sama nazwa wskazuje, osoba pracująca na takim stanowisku będzie musiała znać algorytmy uczenia maszynowego. Będzie także musiała sprawnie posługiwać się matematyką. Będzie pracować z odpowiednio przygotowanymi zbiorami danych, ale w celu budowania modeli.
- data engineer – inżynier danych. W tym momencie pojawia się osoba, której głównym zadaniem będzie utrzymanie infrastruktury przyjmującej i serwującej dane. Osoba taka będzie się również zajmować przetwarzaniem danych do użytecznej postaci. W tego typu stanowiskach nie ma dużego nacisku na umiejętności matematyczne. Przydaje się jednak doświadczenie z projektowaniem systemów informatycznych.
- data scientist – badacz danych. Badacz danych jest osobą uniwersalną. Oczekuje się, że będzie znał się praktycznie na prawie wszystkim. Osoba taka cechuje się dużym doświadczeniem związanym z pracą z danymi. Powinna potrafić robić wszystko to co osoby wymienione powyżej, chociaż nie koniecznie na aż tak wysokim poziomie.
Czy taki podział jest dokładny i ostateczny? Nie, i wcale nie musi taki być. Podział jaki przedstawiłem sugeruje, że umiejętności osób zajmujących się data science mogą znacząco się od siebie różnić. Tak zdefiniowane stanowiska mają jednak ten sam cel – rozwiązać problem przy pomocy programowania, wykorzystując dane.
Czyli co to jest Data Science?
Wracając więc do głównego pytania, czym właściwie jest data science? Ja bym odpowiedział tak: data science jest zbiorem technik programowania, algorytmów, wizualizacji i prezentacji, które odpowiednio zastosowane na odpowiednich danych, pomagają rozwiązać jakiś konkretny problem. Zabrzmiało to dość ogólnie, ale mam nadzieję, że dobrze oddaje ideę data science.
A co z tłumaczeniem data science na język polski? Spotkałem się z hasłem: nauka o danych. I chyba jest to dobre tłumaczenie. Jest jeszcze nazwa zawodu data scientist, która jest tłumaczona jako: badacz danych. I to tłumaczenie też wydaje mi się rozsądne.
Drogi Czytelniku, jeśli więc chcesz pracować w data science, musisz przygotować się na dużo programowania. Dodatkowo na całkiem sporą dawkę matematyki i miksu tworzenia wykresów, prezentacji i ogólnego grzebania w danych. Dostaniesz natomiast w zamian okazję do użycia najnowszych algorytmów i technik w celu rozwiązania bardzo konkretnych problemów. I dużo satysfakcji, jeśli Ci się faktycznie to uda ;).
Super wpis!
Bardzo fajne podejście do tematu – rzetelne i odważne nazywanie rzeczy po imieniu.
Spodobał mi się zwłaszcza fragment o podzialale data scientist na różne profesje.
Dzięki!
Dzięki!
Podział ten wydaje mi się istotny, bo firmy często szukają specjalistów do konkretnej pracy, ale na fali popularności tego terminu często używają go bezrefleksyjnie. I później dają ludziom specjalizującym się w algorytmach uczenia maszynowego jakieś klastry/bazy danych do ogarnięcia albo automaty do generowania raportów. A dla początkujących właśnie nazywanie rzeczy po imieniu jeszcze szczególnie ważne, żeby się nie sparzyć na starcie.