Pradžia / Programavimas / Duomenų mokslininko kelias

Duomenų mokslininko kelias

Nuo smalsumo iki pirmojo modelio

Duomenų mokslas – tai viena iš tų sričių, kur žmonės ateina iš pačių netikėčiausių vietų. Vienas buvo biologas, kitas – buhalteris, trečias – tiesiog kažkas, kas per karantiną atsitiktinai užkliuvo ant YouTube video apie mašininį mokymąsi ir negalėjo sustoti. Ir tai nėra problema – priešingai, tai viena iš stipriausių šios srities pusių.

Bet pradėkime nuo pradžių. Duomenų mokslininkas – tai žmogus, kuris dirba su duomenimis tam, kad iš jų išgautų prasmę. Skamba paprastai, bet realybėje tai reiškia, kad reikia mokėti programuoti, suprasti statistiką, žinoti, kaip veikia mašininis mokymasis, mokėti vizualizuoti duomenis ir – galbūt svarbiausia – mokėti paaiškinti savo rezultatus žmonėms, kurie apie visa tai neturi nė mažiausio supratimo.

Pirmasis žingsnis dažniausiai yra suvokti, kad duomenų mokslas nėra magija. Tai disciplina, kurią galima išmokti. Lėtai, nuosekliai, kartais skausmingai – bet galima. Ir geras startas yra tiesiog pradėti nuo klausimo: ką aš noriu suprasti iš duomenų? Ne „kaip sukurti neuroninį tinklą”, o būtent – ką noriu suprasti. Nes duomenų mokslas prasideda nuo problemos, o ne nuo įrankio.

Matematika ir statistika – kiek jų iš tikrųjų reikia?

Čia daugelis sustoja dar prieš pradėdami. Matai reikalavimus darbo skelbimuose: linijinė algebra, diferencialinis skaičiavimas, tikimybių teorija, Bajeso statistika… ir galvoji – gal geriau eičiau į buhalterius.

Tiesa yra kažkur per vidurį. Jums nereikia būti matematikos profesoriumi, bet tam tikras matematinis pagrindas yra būtinas. Štai kas iš tikrųjų svarbu:

  • Linijinė algebra – matricos, vektoriai, matricos daugyba. Tai pagrindas, ant kurio stovi beveik visi mašininio mokymosi algoritmai. Nereikia mokėti įrodyti teoremų, bet reikia suprasti, ką reiškia, kad duomenys yra vektoriai erdvėje.
  • Statistika – čia tikrai negalima apeiti. Vidurkis, mediana, standartinis nuokrypis, koreliacijos, p-reikšmės, pasikliautiniai intervalai. Tai ne akademiniai dalykai – tai įrankiai, kuriuos naudosite kiekvieną dieną.
  • Tikimybių teorija – bent jau bazinis supratimas. Ypač jei dirbsite su klasifikaciniais modeliais ar natūralios kalbos apdorojimu.
  • Diferencialinis skaičiavimas – jei norite suprasti, kaip mokosi neuroniniai tinklai, reikia suprasti gradientų nusileidimą. Bet jei dirbate su klasikiniais algoritmais, galite kurį laiką apsieiti be gilaus šios srities supratimo.

Praktinis patarimas: neeikite į matematikos kursus abstrakčiai. Mokykitės matematikos tada, kai ji reikalinga konkrečiam algoritmui suprasti. Kai pradedate mokytis linijinės regresijos – tada ir pasigilinkite į matricų daugyba. Kai pradedate mokytis neuroninių tinklų – tada ir susipažinkite su grandientu. Taip matematika įsisavinama natūraliau ir greičiau.

Python ar R – amžinas klausimas

Šis ginčas duomenų mokslo bendruomenėje yra beveik toks pat senas, kaip ir pati sritis. Ir atsakymas, kurį dažnai išgirsite, yra „priklauso nuo konteksto” – bet leiskite būti konkretesniems.

Python šiandien yra de facto standartas. Jei pradedate nuo nulio ir nežinote, ką rinktis – rinkitės Python. Priežastys paprastos:

  • Didžiulė ekosistema: pandas, numpy, scikit-learn, tensorflow, pytorch – visa tai yra Python bibliotekos.
  • Python naudojamas ne tik duomenų moksle, bet ir web kūrime, automatizavime, API kūrime – tai reiškia, kad jūsų modelį galėsite integruoti į realų produktą.
  • Darbo rinkoje Python žinios reikalaujamos dažniau.
  • Bendruomenė milžiniška – bet kokią problemą, su kuria susidursite, kažkas jau sprendė ir atsakymą rasite Stack Overflow.

