Praca na stanowisku DS/MLE

Data Science Praca
2022-02-12

W ostatnim czasie dość często dostaję pytanie, co trzeba zrobić żeby dostać się na stanowisko juniorskie w dziedzinie uczenia maszynowego. Odpowiedź, wbrew wszelkim pozorom, nie jest wcale oczywista. W niniejszym artykule postaram się zobrazować, na czym polega praca oraz przytoczę kilka punktów, które moim (bardzo subiektywnym) zdaniem są „must have”, żeby stać się Data Scientist (DS) czy też Machine Learning Engineer (MLE). Nie oznacza to, że wymienione umiejętności zagwarantują pracę.

Będę pisać o obu tych zawodach, ponieważ z moich obserwacji rynku pracy wynika, że nazwy te bardzo często stosuje się zamiennie. Teoretycznie powinny się one różnić i osoba na stanowisku MLE powinna zdecydowanie bardziej znać się na metodach uczenia maszynowego, programowaniu czy wdrażaniu na produkcję. Z drugiej strony osoba na stanowisku DS również powinna ogarniać metody uczenia maszynowego i programowanie, jednak w mniejszym stopniu niż MLE oraz powinna mieć więcej wiedzy związanej z ogólną analizą danych i statystyką. W praktyce jednak za wiele się nie różnią od siebie te zawody.

Przypomnę, że umiejętności o których będę pisać dotyczą stanowisk juniorskich i do tego są to moje subiektywne spostrzeżenia, które nie są żadnym wyznacznikiem, a raczej sugestią na co należy zwrócić uwagę zanim zaczniemy się ubiegać o pracę. Chciałabym też zaznaczyć, że kolejność w jakiej wypisuję umiejętności jest przypadkowa. Uważam, że one wszystkie są równie ważne, a jeśli nie to wyraźnie jest to zaznaczone w tekście.

Czym właściwie zajmuje się DS/MLE

Będąc osobą na takim stanowisku, nasze umiejętności zahaczają o naprawdę wiele dziedzin. Musimy mieć jakieś podstawy programowania, wiedzę z zakresu uczenia maszynowego, umysł analityczny (określenie, które nie jest ściśle określone, ale powiązałabym je z umiejętnością logicznego myślenia i wyciągania wniosków).

Wymienione dotychczas cechy to typowe umiejętności twarde. Okazuje się, że umiejętności miękkie również są niezbędne, ponieważ zawsze nadchodzi moment, gdy musimy pokazać klientowi wyniki. Często są to osoby nietechniczne, które chcą mieć klarowną informację – zobaczyć rozwiązanie problemu bez wchodzenia w szczegóły. Wówczas musimy przygotować a potem przedstawić prezentację wyników. Dlatego warto być oswojonym z mówieniem do publiczności (tu zazwyczaj ta publika nie jest zbyt duża).

Więc co właściwie robi w pracy DS/MLE?

Najpierw otrzymuje problem oraz dane, z których będzie korzystać. Następnie ma czas (kilka dni/tygodni) na dogłębne zrozumienie problemu, zapoznanie się z danymi, sprawdzenie ich kompletności oraz wstępną analizę i ewentualny preprocessing (dane mogą być np. w innej postaci niż oczekiwaliśmy albo z brakami) – bez dobrych danych nie będzie dobrego modelu.

Gdy już mamy to za sobą,  przystępujemy do rozwiązania problemu. Musimy zastanowić się jak do niego podejść. Warto jest sprawdzić, czy ktoś kiedyś rozwiązywał już podobny problem – nie ma sensu tworzyć od zera czegoś co istnieje i sprawdza się dobrze. Często wiążę się to z przeszukiwaniem internetu i czytaniem artykułów naukowych. Zdecydowanie musimy się nastawić na robienie tego po angielsku.

Czasami część rozwiązania jest wspierana takimi gotowcami, czasami doucza się na naszych danych modele, a czasami tworzy się wszystko od podstaw – wszystko zależy od problemu z jakim musimy się zmierzyć. W kolejnym kroku modele należy nauczyć, dostroić parametry i przetestować. Zazwyczaj mamy z góry określoną dokładność modelu, jaką chcemy osiągnąć. Czasem uda się to dość szybko, a innym razem testuje się kilka a nawet kilkanaście dni zanim otrzyma się pożądany wynik. Zazwyczaj jest to kwestia testowania i dostrajania wielu modeli zanim któryś uzna się za właściwy.

