Pradžia / Programavimas / Prognozinė analitika

Prognozinė analitika

Prieš kelerius metus prognozinė analitika buvo kažkas, apie ką kalbėjo tik didelės korporacijos su savais duomenų mokslo skyriais. Šiandien situacija visiškai kitokia – nedidelė elektroninės prekybos parduotuvė gali naudoti tuos pačius principus, kuriuos taiko bankai ar telekomunikacijų milžinai, tiesiog mažesniu mastu ir su prieinamesniais įrankiais. Tai, kas anksčiau atrodė kaip mokslinės fantastikos elementas – gebėjimas numatyti ateitį remiantis skaičiais – dabar yra kasdienis verslo įrankis, kurį galima paleisti nešiojamame kompiuteryje su Python biblioteka ir kelių gigabaitų duomenų rinkiniu.

Kalbant paprastai, prognozinė analitika – tai istorinių duomenų analizė siekiant nustatyti tikimybę, kad kažkas įvyks ateityje. Nesvarbu, ar tai klientas, kuris ketina atsisakyti paslaugos, ar mašinos dalis, kuri greitai sugis, ar akcijos kaina, kuri gali pakilti kitą savaitę – logika ta pati. Tik metodai ir sudėtingumas skiriasi priklausomai nuo užduoties.

Kuo prognozinė analitika skiriasi nuo įprastos statistikos

Daugelis painioja prognozinę analitiką su paprasta ataskaitų analize. Skirtumas iš tikrųjų fundamentalus. Kai žiūrite į praėjusio mėnesio pardavimų grafiką, tai yra deskriptyvinė analitika – ji pasakoja, kas jau įvyko. Kai bandote suprasti, kodėl taip įvyko, pereinate prie diagnostinės analitikos. O prognozinė analitika žengia žingsniu toliau – ji naudoja tuos pačius duomenis, bet bando atsakyti į klausimą „kas įvyks toliau?“.

Techniškai tai reiškia, kad modelis mokosi iš praeities duomenų sekų ir bando aptikti dėsningumus, kurie kartotųsi ir ateityje. Čia svarbu suprasti vieną dalyką – prognozė niekada nėra 100% tiksli. Modelis nesako „taip įvyks“, jis sako „yra 78% tikimybė, kad taip įvyks“. Šis tikimybinis mąstymas dažnai kelia sunkumų žmonėms, pripratusiems prie tikslių skaičių tabelėse.

Regresija, klasifikacija ir laiko eilutės

Praktiškai dauguma prognozinių užduočių krenta į tris kategorijas. Regresijos modeliai bando numatyti konkretų skaičių – pavyzdžiui, kiek kainuos butas ar kiek litrų degalų sunaudos automobilis per mėnesį. Klasifikacijos modeliai atsako į klausimą „taip ar ne“, arba renkasi iš kelių kategorijų – ar klientas paliks paslaugą, ar el. laiškas yra šlamštas, ar paskolos prašymas bus patvirtintas. Laiko eilučių prognozavimas naudojamas ten, kur svarbi chronologija – pardavimų sezoniškumas, elektros energijos suvartojimas, srauto svetainėje kitimas.

Kiekvienai iš šių kategorijų egzistuoja skirtingi algoritmai. Linijinė regresija, sprendimų medžiai, atsitiktiniai miškai (random forest), gradientinis stiprinimas (gradient boosting su XGBoost ar LightGBM) ir, žinoma, neuroniniai tinklai – kiekvienas turi savo stipriąsias ir silpnąsias puses. Nėra vieno universalaus recepto, kuris tiktų visoms situacijoms, nors XGBoost pastaraisiais metais tapo tarsi neoficialiu pramonės standartu struktūrizuotiems duomenims.

Kaip iš tikrųjų vyksta modelio kūrimas

Populiarioje kultūroje prognozinė analitika dažnai atrodo taip: paleidi algoritmą, jis „mokosi“, ir po kelių sekundžių gauni tikslią prognozę. Realybė gerokai nuobodesnė ir daug daugiau laiko sugaišta ne pačiame modeliavime, o duomenų paruošime. Praktikoje sakoma, kad apie 70-80% viso projekto laiko sunaudojama duomenų valymui, transformavimui ir savybių inžinerijai (feature engineering), o pats modelio mokymas užima likusius procentus.

Kodėl taip? Nes realūs duomenys yra chaotiški. Trūksta reikšmių, yra dubliuoti įrašai, skirtingi formatai, klaidingi įvedimai. Jei bandysite maitinti algoritmą tokiais duomenimis be paruošimo, gausite gražiai atrodantį, bet visiškai nenaudingą modelį. Tai vadinama principu „garbage in, garbage out“ – blogi duomenys niekada neduos gerų prognozių, kad ir koks sudėtingas algoritmas būtų naudojamas.