R vis dar labai stiprus akademiniame pasaulyje ir statistinėje analizėje. Jei dirbate su biologiniais duomenimis, medicinine statistika ar akademiniais tyrimais – R gali būti geresnis pasirinkimas. ggplot2 vizualizacijoms nėra lygių, o tidyverse ekosistema yra tiesiog elegantiškai sukurta duomenų manipuliavimui.

Bet realybė tokia: jei mokate vieną, antrą išmokti nėra labai sunku. Programavimo logika yra ta pati – keičiasi tik sintaksė ir bibliotekos. Tad nesistenkite išmokti abiejų iš karto. Pasirinkite vieną, išmokite gerai, o vėliau, jei reikės – persiorientuoti bus daug lengviau.

Duomenų valymas – ta dalis, apie kurią niekas nekalba

Jei klausite bet kurio patyrusio duomenų mokslininko, kur jis praleidžia daugiausiai laiko – atsakymas jus nustebins. Ne modelių kūrime. Ne vizualizacijose. Ne interpretacijoje. Duomenų valyme. Ir tai nėra perdėjimas – tyrimai rodo, kad duomenų mokslininkai praleidžia apie 60-80% savo laiko tvarkydami duomenis.

Realūs duomenys yra netvarkinga realybė. Jie ateina su:

  • Trūkstamomis reikšmėmis (NaN, NULL, tušti laukai)
  • Klaidingomis reikšmėmis (amžius = -5, temperatūra = 9999)
  • Dublikatais
  • Nenuosekliais formatais (data užrašyta penkiais skirtingais būdais)
  • Kategoriniais kintamaisiais, kurie turėtų būti skaitiniai ir atvirkščiai
  • Išskirtimis, kurios gali būti tiek klaidos, tiek svarbiausi duomenų taškai

Ir čia prasideda tikrasis duomenų mokslininko darbas. Prieš kuriant bet kokį modelį, reikia suprasti duomenis. Exploratory Data Analysis (EDA) – tai ne papildoma užduotis, tai būtinas žingsnis. Naudokite pandas funkciją describe(), braižykite histogramas, tikrinkite koreliacijas, žiūrėkite į duomenų pasiskirstymą.

Praktinis patarimas: sukurkite sau duomenų valymo šabloną. Kiekvieną kartą, kai gaunate naują duomenų rinkinį, eikite per tą patį procesą: patikrinkite dimensijas, patikrinkite trūkstamas reikšmes, patikrinkite duomenų tipus, patikrinkite išskirtis. Tai taupo laiką ir neleidžia praleisti svarbių problemų.

Mašininis mokymasis – nuo teorijos prie praktikos

Čia daugelis duomenų mokslo pradedančiųjų daro klasikinę klaidą: jie nori iš karto kurti sudėtingus neuroninius tinklus, kai iš tikrųjų turėtų pradėti nuo paprastų modelių. Ir tai nėra tik mokymosi strategija – tai ir gera profesinė praktika.

Pradėkite nuo šių algoritmų ir supraskite juos tikrai gerai:

  • Linijinė regresija – paprasčiausias modelis, bet supratus jį tikrai gerai, suprasite daugelį kitų algoritmų principus.
  • Logistinė regresija – klasifikacijos pagrindas. Nepaisant pavadinimo, tai klasifikacinis, ne regresinis modelis.
  • Sprendimų medžiai ir atsitiktiniai miškai – labai intuityvūs, gerai veikia su struktūrizuotais duomenimis, lengvai interpretuojami.
  • Gradient Boosting (XGBoost, LightGBM) – šiandien tai yra vienas galingiausių įrankių darbui su lenteliniais duomenimis. Daugelyje Kaggle konkursų laimi būtent šie algoritmai.
  • K-means klasterizacija – nesupervizuoto mokymosi pagrindas.

Tik tada, kai šie algoritmai jums yra aiškūs ir jūs suprantate, kodėl jie veikia (ar neveikia) konkrečiose situacijose – tada galite eiti prie giluminio mokymosi. Neuroniniai tinklai yra galingi, bet jie nėra universalus atsakymas į viską. Ir jie reikalauja daug duomenų, daug skaičiavimo galios ir daug laiko derinimui.

Svarbus principas: visada pradėkite nuo paprasčiausio modelio. Jei linijinė regresija duoda 85% tikslumą, o sudėtingas neuroninis tinklas – 87%, ar verta ta 2% skirtumas papildomos kompleksiškumo? Dažnai – ne. Paprastesni modeliai lengviau interpretuojami, greičiau treniruojami ir lengviau palaikomi produkcijoje.

Portfolio kūrimas – kaip parodyti, ką moki

Diplomas duomenų moksle yra naudingas, bet ne būtinas. Darbo rinkoje svarbiausia yra tai, ką galite parodyti. Ir čia atsiranda portfolio svarba.