Gdy w końcu model uznamy za wystarczająco dobry, implementuje się go na produkcję (Tu brzmi to pięknie – w praktyce trwa to tygodniami albo i miesiącami zanim przejdziemy od surowych danych do modelu gotowego do wdrożenia). Tu zaznaczę, że spotkałam się z dwoma podejściami: albo my implementujemy rozwiązanie, albo przekazujemy je komuś.

1. Języki programowania

Tak jak wspominaliśmy wcześniej – podstawy programowania są niezbędne. Najbardziej popularne języki wśród osób z branży to Python i R. Trudno się dziwić ich popularności – są darmowe i do tego zawierają mnóstwo bibliotek przydatnych w analizie danych, uczeniu modeli, wizualizacji i wszystkich innych czynnościach wykonywanych przez DS/MLE. Znajomość (przynajmniej podstawowa) SQL jest równie ważna, bo czasami nasze dane otrzymamy w postaci bazy danych, a więc konieczne będzie np. łączenie tabel.

Osobiście uważam, że najważniejsza jest znajomość Pythona i SQL, a sam R to raczej „nice to have” (zwłaszcza, że powoli odchodzi do lamusa i coraz więcej firm nawet jak ma projekty napisane w R, przepisuje je na Pythona). Oczywiście są firmy, które wymagają tylko R albo jest im obojętne czy będzie to R czy Python. Warto jednak podkreślić wzrost popularności Pythona w ostatnich latach. Co więcej, jak wsześniej wspomniałam – ogromna liczba projektów jest przepisywana aktualnie z R na Pythona.

Kolejny argument przemawiający za Pythonem jest jego uniwersalność. Jeżeli w pewnym momencie naszego życia uznamy, że te wszystkie modele to nie nasza bajka, to znając Pythona, możemy z łatwością przebranżowić się na inną dziedzinę programowania. Nawet jeśli zmienimy język programowania, to będzie nam wiele łatwiej. Dlatego też uważam, że jednak Python jest ważniejszy. Pisząc o znajomości języka nie chodzi o to, że mamy być ekspertami czy coś, mamy znać podstawy języka i znać biblioteki wykorzystywane w pracy. Na początek tyle wystarczy. Później im lepiej znamy język, tym lepiej dla nas (i naszej kieszeni). Na pewnym poziomie bardzo istotne zaczynają być kwestie tego, aby nasz kod był czysty i w reprodukowalny w łatwy sposób.

Wróćmy to tego co na początek. W przypadku Pythona najważniejsze biblioteki to:

  • Numpy
  • Pandas
  • Scikit-Learn
  • Matplotlib/Seaborn
  • Keras/Tensorflow/PyTorch

2. Statystyka i wizualizacja

Wiele osób uważa, że znajomość matematyki jest niezbędna – otóż TO ZALEŻY. Zależy to od tego co właściwie będziemy robić w naszej pracy. Pewne podstawy warto znać. Dobrze mieć przynajmniej podstawową wiedzę z zakresu algebry i rachunku prawdopodobieństwa, ale o ile nie będziemy bardzo mocno zaangażowani w research, to nie musimy mieć bardzo dużej wiedzy matematycznej. Jednak statystyka sama w sobie może już być przydatna.

W takiej pracy zdecydowanie musimy rozróżniać i rozumieć różnicę np. pomiędzy rozkładem ciągłym a dyskretnym (jeśli chcesz zrozumieć różnicę zajrzyj tutaj). Zdecydowanie musimy rozumieć statystykę opisową – m.in. średnia, mediana, odchylenie standardowe czy kwantyle to chleb powszedni. Nie obejdziemy się również bez zrozumienia zależności pomiędzy danymi. Wszystko o czym powiedziałam wyżej wiążę się z umiejętnością wizualizacji danych. Bardzo często w takiej pracy będziemy musieli kontaktować się z biznesem. To są osoby, które często nie mają bardzo dużej wiedzy statystycznej, więc będziemy musieli umieć pokazać nasze wyniki i wnioski, co oczywiście najłatwiej można zrobić za pomocą różnego rodzaju wykresów. Takie wykresy możemy sobie stworzyć np. za pomocą biblioteki matplotlib lub seaborn.

3. Algorytmy uczenia maszynowego

