TL;DR to post z pytaniami/odpowiedziami na temat Data Science oraz tego, jak wejść do zawodu i się w nim rozwijać. W artykule przeanalizuję podstawowe zasady oraz FAQ i jestem gotowy odpowiedzieć na Twoje konkretne pytania - napisz w komentarzach (lub w wiadomości prywatnej), postaram się odpowiedzieć na wszystko w ciągu kilku dni.
Wraz z pojawieniem się serii notatek „Data satanisty” pojawiło się wiele wiadomości i komentarzy z pytaniami o to, jak zacząć i gdzie kopać, a dziś przeanalizujemy główne umiejętności i pytania, które pojawiły się po publikacjach.
Wszystko co tu jest napisane nie rości sobie prawa do ostatecznej prawdy i jest subiektywną opinią autora. Przyjrzymy się najważniejszym rzeczom, które wydają się najważniejsze w tym procesie.
Dlaczego jest to dokładnie potrzebne?
Aby cel był lepiej osiągalny, żeby wyglądał choć trochę konkretnie – chcesz zostać DS lub Research Scientist w Facebooku/Apple/Amazon/Netflix/Google – spójrz na wymagania, języki i niezbędne umiejętności konkretnie na jakie stanowisko. Jak wygląda proces rekrutacji? Jak wygląda typowy dzień w takiej roli? Jak wygląda przeciętny profil osoby, która tam pracuje?
Często ogólny obraz jest taki, że dana osoba nie do końca rozumie, czego tak naprawdę chce i nie do końca jest jasne, jak się przygotować na ten niejasny obraz – dlatego warto mieć chociaż przybliżony plan tego, czego dokładnie chcesz.
Skonkretuj bieżący pogląd na cel
Nawet jeśli po drodze się to zmienia, a zmiany planów w trakcie zabawy są generalnie rzeczą normalną, warto mieć cel i skupiać się na nim, okresowo oceniać i przemyśleć.
Czy tak będzie i czy nadal jest to aktualne?
Do czasu, gdy osiągniesz pozycję.
Wyobraź sobie, że przed objęciem stanowiska musisz zrobić doktorat, przepracować 2-3 lata w branży i w ogóle ściąć włosy podczas medytacji w klasztorze – czy sytuacja z Data Science nie będzie taka sama jak kiedyś z ekonomistami i prawnicy? Czy w obszarze, w którym chcesz się rozwijać, wszystko zmieni się nie do poznania?
Czy nie jest duża szansa, że wszyscy się tam teraz pospieszą i zobaczymy obraz, na którym jest szeroka warstwa ludzi, którzy próbują wejść do zawodu – a pozycja wyjściowa będzie po prostu skromna.
Być może przy wyborze ścieżki warto wziąć pod uwagę aktualne trendy, nie tylko aktualny stan rynku pracy, ale także swoje wyobrażenie o tym, jak się on zmienia i gdzie jest.
Na przykład autor nie planował zostać satanistą, ale w czasie doktoratu pracował nad projektami zewnętrznymi, które miały silne umiejętności wspólne z DS, a pod koniec studiów w naturalny sposób przestawił się na środowisko, widząc dobrą pozycja.
Jeśli w trakcie zabawy okaże się, że trzeba będzie przenieść się gdzie indziej – bo jest teraz najwięcej ruchu i dzieje się tam najciekawsza akcja, to w naturalny sposób przeniesiemy się tam.
Podział umiejętności
Są to warunkowe kategorie umiejętności, które wydają mi się kluczowe do pełnej i efektywnej pracy w DS. Osobno podkreślę język angielski – ucz się wszystkiego, co robisz w CS. Dalej znajdują się kluczowe kategorie.
Programowanie/Skrypty
Jakie języki na pewno poznasz? Pyton? Jawa? Skrypty powłoki? Lua? SQL? C++?
Co dokładnie musisz umieć i dlaczego w zakresie programowania - zakres stanowisk jest tutaj bardzo zróżnicowany.
Na przykład często muszę wdrażać złożoną logikę, zapytania, modele, analizy i ogólnie opracowywać interpretowane systemy, ale prawie nigdy nie ma wymagań dotyczących szybkości kodu, z wyjątkiem tych najbardziej ogólnych i rozsądnych.
Dlatego moje umiejętności bardzo różnią się od tych, którzy piszą bibliotekę Tensorflow i myślą o optymalizacji kodu w celu wydajnego wykorzystania pamięci podręcznej l1 i podobnych rzeczy, więc spójrz, czego dokładnie potrzebujesz i oceń właściwą ścieżkę do nauki.
Na przykład w przypadku Pythona ludzie już tworzą
Z pewnością istnieją już sprawdzone porady i dobre źródła na Twoje potrzeby - musisz zdecydować się na listę i zacząć nad nią pracować.
Zrozumienie procesów biznesowych
Bez tego nie możesz się nigdzie ruszyć: musisz zrozumieć, dlaczego jesteś potrzebny w tym procesie, co robisz i dlaczego. Często właśnie to może zaoszczędzić mnóstwo czasu, zmaksymalizować korzyści i nie marnować czasu i zasobów na bzdury.
Zwykle zadaję sobie następujące pytania:
- Czym dokładnie zajmuję się w firmie?
- Dlaczego?
- Kto i jak będzie z tego korzystał?
- Jakie mam opcje?
- Jakie są granice parametrów?
Tutaj trochę więcej szczegółów na temat parametrów: często można znacznie zmienić scenariusz pracy, jeśli wiesz, że można coś poświęcić: na przykład interpretowalność lub odwrotnie, kilka procent nie odegra tutaj roli i mamy bardzo szybkie rozwiązanie, a klient tego potrzebuje, bo płaci za czas działania potoku w AWS.
Matematyka
Tutaj wszystko myślisz i rozumiesz sam - bez znajomości podstaw matematyki jesteś niczym więcej niż małpami z granatem (przepraszam, Random Forest) - więc musisz zrozumieć chociaż podstawowe rzeczy. Gdybym miał stworzyć bardzo minimalistyczną listę, zawierałaby ona:
- Algebra liniowa - ogromna liczba zasobów jest łatwa do wyszukania w Google, poszukaj tego, co najbardziej Ci odpowiada;
- Analiza matematyczna - (przynajmniej w pierwszych dwóch semestrach);
- Teoria prawdopodobieństwa jest obecna wszędzie w uczeniu maszynowym;
- Kombinatoryka - jest właściwie uzupełnieniem teorii;
- Teoria grafów – przynajmniej BASIC;
- Algorytmy – przynajmniej przez pierwsze dwa semestry (patrz zalecenia Cormena w jego książce);
- Mathlogic - przynajmniej podstawowa.
Praktyczna analiza i wizualizacja danych
Jedną z najważniejszych rzeczy jest to, aby móc nie bać się zabrudzić sobie rąk danymi i przeprowadzić kompleksową analizę zbioru danych, projektu i stworzyć szybką wizualizację danych.
Eksploracyjna analiza danych powinna po prostu stać się czymś naturalnym, tak jak wszystkie inne transformacje danych i możliwość stworzenia prostego potoku z węzłów uniksowych (patrz poprzednie artykuły) lub napisania czytelnego i zrozumiałego notatnika.
Wspomnę jeszcze o wizualizacji: lepiej raz zobaczyć, niż usłyszeć sto razy.
Pokazanie wykresu menedżerowi jest sto razy łatwiejsze i wyraźniejsze niż zestaw liczb, dlatego Twoimi przyjaciółmi są matplotlib, seaborn i ggplot2.
Umiejętności miękkie
Równie ważna jest umiejętność komunikowania swoich pomysłów, wyników i obaw (itp.) innym – upewnij się, że potrafisz jasno określić zadanie zarówno pod względem technicznym, jak i biznesowym.
Możesz wyjaśnić współpracownikom, menedżerom, przełożonym, klientom i każdemu, kto tego potrzebuje, co się dzieje, jakich danych używasz i jakie otrzymujesz wyniki.
Twoje wykresy i dokumentację należy czytać bez Ciebie. Oznacza to, że nie musisz do ciebie przychodzić, aby zrozumieć, co jest tam napisane.
Możesz przygotować przejrzystą prezentację, aby przekazać punkt widzenia i/lub udokumentować projekt/swoją pracę.
Możesz przekazać swoje stanowisko w sposób przemyślany i pozbawiony emocji, powiedzieć „tak/nie” lub zakwestionować/podeprzeć decyzję.
szkolenie
Jest wiele różnych miejsc, gdzie można się tego wszystkiego dowiedzieć. Podam krótką listę – próbowałem z niej wszystkiego i szczerze mówiąc, każdy przedmiot ma swoje wady i zalety. Wypróbuj i zdecyduj, co Ci odpowiada, ale gorąco polecam wypróbowanie kilku opcji i nie utknięcie w jednej.
- Kursy online: Coursera, udacity, Edx itp.;
- Nowe szkoły: online i offline - SkillFactory, ShAD, MADE;
- Szkoły klasyczne: uniwersyteckie studia magisterskie i zaawansowane kursy szkoleniowe;
- Projekty - możesz po prostu wybrać zadania, które Cię interesują i wyciąć je, przesyłając je na github;
- Praktyki – trudno tu cokolwiek doradzić, trzeba poszukać i znaleźć odpowiednie opcje.
Czy to konieczne?
Na zakończenie pewnie dodam jeszcze trzy osobiste zasady, którymi sama staram się kierować.
- Powinno być interesujące;
- Przynieś wewnętrzną przyjemność (= przynajmniej nie sprawiaj cierpienia);
- „Aby być twoim”.
Dlaczego oni? Trudno sobie wyobrazić, że codziennie robisz coś i nie sprawia Ci to przyjemności lub nie interesuje Cię to. Wyobraź sobie, że jesteś lekarzem i nie lubisz komunikować się z ludźmi - to oczywiście może w jakiś sposób zadziałać, ale będziesz stale czuł się niekomfortowo w związku z napływem pacjentów, którzy chcą Cię o coś zapytać. To nie działa na dłuższą metę.
Dlaczego wspomniałem konkretnie o przyjemności wewnętrznej? Wydaje mi się, że jest to konieczne do dalszego rozwoju i w zasadzie procesu uczenia się. Bardzo lubię, gdy udaje mi się ukończyć jakąś skomplikowaną operację i zbudować model lub obliczyć ważny parametr. Lubię, gdy mój kod jest estetyczny i dobrze napisany. Dlatego uczenie się czegoś nowego jest ciekawe i nie wymaga bezpośrednio żadnej znaczącej motywacji.
„Bycie twoje” to to samo uczucie, że mniej więcej to właśnie chciałeś zrobić. Mam małą historię. Od dzieciństwa interesowałem się muzyką rockową (i metalem – SALMON!) i jak wielu innych chciałem nauczyć się grać i tyle. Okazało się, że nie mam słuchu i głosu – wcale mi to nie przeszkadzało (a wielu wykonawcom na scenie to nie przeszkadza), a jeszcze w szkole dostałem gitarę… i stało się jasne, że tak naprawdę nie lubię siedzieć godzinami i bawić się na tym. Szło ciężko, zawsze wydawało mi się, że wychodzą jakieś bzdury – nie czerpałem z tego żadnej przyjemności i czułem się po prostu kiepski, głupi i zupełnie niezdolny. Dosłownie zmuszałam się do siadania na zajęcia i ogólnie nie była to dobra karma dla konia.
Jednocześnie mogłem w miarę spokojnie siedzieć godzinami tworząc jakąś zabawkę, używając skryptu do animowania czegoś we flashu (lub czegoś innego) i miałem szalenie motywację do dokończenia elementów w grze lub uporania się z mechaniką ruchu i/lub łączenie bibliotek, wtyczek i wszystkiego innego innych firm.
I w pewnym momencie zdałem sobie sprawę, że gra na gitarze to nie moja bajka i naprawdę lubię słuchać, a nie grać. A moje oczy błyszczały, kiedy pisałem gry i kod (słuchałem w tym momencie wszelkiego rodzaju metalu) i to właśnie mi się wtedy podobało i to właśnie powinienem robić.
Czy masz jakieś inne pytania?
Oczywiście nie mogliśmy przejrzeć wszystkich tematów i pytań, dlatego piszcie komentarze i piszcie do mnie na PW – zawsze chętnie zadam pytania.
Źródło: www.habr.com