Savybių inžinerija – ten, kur slypi tikroji magija

Jeigu duomenų mokslininkas jums pasakys, kad tikroji vertė kuriama ne algoritmo pasirinkime, o savybių inžinerijoje – jis nemeluos. Tarkime, prognozuojate klientų nutekėjimą (churn). Turite žaliavinius duomenis – pirkimų datas, sumas, prisijungimo laiką. Bet tikrai naudingos savybės atsiranda, kai sujungiate šiuos duomenis kitaip: kiek dienų praėjo nuo paskutinio pirkimo, kokia vidutinė pirkimų suma per paskutinius tris mėnesius lyginant su praėjusiais metais, kaip dažnai klientas naudojasi klientų aptarnavimu.

Būtent šie sukurti, o ne žaliaviniai duomenys dažniausiai lemia, ar modelis bus naudingas praktikoje, ar liks tik akademiniu eksperimentu.

Įrankiai, kuriais realiai dirbama

Techninė ekosistema šiandien yra gerokai turtingesnė nei prieš dešimtmetį. Python su bibliotekomis scikit-learn, pandas ir numpy tapo standartu daugumai duomenų mokslininkų. R kalba vis dar populiari tarp statistikų ir akademinėje aplinkoje, ypač dėl stiprios statistinės analizės paketų bazės. Gilesniam mokymuisi naudojami TensorFlow ir PyTorch, ypač kai kalbama apie sudėtingesnius uždavinius, pavyzdžiui, vaizdo ar teksto duomenų analizę.

Įmonėms, kurios nenori pačios kurti infrastruktūros nuo nulies, egzistuoja debesijos platformos – Google Cloud Vertex AI, Amazon SageMaker, Microsoft Azure Machine Learning. Jos leidžia paleisti visą prognozinės analitikos ciklą – nuo duomenų paruošimo iki modelio diegimo produkcijoje – nesukant galvos dėl serverių valdymo. Tai ypač aktualu mažesnėms komandoms, kurios neturi resursų palaikyti sudėtingą IT infrastruktūrą.

Verta paminėti ir žemo kodo (low-code) sprendimus, tokius kaip DataRobot ar H2O.ai, kurie automatizuoja didelę dalį proceso – automatiškai išbando dešimtis modelių, parenka geriausius hiperparametrus ir pateikia rezultatus vartotojui, kuris net nebūtinai turi giliai suprasti, kas vyksta „po kapotu“. Tai kelia diskusijų – ar tai gerai, kad procesas taip automatizuotas, ar tai kuria klaidingą pasitikėjimą juodąja dėže?

Kur tai realiai naudojama

Teorija gerai, bet įdomiausia dalis – konkretūs pritaikymai. Finansų sektoriuje prognozinė analitika naudojama kredito rizikos vertinimui – bankas nusprendžia, ar suteikti paskolą, remdamasis modeliu, kuris apskaičiuoja nemokumo tikimybę. Draudimo bendrovės naudoja panašius principus nustatydamos premijų dydžius.

Mažmeninėje prekyboje prognozinė analitika padeda valdyti atsargas – jei žinai, kiek prekės parduosi kitą savaitę, gali optimizuoti sandėlio užpildymą ir išvengti tiek pertekliaus, tiek trūkumo. Amazon ir panašios kompanijos šioje srityje yra pasiekusios nepaprastą tikslumą, iš dalies dėl to, kad turi milžinišką istorinių duomenų kiekį.

Gamybos sektoriuje populiarėja prognozuojama priežiūra (predictive maintenance) – sensoriai stebi mašinos vibraciją, temperatūrą, garsą, o algoritmas mokosi atpažinti dėsningumus prieš gedimą. Tai leidžia sustabdyti įrangą planiniam remontui prieš ją sulaužant, o ne po to, kai gedimas jau įvyko ir sustabdė visą gamybos liniją.

Sveikatos apsaugoje modeliai naudojami numatyti paciento pakartotinio hospitalizavimo riziką, o telekomunikacijų sektoriuje – klientų nutekėjimo tikimybę, kas leidžia laiku pasiūlyti nuolaidą ar geresnę paketą prieš prarandant klientą visam laikui.

Dažniausios klaidos, kurių verta vengti

Dirbant su prognozine analitika, kelios klaidos kartojasi tiek dažnai, kad verta jas atskirai aptarti.