GitHub profilis yra jūsų vizitinė kortelė. Bet ne bet koks GitHub profilis – o toks, kuriame yra projektai su aiškiais README failais, gerai struktūrizuotu kodu ir realiais rezultatais. Rekruteriai ir techniniai vadovai žiūri į šiuos dalykus:

  • Ar kodas yra skaitomas? Ar naudojate kintamųjų pavadinimus, kurie ką nors reiškia?
  • Ar projektas sprendžia realią problemą?
  • Ar yra dokumentacija?
  • Ar matosi jūsų mąstymo procesas, o ne tik galutinis rezultatas?

Geriausi portfolio projektai yra tie, kurie jums patiems įdomūs. Jei jus domina sportas – analizuokite sporto duomenis. Jei domina muzika – analizuokite Spotify duomenis. Kaggle platforma yra puiki vieta pradėti – ten rasite realius duomenų rinkinius ir galite palyginti savo rezultatus su kitais.

Dar vienas patarimas: rašykite. Blog’as, Medium straipsniai, LinkedIn įrašai – tai ne tik parodo, kad suprantate temą, bet ir padeda patiems geriau ją suprasti. Kai bandote paaiškinti algoritmą paprastais žodžiais, dažnai atranda spragas savo paties supratime.

MLOps ir produkcija – kur daugelis sustoja

Yra didelė skirtis tarp modelio, kuris veikia Jupyter Notebook, ir modelio, kuris veikia realiame produkte. Ir daugelis duomenų mokslininkų, ypač pradedančiųjų, šios skirties neįvertina.

MLOps – tai praktikos ir įrankiai, skirti mašininio mokymosi modeliams diegti, stebėti ir palaikyti produkcijoje. Tai apima:

  • Modelio versijų valdymą – MLflow, DVC. Kaip ir kodas turi versijų valdymą su Git, modeliai irgi turi būti versijuojami.
  • Modelio diegimą – Docker konteineriai, REST API su FastAPI ar Flask, debesų platformos (AWS SageMaker, Google Vertex AI, Azure ML).
  • Modelio stebėjimą – kaip žinoti, kad modelis vis dar veikia gerai po mėnesio? Po metų? Duomenys keičiasi, ir modeliai „sensta” – tai vadinama data drift.
  • Automatizuotus pipeline’us – Airflow, Prefect, Kubeflow. Automatizuotas duomenų surinkimas, apdorojimas, modelio treniravimas ir diegimas.

Jei jūsų tikslas yra dirbti didelėje kompanijoje, MLOps žinios yra labai vertingos. Daugelyje organizacijų duomenų mokslininkai ir ML inžinieriai dirba kartu – vieni kuria modelius, kiti juos diegia. Bet supratimas apie tai, kaip modelis gyvena po diegimo, padaro jus daug vertingesniu komandos nariu.

Pradedantiesiems rekomenduočiau išmokti bent jau sukurti paprastą REST API su FastAPI ir supakuoti ją į Docker konteinerį. Tai nėra labai sudėtinga, bet parodo, kad suprantate, kaip modelis gali būti naudojamas realiame pasaulyje.

Kai duomenys tampa istorija – o ne tik skaičiai

Galiausiai, visa ši techninė kelionė – Python, statistika, modeliai, MLOps – veda į vieną svarbų supratimą, kurį daugelis įgyja tik po kelerių metų darbo. Duomenų mokslas nėra apie duomenis. Jis yra apie sprendimus, kuriuos tie duomenys padeda priimti.

Geriausias duomenų mokslininkas kambaryje ne tas, kuris žino daugiausia algoritmų. Tai tas, kuris sugeba paaiškinti, ką reiškia modelio rezultatai, kodėl jie svarbūs ir ką reikia daryti toliau. Tai tas, kuris gali sėdėti su verslo vadovu ir kalbėti jo kalba, o ne žargonu apie hiperparametrus ir kryžminį tikrinimą.

Duomenų mokslininko kelias yra ilgas ir niekada nesibaigia. Sritis keičiasi neįtikėtinu greičiu – prieš penkerius metus niekas rimtai nekalbėjo apie didžiuosius kalbos modelius kaip apie kasdienį įrankį. Šiandien GPT, Claude ir kiti LLM keičia tai, kaip dirbame su tekstu, kaip generuojame kodą, kaip analizuojame dokumentus. Duomenų mokslininkai, kurie supranta šias technologijas ir gali jas integruoti į savo darbo eigą, turi aiškų pranašumą.

Bet svarbiausia – nepraraskite to pirminio smalsumo. To klausimo „kodėl?”, kuris ir atvedė jus į šią sritį. Nes duomenys yra tik skaičiai tol, kol kažkas neužduoda tinkamo klausimo. O tinkamą klausimą užduoda ne algoritmas – jį užduoda žmogus. Ir tas žmogus galite būti jūs.