No i w końcu chyba najważniejszy punkt – algorytmy! Czy masz znać je wszystkie? Oczywiście nie, bo algorytmów jest niezliczona ilość a z każdym dniem tylko ich przybywa. Musimy jednak znać podstawy, a już w nich istnieje mnóstwo odnóży. Główny podział to uczenie nadzorowane i nienadzorowane (jest jeszcze semi-nadzorowane i uczenie przez wzmacnianie, ale może nie wszystko naraz). Oczywiście musimy ROZUMIEĆ różnicę między algorytmami nadzorowanymi i nienadzorowanymi. Podkreślam, że chodzi o rozumienie, a nie uczenie się na pamięć definicji, bo nie w tym rzecz. 

Wśród algorytmów nadzorowanych musimy umieć rozróżnić klasyfikację od regresji. Oczywiście nie samą teorią żyje człowiek, więc dobrze by było znać po kilka (albo chociaż po jednym) algorytmie z każdego typu, umieć to zaimplementować i przede wszystkim umieć to zastosować w praktyce, czyli jeżeli ktoś postawi przed nami problem, to my mamy pewną wizję czego i dlaczego należy użyć.

Jaką drogę obrać?

Dróg do nauki jest wiele. Na pewno warto mieć studia (nie jest to wymóg, ale jest łatwiej, bo np. większość korpo nie przyjmie nas bez tego). Wspominam o tym, bo właśnie tak jak w większości zawodów – najtrudniej jest znaleźć pierwszą pracę. Mając studia lub będąc w ich trakcie mamy przewagę taką, że o wiele łatwiej będzie nam “załapać się” w naszej pierwszej pracy. Zwłaszcza, że często różne firmy ściśle współpracują z kołami naukowymi.

Oczywiście to nie jest tak, że bez studiów się nie da, jednak z moich obserwacji wynika, że są one pożądane. Przeglądając oferty o pracę najczęściej widzę oczekiwane wykształcenie – magister w jedym z STEM (science, technology, engineering, and mathematics). Niektóre firmy oczekują nawet doktoratu (lub jest „nice to have”). Jest to jedna z niewielu dziedzin, gdzie doktorat może być przydatny pracując w biznesie. STEM jest często pożądane, ale będąc po innych studiach (nawet humanistycznych!), możesz mieć spore szanse o ile masz wymagane umiejętności. Powiem więcej, czasami osoby to nietechnicznych studiach są nawet bardziej pożadane. Dzieje się tak dlatego, że warto mieć w zespole osobę, która ma wiedzę domenową, czego przeciętny DS/MLE zazwyczaj nie ma.

Jeżeli chodzi o same umiejętności twarde, które musimy zdobyć, to możemy:

  • uczyć się “na własną rękę” z pomocą internetu (jest bardzo dużo darmowych/tanich kursów na stronach takich jak udemy.com, coursera.com)
  • skorzystać z pomocy bootcampu lub mentora (Zajrzyj w zakładkę współpraca!)
  • iść na studia związane z data science, informatyką, matematyką stosowaną

Trudno mi powiedzieć co będzie najlepszym wyborem. Jest to kwestia bardzo indywidualna. Niezależnie od tego, którą drogą  podążymy musimy mieć dużo samozaparcia w sobie, bo jak to z nauką czegokolwiek, trzeba poświęcić temu wiele czasu. 

Na koniec

Pisząc to mam poczucie, że pominęłam milion ważnych rzeczy. I pewnie mam rację, bo temat jest tak szeroki, że moglibyśmy sobie cały dzień dyskutować o tym jak zacząć. Jednak nie w tym rzecz, a celem tego wpisu jest naprowadzenie osób początkujących albo rozważających taką ścieżkę kariery na to jak do tego podejść oraz pokazanie co czeka nas w zawodzie DS/MLE. 

Dziękuję, że tu jesteś! 😊

guest
3 komentarzy
Najnowsze
Najstarsze Najczęściej oceniane
Zobacz wszystkie komentarze
Fryderyka
Gość
Fryderyka
9 miesięcy temu

Bardzo przydatny materiał! Za niedługo będę wchodzić na rynek pracy i przyznam, że bardzo brakowało mi takiego konkretnego podsumowania na to co tak naprawdę muszę umieć jeżeli chcę iść w kierunku Data Science.

Szymon
Gość
Szymon
9 miesięcy temu

Cool materiał. Ja jeszcze dopowiem że udało mi się 'wkręcić’ w analizę danych, i to z niej chce brnąć w szeroko rozumiane data science. Sam próg wejścia w branże przez takie stanowisko jest niższy, no a dużo się można nauczyć :))

Ostatnia edycja: 9 miesięcy temu przez: Szymon
Bartek
Gość
Bartek
9 miesięcy temu

Super materiał dla osób, które chcą rozpocząć przygodę z data science!