Kažu da je za uspješnu primjenu podatkovne znanosti potrebno tri sastojka: domensko znanje, poznavanje analitičkih metoda i poznavanje tehnologije. Tu govorimo o tehničkoj strani pobjedničkog rješenja prvog EU Big Data hackathona.

Pišu: Igor Kaluđer, Leo Mršić, Robert Kopal

Prvi Big Data hackathon u organizaciji Europske komisije i Eurostata (statističkog ureda Europske unije) održan je od 13. do 16. ožujka 2017. u Bruxellesu. Hackathon je okupio timove iz cijele Europe, u natjecanju razvoja podatkovnog proizvoda, koji će kombinirati službenu statistiku i big data izvore za podršku kreatorima politika u jednom od aktualnih problema Europske unije. Nacionalni statistički uredi zemalja članica odabrali su tročlane timove podatkovnih znanstvenika i djelatnika statističkih ureda. Natjecala su se 22 tima iz 21 zemlje članice.

Dashboard za korelacijsku analizu socioekonomskih indikatora i ponude vještina

Eurostat je s hackatonom imao pet ciljeva: 1. Riješiti statističke probleme koristeći algoritme i dostupne podatke; 2. Identificirati najbolje europske podatkovne znanstvenike; 3. Promovirati i ubrzati primjenu big data tehnologije u europskim statističkim inicijativama; 4. Promovirati partnerstvo između istraživačke zajednice i privatnog sektora; 5. Producirati inovativne proizvode i alate, uključujući vizualizacije.

Odabrana problemska domena bila je: vještine, obrazovanje i cjeloživotno učenje, koja igra važnu ulogu u deset prioriteta Europske komisije. Konkretno pitanje objavljeno je prvog dana hackathona, a glasilo je: “Kako biste podržali izradu politiku za smanjenje jaza između poslova (traženih vještina) i dostupnih vještina na regionalnoj razini Europske unije korištenjem podataka? Demonstrirajte svoje rješenje u obliku alata za analizu podataka na temelju danih skupova podataka i dodatnih izvora.”. Rješenja su morala koristiti big data izvore i kombinirati ih sa službenim statističkim istraživanjima.

Paralelni rad

Stavljajući se u cipele kreatora politika u domeni tržišta rada i obrazovanja, a s ciljem zatvaranja jaza između potražnje i ponude vještina, strukturirali smo problem u četiri cjeline: ponuda vještina, potražnja vještina, jaz te akcije za zatvaranje jaza. Za svako od ta četiri područja predvidjeli smo tri interaktivna dashboarda. Potom smo definirali potrebne podatke, strukturirali ih u izlazne tablice, i odmah ih napunili dummy podacima, tako je dio tima odmah počeo raditi na dizajnu dashboarda, a drugi dio tima bacio se na pripremu stvarnih podataka.

S obzirom na to da i inače zagovaramo oblak kad god možemo, jer se ne želimo zamarati infrastrukturom ako ne moramo, bilo je jasno da će se sve, od dobave, preko obrade, analize i modeliranja, do prezentacije raditi u oblaku. Za razvojnu platformu odabrali smo Google Cloud Platform iz nekoliko razloga, ali ponajviše zbog Big Queryja. Radi se o analitičkog bazi podataka (skladištu podataka) u obliku servisa u oblaku. Iako i druga dva cloud providera imaju usporediva rješenja (AWS Redshift, Azure SQL warehouse + Azure Analysis Services), prednosti Big Queryja brutalne su performanse, pricing prema količini spremljenih i obrađenih podataka (a ne prema instanci virtualnog stroja, kao kod Redshifta) te činjenica da Tableau koji smo koristili za front-end ima native konektor za BigQuery koji radi stabilno i brzo.

Veliki upiti za malo novca

