Fundacja CODE:ME · 22 maj 2024
Data Science Survival Guide.
Odkryj tajniki algorytmów, analizy danych i poznaj strategie rekrutacyjne! O pracy Data Scientisty i tajnikach nauki i wejścia na rynek pracy opowiada Szymon Moliński – Senior Data Scientist w firmie Digitree S.A. oraz trener kursu Podstawy Data Science.
![Data Science Survival Guide.](https://shop.codeme.pl/wp-content/uploads/2024/05/DALL·E-2024-05-22-12.05.29-An-image-representing-the-early-career-of-a-Senior-Data-Scientist.-The-scene-is-set-in-a-modern-office-space-with-multiple-monitors-displaying-data-vi-1024x585.webp)
Czy początki zawsze muszą być trudne?
Od początkującego Data Scientisty wymaga się dzisiaj nie tylko umiejętności analizy danych, uczenia maszynowego i statystyki, ale także programowania i obsługiwania platform chmurowych. To z jednej strony trudność, a z drugiej szansa. Dlaczego szansa? Dlatego, że do Data Science prowadzi wiele ścieżek.
Najbardziej ułożona i najbezpieczniejsza trasa to wybór studiów Data Science albo studiów o podobnej tematyce (inżynierskich, matematycznych, ekonomicznych). Bazując na sylabusach ze studiów można też nabrać oglądu na “fundament” Data Science. To nie jest jedna droga. I po prawdzie, żaden z programów studiów nie obejmuje całej dziedziny. Inne drogi wiodące ku karierze w analizie danych wiodą przez programowanie, obsługę platform chmurowych, badania naukowe albo wiedzę dziedzinową (ekspercką) - na przykład na temat SEO. Ale jak wiemy, kariera zawodowa nie zawsze układa się poprawnie i bezpiecznie :)
Inną ścieżką są dedykowane kursy, które prowadzę (Podstawy Data Science w CODE:ME ). Od uczestników wymagana jest już podstawowa znajomość Pythona, dlatego kurs to dobra ścieżka dla osób, które już mają za sobą pierwsze doświadczenia z analizą i programowaniem. Najwięcej z kursu wyniosą osoby, które zajmują się analityką albo przetwarzaniem danych. Jeśli twoje stanowisko obejmuje żonglowanie liczbami, raportowanie, badania rynku, transmisję danych między systemami, wtedy będziesz na pewno zadowolony z poznanych treści. Podobnie, jeśli widzisz siebie w przyszłości na stanowiskach związanych z Data Science, Data Engineering, MLOps, Data Analyst.
Ja również, na początku swojej kariery, byłem przygnieciony tymi wszystkimi zagadnieniami. To jest zupełnie normalna postać rzeczy. Tego jest bardzo dużo, więc niemożliwe jest, żeby jedna osoba zrozumiała i zapamiętała wszystko.
No właśnie... Jak w ogóle to wszystko zapamiętałeś? :) Te parametry, nazwy wszystkich metod do zaimportowania, który algorytm zastosować w danym przypadku?
Tajemnicą prowadzącego jest to, że wielu rzeczy nie pamiętam, mam otwarty drugi monitor z notatkami obok. Dodatkowo cały czas się douczam, praca przy danych to też czas na uczenie się. A jest go dużo, bo oprócz programowania i narzędzi trzeba też pogłębiać wiedzę dziedzinową. Z pomocą idą też twórcy paczek do modelowania danych, prawie zawsze mamy dostępne trzy metody: .fit(), .transform() i .predict().
Czy jest jakaś skończona ilość algorytmów, z której korzysta się np. przez 90% czasu i wystarczy jak się nauczymy takiej listy na początek?
Na ten moment, Data Science w biznesie ma skończone wymagania odnośnie podstawowych języków programowania i paczek, które wykorzystuje się w pracy z danymi. Jest to Python, R i podstawy SQL. Fundamentem jest rozumienie struktur danych.
Data Science jest terminem pojemnym, dlatego teraz skoncentruję się na uczeniu maszynowym, które jest częścią Data Science. Tam stosunkowo łatwo poznać najważniejsze algorytmy używane na co dzień w biznesie.
Na start polecam przygodę z paczką scikit-learn (Python). Posiada ona świetną dokumentację, która działa jako samouczek. Poznamy w niej wiele algorytmów spośród trzech najważniejszych typów uczenia maszynowego:
- regresji (predykcyjne)
- klasyfikacji
- segmentacji
Poznamy modele do uczenia nadzorowanego i nienadzorowanego. To jest właśnie ten fundament, na którym buduje się późniejszą ekspertyzę.
Najpopularniejsze algorytmy (z nazw) to: regresja logistyczna, regresja liniowa, drzewa decyzyjne, random forest, XGBoost, K-means, K-nn, HDBSCAN, ARIMA, proste sieci neuronowe (są dostępne w Scikit-learn), PCA i SVM. Są zwykle wbudowane w każdą platformę chmurową, na przykład BigQuery, co oznacza, że są niezbędne w biznesie. Znając te algorytmy, można pójść o krok dalej, w kierunku głębokiego uczenia, a później modeli językowych i generatywnych.
Podczas kursu w CODE:ME (Podstawy Data Science) poruszamy tematy, które są pomijane na większości innych tego typu kursów. Większość typowych algorytmów które pojawiają się na kursach można już sobie "wyklikać" albo uruchomić je prosto np.: w BigQuery, albo w systemie, który od razu przetestuje dużą liczbę modeli i dobierze do nich losowe parametery (tzw. autoML).
Więc ważniejsza jest umiejętność analitycznego i krytycznego myślenia i wiedzy, gdzie można zastosować konkretny model, niż dogłębna znajomość bibliotek - na rynku pracy nie jest się konkurencyjnym przez znajomość algorytmów, które znają wszyscy inni, a przez specjalizację w konkretnej grupie algorytmów i pracę z surowymi danymi, co można pokazać, jako swoje projekty.
Kiedy w ogóle skończyć analizę i mieć pewność, że wyciągnęliśmy z tych danych wszystko co się da?
Analizę trzeba skończyć, jak uzyskało się konkretne informacje, nawet jeśli są złe. Bardzo poważnym problemem jest jakość publikacji naukowych w tym kontekście - badacze mają tendencję do wyciskania z modeli ostatnich potów i takiego sterowania parametrami, aż pobiją wyniki state-of-the-art, ale nie da się powtórzyć tych rezultatów w rzeczywistych warunkach, albo model jest tak złożony, że kompletnie nieopłacalny do wdrożenia w skali (historia z rekomenderem Netflixa). Ja też musiałem odkładać do szafki bardzo dobre, ale zbyt złożone - a przez to drogie w utrzymaniu - modele.
Kolejny problem to próby zaczarowania rzeczywistości w biznesie, i męczenie danych do momentu, kiedy przynajmniej trochę potwierdzają hipotezę. Bardzo niebezpieczny precedens.
Dlatego robi się np.: testy A/B, nigdy nie korzysta się z "najlepszego" zestawu hiperparametrów. Ale to są szczegóły, które powinny zaprzątać głowę seniorom i CTO. Więc odpowiedź na pytanie: “kiedy skończyć” jest bardzo trudna, junior ma przejść przez swój zestaw kroków i wiedzieć, co poszło dobrze, a co poszło nie tak. No i co może junior zrobić, to zawsze sprawdzić samemu wyniki, albo jakąś część z nich. Żeby później nie było wtopy na prezentacji przed klientem. Jeśli wyniki są nadspodziewanie dobre, to sprawdźmy dane wejściowe trzy razy, zrefaktoryzujmy kod raz i sprawdźmy, czy nie nadpisujemy gdzieś ważnych zmiennych, a na koniec przeglądnijmy dobrze wejście i wyjście z modelu. Nadspodziewanie dobry rezultat powinien zawsze budzić podejrzliwość.
Czego oczekuje się od juniora na rozmowie rekrutacyjnej?
W ogłoszeniu o pracę wskazuje się zwykle z jakim problemem mierzy się firma. Wtedy wymagane umiejętności powiązane są z produktem lub usługą, przykładowo:
- analiza medycznych skanów z tomografii wymaga znajomości przetwarzania obrazów i sieci głębokiego uczenia,
- optymalizacja produkcji, gdzie potrzebne będzie modelowanie szeregów czasowych,
- silniki rekomendacji, z algorytmami takimi jak faktoryzacja macierzy,
- czatboty, gdzie niezbędna jest wiedza o NLP i LLM.
Od juniora nie będzie wymagane rozwiązanie problemu, bo to nie jest zadaniem juniora, a raczej zrozumienie zadania w stopniu wystarczającym do doboru odpowiednich technik i narzędzi pracy. One zapewne też pojawią się w ogłoszeniu, przykładowo Python albo R, podstawy statystyki i wiedza domenowa (medyczna, logistyka, e-commerce). Junior musi też rozumieć czym jest ETL, jakie są metryki skuteczności modeli. Nie powinien obawiać się pracy z terminalem, bo bardzo często pracuje się na zdalnych maszynach
Wiele już pisano, jak zwrócić na siebie uwagę, ale najważniejsze jest budowanie kontaktów i bezpośrednie zapytania do osób odpowiedzialnych za rekrutację w firmach. I niezrażanie się chwilowymi trendami i modami, ani prorokami wieszczącymi koniec pracy dla programistów i Data Scientistów.
Jaką Ty miałeś początkową wiedzę, jak zaczynałeś pracować jako Data Scientist?
Kończyłem studia na politechnice, a dokładnie elektrotechnikę, więc miałem już podstawy programowania, w tym przetwarzania i analizy sygnałów. To przydało się bardzo na pierwszych etapach kariery z uczeniem maszynowym i przetwarzaniem obrazów. Programowałem przede wszystkim w C++ a eksperymentowałem w Matlab (Scilab / Octave), więc świat Pythona czekał na odkrycie.
Nie miałem uporządkowanej wiedzy na temat uczenia maszynowego, ale ta dziedzina dopiero raczkowała w biznesie, jak zaczynałem swoją karierę. Większości nowych technik douczałem się pisząc dorywczo wnioski o środki UE na badania dla firm. Sam nie wiem, czy bez tych wniosków zająłbym się uczeniem maszynowym, bo zawsze chciałem programować hardware i miałem duży opór przed nauką rzeczy które są “trendy”. Od razu uprzedzam, że samo uczenie maszynowe i nawet głębokie uczenie, nie są już “trendy” bo są wyparte przez falę zachwytu nad Generatywnymi Modelami, ale przez to firmy jasno wiedzą jakich specjalistów potrzebują i ścieżka kariery ma mniej skrzyżowań i rozwidleń.
Jak pokierować swoją nauką po kursie tak, żeby przygotować się do roli jak najlepiej. W skrócie - jak żyć?
Kiedy kończymy kurs, obojętnie czy jest to kurs Data Science czy tańca współczesnego, nie możemy przestać ćwiczyć. Takie umiejętności się zapomina i ulegają one dewaluacji. Samodzielny trening Data Science może być pasywny albo aktywny. Pasywny trening to przerabianie książek, czytanie publikacji, uczestnictwo w wykładach jako słuchacz. Aktywny trening to zadania z Kaggle’a, projekty Open Source w których naprawdę brakuje maintainer’ów, prowadzenie wykładów, pisanie bloga, próba założenia start-up’u. Obie formy treningu są ważne.
Pracę jest znaleźć trudno, nie ma co czarować rzeczywistości. Dlatego warto zadbać o networking, poznawać ludzi i firmy przez wydarzenia typu Meetup (najlepiej stacjonarne, np. coroczny hackathon Hack4Change organizowany przez CODE:ME). Chwalić się swoimi projektami na takich wydarzeniach. Zapamiętywać nowe firmy. Data Science jest używane w znacznie większej liczbie firm, niż tylko wielkie międzynarodowe korporacje, czasami zaszyte jest to jako stanowisko analityka albo business analytics. Warto również śledzić konkursy dla start-up’ów i wyjść z własnym zespołem i pomysłem, na początku nawet kilkanaście tysięcy euro robi różnicę. Kiedy mamy już pracę i sieć znajomości to możemy zidentyfikować problemy, które dałoby się rozwiązać za pomocą uczenia maszynowego. Zaproponujmy, że to rozwiążemy.
Chyba najważniejsza rada jest taka, by mieć w sobie samozaparcie i obrać jeden kierunek. Jeśli decydujemy się na uczenie maszynowe, to skupmy się na uczeniu maszynowym, a nie na kursach Prompt Engineering (kto jeszcze o tym pamięta?) bo teraz jest na to moda. Do dzisiaj specjaliści od “nudnych” analiz statystycznych nie stracili swojej pracy, mimo tego, że takie analizy miało wyprzeć uczenie maszynowe, później deep learning, a teraz GenAI.
Mam nadzieję, że ta wiedza pomoże Ci w odkrywaniu świata Data Science. Powodzenia!
Chcesz wkroczyć w fascynujący świat analizy danych? Kurs zdalny "Podstawy Data Science" jest właśnie dla Ciebie! Bez względu na to, czy dopiero zaczynasz swoją przygodę z analizą danych, czy pracujesz już w IT i chcesz rozszerzyć wiedzę, ten kurs przyniesie Ci niezbędne umiejętności do zrozumienia i praktycznego wykorzystania analizy danych.
Dzięki zdobytym umiejętnościom otworzysz sobie drzwi do fascynującej kariery, gdzie dane są kluczem do innowacji i przyszłości. Gotowy, by odkryć nowe możliwości? Sprawdź kurs >> "Podstawy Data Science" już teraz!