S pravilno obdelavo podatkov do poslovnih uspehov
Postavimo podatke v kontekst
Informacijska tehnologija danes prežema vse segmente našega življenja, saj se je poslovanje v veliki meri preselilo na splet. Dodatno je k temu prispevala epidemija, ki je na mnogo načinov pokazala, da lahko tehnologija še kako pomaga in izboljša kakovost življenja. Prek spleta kupujemo oblačila, hišne pripomočke, hrano, nekateri celo avtomobile, in si s tem kupujemo prosti čas, ki ga lahko uporabimo za kaj pametnejšega.
Konkurenca na področju IT je zato vse večja, tempo narekuje tudi hitra rast uporabnikov, ob tem pa celotna industrija stremi k vedno boljšim uporabniškim izkušnjam. Podjetja, ki že poslujejo na spletu, se trudijo čim bolj natančno profilirati posameznika z zbiranjem in obdelavo podatkov. Čeprav je s spletnimi orodji zajem podatkov na spletnih straneh postal enostaven, je zbrana količina podatkov za večino podjetij neobvladljiva.
Obdelovanje velike količine podatkov v realnem času
V sodobnem času je vedno bolj pomembno, da lahko v realnem času vplivamo na vedenje uporabnikov spletnih storitev, jim ponudimo razna priporočila ali pa avtomatsko analiziramo, s katerimi težavami se uporabniki srečujejo, ter jim na tak način hitreje omogočimo boljšo uporabniško izkušnjo. Za vse to pa je potrebno obdelovanje velike količine podatkov v realnem času.
Na kaj mislimo, ko uporabimo izraz velika količina podatkov? Gre za količino podatkov, ki je enostavno prevelika za analizo in obdelavo s tradicionalnimi orodji, ki jih sicer uporabljamo za delo s podatki, kot so hranjenje v relacijskih bazah in obdelava podatkov z algoritmi, ki morajo pregledati vse podatke naenkrat. Z veliko količino podatkov pridejo tudi veliki izzivi, kot so zajem, shranjevanje, analiza, iskanje, deljenje ter nenazadnje vizualizacija podatkov. Med najbolj uporabne sodobne načine analize velikih količin podatkov štejemo naslednje:
prediktivna analiza, pri kateri na podlagi analiz podatkov napovedujemo prihodnje dogodke in trende,
ugotavljanje vedenjskih vzorcev uporabnikov, kjer odkrivamo odklone v vedenju uporabnikov, ki vplivajo na poslovanje,
napredna analiza, ki iz podatkov ustvari dodano vrednost.
Ustvarjanje dodane vrednosti iz podatkov
Prav tej zadnji točki pa se posvečamo v tem članku. Vedno se moramo na začetku vprašati, kaj sploh želimo doseči z uporabo velike količine podatkov in strojnega učenja? Odgovorov je toliko, kot je izzivov, skoraj vedno pa si želimo reševati različne probleme, izboljšati poslovne procese, optimizirati poslovanje, pohitriti in izboljšati kakovost naših poslovnih odločitev, dvigniti vrednost podjetja, itd. To vse drži, vendar ko pogledamo, kaj dejansko želimo, lahko poenostavimo, da želimo vzeti podatke, jih poslati skozi črno škatlico in na drugi strani dobiti neko uporabno vrednost.

Slika 1: Črna škatlica. Vir: Medius
Naš cilj je torej zgraditi generičen proces zajema velike količine podatkov, nato preko analize ter obdelave podatkov priti do uporabne vrednosti, ki jo lahko ponudimo čim več odjemalcem v skoraj realnem času.
Gradnja tokov podatkov glede na kontekst
Na podlagi izkušenj iz preteklih projektov, kjer smo se ukvarjali z velikimi količinami podatkov in strojnim učenjem, smo izbrali pristop gradnje kontekstualno odvisnih tokov podatkov. Kontekstualno odvisni tokovi so arhitekturni pristop, kjer na podlagi konteksta nastanka podatkov ali vsebine podatkov usmerjamo podatke skozi sistem. Med samim potovanjem skozi sistem pa lahko podatke dodatno obogatimo, tako da maksimiziramo uporabnost za končne odjemalce. Slika prikazuje enostavno arhitekturo kontekstualno odvisnih podatkovnih tokov (nadgradnja prejšnje slike s črno škatlico):