Na BigQueryju napravili smo tri “data seta”, koji služe logičkom grupiranju tablica (slično shemi u relacijskim bazama): ulazni, privremeni i izlazni. U ulazni data set napunjeni su svi izvorni podaci u originalnom obliku. Privremeni data set služio je pohrani tablica s međurezultatima i ad-hoc tablica za analitičke potrebe. Tablice u izlaznom data setu kreirali smo ručno te privremeno napunili dummy podacima kako bi se odmah moglo početi s dizajnom front end dijela.

Arhitektura sustava

BigQuery nam je omogućio toliku konkurentsku prednost da zaslužuje podrobniji opis. BigQuery je, za razliku od konkurentskih rješenja, serverless, što znači da ne morate upravljati infrastrukturom. Napunite tablice preko web-konzole, komandno-linijskog alata ili REST API-ja i podaci su spremni za analizu. Održavanje, tuniranje i optimizacija praktički ne postoje. Sve to, uz vrlo velike performanse. Kreirali smo desetke tablica, od kojih su neke prelazile 300 GB i milijardu redaka, te ih napadali prilično složenim upitima, a BiqQuery je to sve stoički podnosio i konzistentno vraćao rezultat unutar nekoliko sekundi.

Velika prednost BigQueryja je i pricing po spremljenoj i obrađenoj količini podataka. Napunili smo nekoliko terabajta podataka te ih tijekom tih nekoliko dana izložili tisućama upita. To nas je koštalo desetak dolara.

Analiza i modeliranje

Koliko god je cloud napredovao, kad je u pitanju analiza podataka i modeliranje, tu još uvijek nemamo upotrebljivo out-of-the-box rješenje. Postojeća rješenja velikih cloud providera, poput Cloud Data Laba (što je u osnovi Jupyter), još su uvijek prekomplicirana i nedovoljno fleksibilna. Zbog toga je još uvijek pravilo da se analiza i modeliranje odvija na IaaS razini. U tu svrhu podigli smo virtualni stroj (Cloud Compute Engine) sa 64 virtualna CPU-a, 240 GB radne memorije, SSD diskom te Linuxom Debian Jessie. Na instancu smo instalirali Anaconda distribuciju Pythona 3.6, koja uključuje sve popularne Python pakete za analizu podataka, poput pandasa, matplotliba, scikit-learna, jupytera (bivšeg IPythona), itd. Kako bismo omogućili višekorisnički rad, odnosno kolaboraciju preko web-sučelja, koristili smo i JupyterHub, koji je u osnovi proxy koji spawna pojedinačne jupyter procese za svakog korisnika.

S obzirom na to da dio tima radi u R jeziku, instalirali smo i distribuciju R-a, R Studio Server te nekoliko R paketa koji omogućuju direktnu interakciju s BigQueryjem. Kako community verzija R Studio Servera ne podržava TLS, koristili smo nginx kao reverse proxy koji je prosljeđivao upite JupyterHubu i R Studio serveru.

Proces analize funkcionirao je tako da smo podacima u BigQuery tablicama pristupali iz Pythona ili R-a, a za potrebe eksplorativne analize i vizualizacije i iz Tableau Desktop alata. Sva tri alata imala su podršku za BigQuery te su funkcionirala besprijekorno. Podatke bismo, dakle, učitali iz ulaznih tablica, obradili ih u Python i R-u te napunili u izlazne tablice na BigQueryju.

Međuoblačna suradnja

“Skill Gap” dashboard

Nakon što su podaci odsjeli u izlazne tablice, napali smo ih Tableau Desktopom i kreirali 12 dashboarda (vidi okvir Konačni proizvod) koje smo deployali na servis Tableau Online. Radi se o Tableau serveru hostanom u Tableau cloudu koji, između ostalog, omogućuje prikaz dashboarda u web-browseru i mobilnim aplikacijama te embeddanje dashboarda. Jedan od glavnih zahtjeva hackathona bio je taj da rješenje mora prikazati na razini statističkih regija EU, koje imaju tri razine, od zemlje članice, do županija u slučaju Hrvatske. Kako bismo to spacijalno vizualizirali, koristili smo službene shape fileove NUTS regija.