Persimokymas (overfitting). Modelis, kuris puikiai veikia mokymo duomenyse, bet visiškai suklumpa su naujais duomenimis. Tai atsitinka, kai modelis „įsimena“ specifinius mokymo duomenų atvejus vietoj to, kad išmoktų bendrus dėsningumus. Sprendimas – kryžminė validacija (cross-validation) ir tinkamas duomenų padalijimas į mokymo, validavimo ir testavimo dalis.

Duomenų nutekėjimas (data leakage). Klasikinis atvejis – į modelį netyčia patenka informacija, kurios praktikoje nebus turima prognozės momentu. Pavyzdžiui, prognozuojant klientų nutekėjimą, jei modelis naudoja informaciją apie tai, kad klientas jau susisiekė su atšaukimo skyriumi – tai jau nebe prognozė, o faktas iš ateities, kuris iškraipo visus rezultatus.

Ignoruojamas kintantis pasaulis (concept drift). Modelis, sukurtas 2019 metų duomenimis, gali visiškai neveikti 2024 metais, nes vartotojų elgesys, rinkos sąlygos ar kiti veiksniai pasikeitė. Todėl modelius reikia reguliariai pertreniruoti ir stebėti jų veikimą realiu laiku, o ne tik paleisti kartą ir pamiršti.

Pernelyg didelis pasitikėjimas skaičiais. Modelis pasako tikimybę, bet ne tikrumą. Verslo sprendimai turėtų remtis modelio išvestimi kaip vienu iš įėjimų, o ne vienintele tiesa. Žmogaus sprendimas ir konteksto supratimas vis dar būtinas, ypač kritinėse srityse kaip medicina ar teisė.

Kaip pradėti, jei įmonė dar neturi patirties

Jei įmonė tik pradeda kelionę prognozinės analitikos link, verta pradėti nuo mažo, aiškiai apibrėžto uždavinio, o ne bandyti iš karto sukurti universalų sprendimą visiems verslo procesams. Geras pradžios taškas – klausimas, kuris jau kelia realų skausmą: kodėl klientai nustoja pirkti? Kada tikėtinai baigsis sandėlio atsargos? Kurie klientai greičiausiai nemokės sąskaitos laiku?

Prieš imantis sudėtingų algoritmų, verta patikrinti, ar apskritai turima pakankamai kokybiškų istorinių duomenų. Be pakankamo duomenų kiekio ir istorijos, jokia, net ir pati modernioji technologija, nesukurs prasmingų prognozių. Taip pat vertėtų iš anksto apsibrėžti, kaip bus matuojamas modelio sėkmingumas – ne vien techniniais rodikliais (tikslumas, F1 balas), bet ir verslo terminais – kiek pinigų sutaupoma ar uždirbama dėl geresnių sprendimų.

Vietoj išvadų: ką reikia žinoti prieš imantis darbo

Prognozinė analitika nėra magiška lazdelė, kuri automatiškai atsako į visus verslo klausimus. Tai įrankis, kaip ir bet kuris kitas, kurio nauda tiesiogiai priklauso nuo to, kaip jį naudoji. Geriausi rezultatai gaunami ne tada, kai turi sudėtingiausią algoritmą, o tada, kai gerai supranti verslo problemą, turi kokybiškus duomenis ir žinai, kaip interpretuoti bei panaudoti modelio išvestį realiuose sprendimuose.

Jei planuojate diegti prognozinę analitiką savo organizacijoje, keletas praktinių patarimų, kurie tikrai pravers: pradėkite nuo mažo eksperimento, o ne didelio strateginio projekto – lengviau parodyti vertę ir gauti palaikymą, kai matomas greitas rezultatas. Investuokite į duomenų kokybę anksčiau nei į sudėtingus algoritmus – geras paprastas modelis su švariais duomenimis dažnai lenkia sudėtingą modelį su chaotiškais duomenimis. Nepamirškite modelio priežiūros po diegimo – tai ne vienkartinis projektas, o nuolatinis procesas, reikalaujantis stebėjimo ir atnaujinimo. Ir galiausiai – įtraukite žmones, kurie realiai naudosis rezultatais, į kūrimo procesą nuo pat pradžių, nes net ir geriausias modelis nieko nevertas, jei niekas juo nesinaudoja praktikoje.

Technologijos šioje srityje vystosi greitai, tačiau pagrindiniai principai – kokybiški duomenys, aiškiai apibrėžta problema ir realistiškas lūkesčių valdymas – išlieka nepakitę nepriklausomai nuo to, koks algoritmas madingas šiais metais.