Slika 2: Enostavna arhitektura kontekstualno odvisnih podatkovnih tokov. Vir: Medius
V zgornjem delu vidimo vhodni tok podatkov, ki prihaja v sistem in se shranjuje na Topic 1 (za pretočno platformo smo uporabili Apache Kafka, ki tok podatkov shranjuje kot temo oz. “topic”, na kar se lahko priključijo različni poslušalci). Na podlagi glavnega toka smo zgradili tri kontekstualno odvisne tokove, ki na različne načine izpostavijo podatke zunanjim odjemalcem.
Rumeni tok teče v namensko mikro storitev, ki zunanjim odjemalcem izpostavi del podatkov glavnega toka. Zeleni tok teče v komponento Transform, ki podatke dodatno obogati (preoblikuje) in jih shrani na Topic 2, tudi ta pa je na voljo zunanjim odjemalcem. Oranžen tok teče v namensko mikro storitev, ki hkrati odjema podatke tudi iz obogatenega Topic 2, jih združi in dodatno obdela ter ponudi zunanjim odjemalcem. Čeprav obdelujejo velike količine podatkov, vsi tokovi delujejo v skoraj realnem času.
Usmerjanje podatkov po meri
Kot lahko vidimo, je usmerjanje podatkov skozi sistem odvisno od konteksta in želje uporabe. Kdorkoli se lahko kadarkoli priključi na tok podatkov in jih začne uporabljati, prav tako lahko kadarkoli zgradimo nov tok podatkov, brez da bi vplivali na že obstoječe tokove in odjemalce. Nekako tako, kot bi ustvarjali vedno nove recepte za različne priložnosti. Podatke tako naredimo žive in uporabne takoj, kar je še posebej pomembno za strojno učenje.
Izzivi pri pridobivanju podatkov
Pri strojnem učenju je pogosto največji izziv pridobivanje začetnih podatkov za analizo in gradnjo prvih modelov. Za pridobitev podatkov se je potrebno uskladiti s sistemskimi administratorji, ki podatke pripravijo in jih delijo z nami. Prenos podatkov pa vselej ne poteka brez težav, saj se lahko hitro zgodi, da dobimo pomanjkljive podatke ali pa nam jo zagode kakšna napaka med prenosom, zato vedno izvedemo več ponovitev pridobivanja podatkov. Prav tako lahko kasneje pri analizi ugotovimo, da nam kakšen podatek manjka in je treba postopek s pomočjo administratorjev ponoviti. Vse to podaljša čas razvoja in poveča število ljudi, ki delajo na projektu.
Z gradnjo kontekstualno odvisnih tokov pa se temu izognemo, saj se enostavno povežemo na tokove in v istem trenutku pričnemo z obdelavo. Med procesom lahko dodajamo poljubne agregatorje, ki nam še dodatno bogatijo podatke z združevanjem različnih tokov ali s pridobivanjem informacij iz zunanjih servisov. S tem omogočimo podatkovnim znanstvenikom neposreden dostop do podatkov, ki jih lahko poljubno obdelujejo.
Delo z obogatenimi podatki
S predhodnim povezovanjem podatkov v kontekst ustvarimo boljše temelje, ki nam kasneje olajšajo analizo ter učenje modelov, saj so prejeti podatki že združeni oz. obogateni. To bistveno pohitri pridobitev značilk, ki jih uporabimo za prediktivne in učne modele. Značilke skupaj z napovedjo pošljemo naprej po podatkovnem toku, kjer lahko kasneje preverimo pravilnost njihovega izračuna ter jih opremimo z dejanskim rezultatom. Tako lahko vidimo, kako dober je naš model, hkrati pa imamo pripravljeno novo učno množico, ki jo uporabimo za izboljšanje modela.
Z branjem podatkov neposredno iz toka ustvarimo pogoje za inkrementalno učenje (online learning). Takoj ko imamo na voljo dejansko vrednost značilk, lahko s to informacijo doučimo model in ga v realnem času izboljšamo. S tem omogočimo, da se model ves čas hitro prilagaja spremembam v podatkih, ki so nam na voljo.
Stalno izboljševanje oz. inkrementalno učenje pa je ena glavnih prednosti poslovanja na podlagi uporabe podatkov.
Primer uporabe
Zagotovo ste se kdaj med spletnim nakupovanjem znašli v situaciji, ko vam je spletna stran ponudila izdelek, ki naj bi bil primeren za vas. Če so bili podatki obdelani pravilno, ste ta izdelek res potrebovali in morda celo kupili. To je primer vključitve strojnega učenja v uporabniško izkušnjo. Kako deluje? Ko uporabnik pride v spletno trgovino, naredimo predikcijo in mu na podlagi tega ponudimo nekaj produktov. Ko uporabnik opravi nakup, informacijo prenesemo v sistem in jo uporabimo, da doučimo naš model. Z isto informacijo lahko preverimo ali je produkt, ki ga je kupil, med našimi predikcijami. Tako hitro vemo, če je naš model dober in če se pravilno prilagaja glede na podatke, ki jih prejema.
Enostavnost postavitve in nizki stroški
Naš predlog zasnove sistema je z uporabo odprtokodnih orodij, kot so Kafka, Elastic Stack, Apache Spark in Quarkus. Osnovna ideja je enostavna začetna postavitev sistema, ugodna cena in možnost nadgrajevanja posameznih komponent. Postavitev je možna tudi na manjšem segmentu zajetih podatkov in obdelav podatkov, nato pa se glede na potrebe in uporabnost nadgrajuje. Podatke je možno pridobivati iz različnih (novih) virov, prav tako pa lahko razširimo število kontekstualno odvisnih tokov in število odjemalcev, ki sistem uporabljajo. Začetni stroški so tako nižji, možnosti za razširitev pa praktično neomejene. Gradnja arhitekture skozi čas je popolnoma odvisna od naših potreb in želja, ne pa od omejitev sistema.
Kratek opis uporabljenih komponent:
Kafka je distribuirana platforma za pretok dogodkov. Omogoča visoko prepustnost in je razširljiva.
Elastic Stack združuje Elasticsearch, Kibano, Logstash in Beats. Logstash in Beats služita za pošiljanje podatkov do Elasticsearcha, ta hrani podatke in omogoča hitro iskanje po njih, s Kibano pa shranjene podatke vizualiziramo.
Apache Spark omogoča obdelovanje podatkov, namenjen je predvsem analizi ter strojnemu učenju z velikimi količinami podatkov.
Quarkus je programsko ogrodje za razvijanje java aplikacij. Namenjen je predvsem razvoju “Cloud Native” aplikacij s pristopom “Container First”.
Prednosti uporabe kontekstualno odvisnih tokov
Koristi arhitekture pretoka podatkov z uporabo kontekstualno odvisnih tokov so ogromne. Statističnim podatkom, ki jih imamo neprodušno zaprte v eni od zbirk podatkov, določimo uporabno vrednost in jih nato ponudimo v uporabo. Velika prednost je ta, da lahko podatke ponudimo v obdelavo že v trenutku shranjevanja v podatkovne zbirke, torej v skoraj realnem času, kar omogoča izjemno hitre reakcije v sistemu.
Tokove podatkov lahko celo uporabimo za podporo našim poslovnim procesom, npr. če prek spletne trgovine spremljamo tok naročil, lahko podporo skladiščem in dostavni službi implementiramo preko prijave na podatke naročil. Zaradi te bližnjice nam ni potrebno graditi še dveh dodatnih komunikacijskih kanalov med obema sistemoma. Na drugi strani pa imamo možnost podatke obogatiti, saj nam kontekstualno odvisni tokovi omogočajo združevanje in bogatenje podatkov iz različnih virov, ki so med seboj povezani. Podatke torej izpostavimo novim odjemalcem in hkrati olajšamo začetno fazo strojnega učenja, ki je vezana na pripravo podatkov. S tem razbremenimo predvsem administratorje, ki bi te podatke morali pripraviti.
Previdnost pa velja pri obdelavi osebnih podatkov, ki jih je potrebno zaščititi. Kontekstualno odvisni tokovi nam omogočajo, da osebne podatke v realnem času poiščemo in maskiramo, uporaben del podatkov pa še vedno ponudimo uporabnikom, ki se priklopijo na podatkovni tok – tako se zaščitimo pred neavtorizirano uporabo podatkov.
Podatki so zlato in prav je, da jih čim bolje uporabimo. Prav zato je v današnji informacijski dobi hitrost odzivov na spremembe ključna. Stopamo v dobo strojnega učenja, v kateri dostop do pravih podatkov in njihova obdelava lahko pomeni razliko med uspešnim in neuspešnim poslovanjem.
Na prihodnost, na strojno učenje, na uspešne projekte!