Potom smo izradili malu, statičnu web-aplikaciju s navigacijom, u obliku sliding menija te embeddali Tableau dashboarde JavaScriptom. S obzirom na to da je web statičan, a dinamički se dio (dashboardi) renderira na Tableau Online servisu, web smo hostali na servisu Cloud Storage, koji, slično kao i AWS S3, omogućuje statični web-hosting. Kreirali smo lako pamtljivu domenu: eubdhack.in2data.eu te ju usmjerili na web-aplikaciju.

Što bi rekao Dirty Harry…

Svijet je pun uvriježenih mišljenja, predrasuda i mitova, a pogotovo u domeni o kojoj je nemoguće nešto znati bez sustavne statistike, i koja se tako brzo mijenja kao što je tržište rada. Jedna od ljepših stvari u ovom poslu jest gledati kako se velevrijedna mišljenja iskusnih poznavatelja domene te ustaljenih mitova raspadaju pred navalom argumenata utemeljenih na stvarnim podacima. Službena statistika nije nešto što trenutačno izaziva uzbuđenje izvan uskih, stručnih krugova, ali kombinirana s big data izvorima te prezentirana vizualno i interaktivno, dobiva sasvim novi život. Za one koji razmišljaju o svojoj karijeri, evo i dvije najpoželjnije grupe vještina prema našoj analizi na razini EU: najmanje zastarjela grupa vještina pokazala se matematika i statistika (najmanje je nezaposlenih s tim vještinama), a grupa vještina s najvišom stopom rasta potražnje odnosi su s javnošću. Dakle, traže se ljudi koji znaju analizirati podatke, ali i oni koji ih znaju približiti široj javnosti.


Milijuni oglasa i životopisa

Sirovi podaci preuzeti su od organizatora u obliku CSV datoteka i MySQL dump datoteka preko SFTP-a te pohranjeni na Google Cloud Storage. Radi se o globalno distribuiranom binary storage servisu, usporedivim s AWS S3 uslugom. Takvi servisi se u big data procesima i inače koriste kao data lake te su obično integrirani s ostalim cloud servisima (relacijskom bazom, analitičkom bazom, servisima za strojno učenje, itd.).

Izvori podataka koje je organizator pripremio bili su:

  1. 7,4 milijuna oglasa za posao scrapeanih s job portala iz pet zemalja članica
  2. 35 milijuna oglasa za posao s portala EURES te 4,7 milijuna životopisa
  3. Službeno statističko istraživanje “EU Labour Force Survey”
  4. Službeno statističko istraživanje “EU Statistics on Income and Living Conditions”
  5. Istraživanje OECD-a “Programme for the International Assesment of Adult Competences”

Setovi podataka u obliku CSV datoteka direktno su napunjeni u BigQuery koristeći BQ web-konzolu, uz nešto ručnog čišćenja. Jedan set podataka bio je u obliku MySQL dump datoteke. S obzirom na to da smo htjeli sačuvati metapodatke, podignuta je instanca CloudSQL usluge, što je u osnovi MySQL baza u cloudu, a koja omogućuje direktan import baze iz MySQL dump datoteke.


Muke po prirodnom jeziku

Bilo je dosta zahtjevno naći adekvatne tehnologije i tehnike za obradu prirodnog jezika, jer su se fragmenti koje smo imali na raspolaganju sastojali od dvije do tri riječi. Zbog toga smo se odlučili za clustering pa smo napravili dvije varijante. Prvi način uključivao je stvaranje clustera fuzzy matchingom između naziva radnih mjesta, no na kraju smo se odlučili za drugi način koji je uključivao korištenje ulaganja riječi (word embedding) u neuralne modele, čime smo postigli još jednu razinu podudarnosti koja je semantička. Rekurentnu mrežu za ulaganje riječi utrenirali smo na starim verzijama engleske Wikipedije. Sveukupno smo uspjeli postići dosta dobar clustering, koji nam je omogućio strukturiranje podataka s kojima su ostali timovi imali poteškoća.

Od tehnologija za obradu jezika koristili smo Python, posebno Theano i SKLearn (uz nezaobilazni Pandas i Numpy). TensorFlow odlučili smo “držati u pričuvi” ako bi se pokazalo da bismo trebali prebacivati arhitekturu na GPU-ove, no pokazalo se da to nije bilo potrebno. Relativno neobično, nismo uopće koristili Pythonov Natural Language Toolkit (NLTK), jer se pokazalo da klasične metode za obradu prirodnog jezika nisu od pomoći kod specifičnih podataka koje smo imali.


Konačni proizvod

Konačni proizvod je web-aplikacija namijenjena “policy analystu”, koja se sastojala od 12 interaktivnih dashboarda, a sve na najnižoj regionalnoj razini:

  1. Ponuda vještina (mjerena brojem životopisa u kojima se određena vještina spominje)
  2. Clustering vještina (koje vještina se često zajedno pojavljuju u životopisu)
  3. Zastarjele vještine (mjerene velikim udjelom tih vještina u nezaposlenoj populaciji)
  4. Potražnja vještina (mjerena brojem oglasa za posao u kojima se spominje određena vještina)
  5. Prognoza traženih vještina (prediktivni model na temelju vremenske serije oglasa za posao)
  6. Složenost zanimanja (koliko vještina je vezano uz određeno zanimanje)
  7. Jaz između potražnje i ponude vještina
  8. Migracija zanimanja (mjerena odnosom trenutačnog i željenog zanimanja iz životopisa)
  9. Socioekonomski indikatori (korelacija ponude vještina i raznih socioekonomskih indikatora)
  10. Ponuda kvalifikacija
  11. Jaz između traženih vještina i kvalifikacija
  12. Migracija radne snage (mjerena trenutačnom i željenom regijom EU iz životopisa)

Prognoza za danas, sutra i nekoliko desetljeća: oblačno

I ovdje su se pokazali sva moć, brzina, fleksibilnost i ekonomičnost oblaka. Računalstvo u oblaku nije budućnost, oblak je spreman već sad. Ljudi nisu spremni – strah ih je. Pate od iluzije da su podaci fizički sigurniji u podrumu njihove zgrade nego u objektima građenim specijalno u tu svrhu s neusporedivo većom razinom fizičke zaštite i redundantnosti. Uvjeravaju sami sebe u veću informacijsku sigurnost s jednim ili dvojicom infosec inženjera nego u oblaku, gdje stotine vrhunskih infosec profesionalaca danonoćno bdije. Ignoriraju stvarne ukupne troškove, činjenicu da su ljudi skuplji od strojeva te kako se ne isplati trošiti nebrojene dane na tuniranje i optimizaciju sustava koji lako i jeftino možete horizontalno skalirati. Boje se što će biti sa silnim znanjem o sistem-arhitekturi, administraciji i infrastrukturi. A, naravno, tu i je element očuvanja osobne važnosti i budžeta IT odjela u svijetu, u kojem IT infrastruktura za malo novca postaje tuđi problem. Od fundamenata se, međutim, ne može bježati dugo. Popnite se na oblak i uživajte u pogledu.


O timu i autorima

Tim Visokog Učilišta Algebra i tvrtke IN2data u suradnji sa Državnim zavodom za statistiku pobijedio je na prvom EU Big Data Hackathonu organiziranom od strane Europske Komisije i EUROSTAT-a. Hrvatski tim u sastavu: Igor Kaluđer, Robert Kopal i Leo Mršić (na slici tim redom) izabrao je na natječaju Državni zavod za statistiku. Radi se o iskusnim stručnjacima iz područja podatkovne znanosti, poslovne analize i kvantitativnog modeliranja, a svi su i suradnici Mreže. Aktivni su u poslovnoj praksi kao suosnivači i direktori u tvrtki IN2data, jednoj od rijetkih data science tvrtki u regiji. Angažirani su i u akademskoj zajednici kao prodekani, voditelji katedri i profesori na Visokoj školi Algebra, autori desetaka knjiga i znanstvenih radova.