Machine learning’o projektuose sunkiausia ne techninė dalis

Buvęs LinkedIn duomenų analitikas Peter Skomoroch konferencijoje Strata skaitė neblogą pranešimą apie tai, kas sunkiausia įgyvendinant machine learning ar dirbtinio intelekto projektus. Ne, ne techninės kliūtys. Sunkiausia tai, kad labai sunku tokius projektus tiksliai suplanuoti ir subiudžetuoti – o ir jų nauda dažnai sunkiai įvelkama į skaičius (kvantifikuojama). Didelei korporacijai, kurioje visi įpratę IT projektus vykdyti griežtai subiudžetuotais projektais (nesvarbu, kad dauguma jų tuos biudžetus vis tiek ryškiai perlipa), sunku suprasti, jog beveik neįmanoma suprognozuoti, ar veiks algoritmas ar ne, bei kiek laiko užtruks jį ištreniruoti. Niekas negali pasakyti, kada jau bus galima į gyvenimą paleisti save vairuojančias mašinas: visos prognozės buvo labai netikslios (berods Uber kažkada seniai sakė, jog 2020-aisiais jie vairuotojų nebeturės ir važinėsime autonominėmis mašinomis. Vis dar mane namo veža žmonių valdomi Toyota Prius).

The transition to machine learning will be about 100x harder than the transition to mobile.
Some of the biggest challenges are organizational, not technical.
Machine Learning shifts engineering from a deterministic process to a probabilistic one.

Peter Skomoroch

Labai svarbu, kad machine learning projektams vadovautų žmonės, kurie gerai supranta kompanijos duomenis, o ne vien yra matematikos profesoriai. Geras projektų vadovas supranta, kas machine learning‘e yra lengva, o kas sunku, ir, net jei tai ne itin sudėtinga problema techniniu požiūriu, supranta ar ji turi verslo vertę. Gal būt visai neverta šiai problemai skirti dėmesio? Taip pat svarbu suprasti turimų duomenų niuansus ir kokybę – dažnai teoretiniai matematikai tai pražiūri, nes matematiniuose modeliuose visi duomenys vienodai geri ir kokybiški. Realybėje – ne itin.

Duomenys nebūtinai sukuria daug verslo vertės

Šiandien užtikau gerą straipsnį apie tokį požiūrį, su kuriuo, deja, gana dažnai susiduriu kompanijose: reikia surinkti kuo daugiau duomenų, viską bet kaip sudėti į duomenų bazę ir iš to vis tiek gausis kas nors gero. Na, žinai, gi ten machine learning, dirbtinis intelektas, visa kita gi šiais laikais. Svarbu duomenų būtų.

Didesnėse kompanijose tai dažnai galima suprasti: pinigų projektams kaip ir yra, norisi užsidėti varnelę, kad „kažką darai su dirbtiniu intelektu“, net jei ir nieko nesigaus, tai bent jau bandysi. Nesvarbu, kad nelabai aišku, kokia reali to nauda verslui, ir kas bandoma pasiekti. Bet tai, pasirodo, dažnai pasitaiko ir tarp startuolių: vietoje to, kad pastangas skirti klientų paieškai ar geresniems procesams, per daug koncentruojamasi į duomenis, lyg jie būtų ta magiška burtų lazdelė, kuri visus staiga padarys milijonieriais.

Straipsnyje galima rasti gerų patarimų ir įžvalgų, kurių niekada reiktų nepamiršti, dirbant su duomenų projektais:

  • Kokie yra duomenų gavimo kaštai? Būtina bent jau apytiksliai paskaičiuoti, kiek kainuoja visi duomenų inžinieriai, visi vadovai, kuriems reikia ataskaitų ir planų, visi serveriai, infrastruktūra, visų vadovų laikas, kurį jie praleidžia kasdieną stebėdami analitines ataskaitas vietoje to, kad galbūt galvotų, kaip užkariauti naujas rinkas ir geriau padėti klientams.
  • Kokią naudą mes gauname iš duomenų? Kas atsitiktų, jei vienos ar kitos ataskaitos ar algoritmo nebūtų? Kiek verslo vertės susideda iš to, kad turime tikslesnę informaciją ir ją galime greičiau pasiekti? Taip neretai galima suprasti, kad visgi lengviau paskambinti klientui ir jo paklausti, kas jį mūsų svetainėje trikdo nei valandų valandas praleisti Google Analytics bandant išskaityti gudrias įžvalgas.
  • Per kiek duomenys pasensta? Dažnai net nepastebima, kad kelių metų duomenys jau niekam neįdomūs ir netgi nelabai naudingi: klientų poreikiai pasikeitė, elgsena kitokia, žiūrėk jau ir Facebook ne toks visiems įdomus, aplinka nujudėjo visai kitur. Kai supranti, kad tavo duomenys labai greitai sensta ir vien jų kiekis nesukuria tvaraus konkurencinio pranašumo (nes bet kas, investavęs metus ar kitus darbo gali irgi įgyti ne ką mažiau panašių duomenų), jų nuolatinis atnaujinimas ir kiekybės siekimas vien dėl kiekybės nušvinta kitomis spalvomis. Gal verčiau mažiau duomenų, bet labai gerai atrinktų? Ir gal užtenka logistinės regresijos ir visai nereikia neuroninio tinklo su dešimt tūkstančių faktorių?

Duomenų bazių testavimas

Prieš keletą dienų užtikau patikusį straipsnį apie automatizuotus duomenų bazių testus. Programiniam kodui jau senokai tapo įprastinė praktika rašyti testus, bet duomenų bazių struktūra testuojama ne visada. Tiesa, gerai sutvarkytoje duomenų bazėje įmanoma sudėti daug saugiklių: stulpeliams uždėti apribojimus, išorinius raktus ir panašiai, tačiau bendras požiūris į duomenų teisingumą bei validumą vis tiek reikalingas.

Autorius siūlo duomenis testuoti trijose vietose: pirminių šaltinių lygyje, tik juos sukėlus į duomenų bazę ir jau po verslo logikos transformacijų. Šis testų sąrašas atrodo visai nebloga pradžia:

  • Ar visi pirminiai raktai lentelėse unikalūs?
  • Ar [svarbiame stulpelyje] nėra null reikšmių?
  • Ar visi išoriniai raktai egzistuoja lentelėse kaip pirminiai raktai (be dublikatų, ir pan. – referencinis integralumas)?
  • Ar skaitinės duomenų reikšmės neiššoka iš tikėtino reikšmių rėžio?
  • Ar agreguoti duomenys atitinka detalesnių duomenų informaciją (ar čekio suma atitinka atskirų prekių sumai čekyje)?
  • Ar yra visi stulpeliai, kurie bus naudojami galutinėse lentelėse?
  • Ar įmanoma be klaidų paleisti dažniausiai pasitaikančias verslo užklausas?

Dar prie šio sąrašo pridėčiau patikrinimą, ar eilučių kiekis įvairiose duomenų bazės lentelėse yra toks, koks ir tikėtasi – labai dažnai dėl kokios nors lentelių jungimo klaidos duomenys susidublikuoja.

Ar jums tikrai reikia besimokančių (machine learning) sistemų?

Žiūrėk, turim duomenų, gal galėtumėt ką nors padaryt su machine learning ar dirbtiniu intelektu? Juk čia gi dabar ateitis“ – labai dažnas šiuolaikinis prašymas iš potencialių klientų. Neretai pasirodo, kad realių problemų sprendimui nereikia nei gudrių algoritmų, nei dirbtinio intelekto: didžioji vertė iš duomenų išspaudžiama žymiai paprastesnėmis priemonėmis, vien tik sutvarkius duomenis ar pasinaudojant senais gerais statistikos įrankiais. Kita vertus, logistinės regresijos terminai panašiai kaip ir bet kokios diskusijos apie neuroninius tinklus: nei apie vienus, nei apie kitus nedaug kas girdėjęs.

Problema tame, kad dirbtinis intelektas ir besimokančios sistemos yra dažnai minimos tokiose stebuklinguose kontekstuose, kad paprastas žmogus vargu ar gali suprasti, kad, nepaisant visų pastarųjų metų pasiekimų, jos nėra visagalės. Taip, jos gali atpažinti objektus paveiksliukuose, taip, jog pusėtinai gali išversti vienos kalbą į kitą, taip, jog gali kūrybiškai imituoti meno kūrinius. Ne, besimokančios sistemos dar negreit sukurs naują Nobelio literatūros kūrinį, ne, jos nesugalvos jums naujos verslo strategijos, ne, jūsų atsitiktinė duomenų sankaupa netaps aukso grynuoliu, nešančiu jums milijonus vien todėl, kad nutarėte investuoti į dirbtinį intelektą.

Vienas geriausių kriterijų, kuris labai greitai atmeta visas dirbtiniam intelektui kol kas neįkandamas idėjas yra užduoti sau klausimą, ar su norima spręsti užduotimi susidorotų paprastas žmogus. Jei žmogus duomenyse gali atrasti paaiškinamus sąryšius bei dėsnius, tai yra šansų, kad tai galės atlikti ir dirbtinis intelektas, nors to garantuoti negalima. Jei žiūri į klientų duomenis, ir pradedi suprasti dėsningumus, tuos dėsningumus galbūt atras ir besimokančios sistemos. O jei duomenys nieko nesako net protingiausiam žmogui, tikėtina, jog nieko protingiau nesugalvos ir dirbtinės sistemos.

Panašios nuomonės yra ir šio dienoraščio autorius. Jis gal dar griežtesnis: jei įmanoma duomenis perkratyti statistinės analizės pagalba ir jų ryšius aprašyti matematinėmis formulėmis, dirbtiniam intelektui – ne vieta. Nors suprantu, jog riba tarp sudėtingos statistikos ir besimokančių sistemų kartais nebe tokia ir aiški.

Kad ir kaip ten bebūtų, duomenys atneša daugiausiai verslo vertės, kai yra labai aiškiai suprantama, ką su jais norima padaryti ir kai yra užduodami teisingi verslo klausimai. Vien perleidus atsitiktinių duomenų rinkinį per dirbtinio intelekto algoritmus, verslo įžvalgų grynuolio nerasi. Garbage in, garbage out.

Neapdorotų duomenų nebūna

Yra toks gana gajus mitas, kad turint „žalius“ neapdorotus duomenis, galima nesunkiai padaryti objektyvias išvadas – juk neapdoroti duomenys turėtų kalbėti už save, jie neturėtų būti „sutepti“ šališkos žmogiškos nuomonės bei išankstinių nusistatymų. Kuo daugiau neapdorotų duomenų, tuo objektyvesnės išvados. Deja, visiškai neapdorotų duomenų nebūna. Jau pats faktas, kad kažkas juos rinko, reiškia, kad kažkas padarė sprendimą jais domėtis: o kodėl rinko būtent taip, o ne kitaip? Kodėl rinko tokius, o ne anokius? Kodėl skaičiavo žmones, o ne mašinas; kodėl išmetė iš skaičiavimų vaikus ar žmones vežimėliuose, kodėl nusprendė, jog tamsoje duomenys nepatikimi? Net jei duomenis renka automatiniai prietaisai (tarkim, kas kažkiek laiko skaičiuojama temperatūra), duomenys fiksuojami su aiškia paklaida, kuri nustatyta matavimo įrenginio specifikacijoje – pats įrenginys kažkiek matavimą apvalina, kažkiek veikia nepatikimai už tam tikrų temperatūros rėžių. Jei nežinosi šio konteksto, gali padaryti išvadą, kad temperatūra būna stabili (tiesiog nematai temperatūros pokyčių, mažesnių nei vienas laipsnis) ar ji niekada nenukrenta žemiau -20˚C.

Ypač sunku teisingai interpretuoti skaičius, kurie susiję su žmogumi. Nusikaltimų skaičius gali augti jau vien dėl to, kad pasikeitė suvokimas, kas yra nusikaltimas (tarkim, anksčiau gal buvo visuomenėje priimta, kad vaikus mušti ir tai nebuvo laikoma nusikaltimu). BVP ar infliacijos skaičiai gali kisti dėl metodologinių paklaidų. Pajamų duomenys, surinkti apklausos būdu, smarkiai skirsis nuo duomenų, gautų iš mokesčių inspekcijos.

Simply put, the context of data — why it was collected, how it was collected, and how it was transformed — is always relevant. There is, then, no such thing as context-free data, and thus data cannot manifest the kind of perfect objectivity that is sometimes imagined.

https://www.thenewatlantis.com/publications/why-data-is-never-raw

Šiuolaikinė „didelių duomenų“ mada bando įteigti, jog žali duomenys yra patys objektyviausi, nes jie neužteršti išankstinėmis nuostatomis. Kuo daugiau tokių duomenų, kuriuos galima sušerti taipogi labai objektyviam algoritmui, tuo teisingesnės išvados – ir tam net nereikia jokių ekspertų, mat jie tik įneš savo (nebūtinai teisingą) išankstinę nuomonę. Žmonėmis negalima pasitikėti dėl jų subjektyvumo: nuo to gali išgelbėti tik daugybė duomenų. Bet toks pasaulio vaizdas visgi yra utopinis: jei atvirai nedeklaruoji savo prielaidų, nereiškia, jog jų nedarai. Nematomos subjektyvios prielaidos duomenyse atsiranda jau jų rinkimo procese, ir to niekaip neišvengsi. Ką matuoji, tą ir optimizuosi. Duomenys už save nekalba, jie atkartoja duomenų rinkėjų nuomones.

Geriausias konkurencinis pranašumas skaičiais neišmatuojamas

Keletas gerų minčių iš David Perell Twitterio apie marketingą ir verslo metrikas:

The invention of the spreadsheet transformed marketing and corporate decision making. We’re over-reliant on numbers and metrics. We assume that only what we can measure is real and everything that is real can be measured. One writer calls this the Arithmocracy: a powerful left-brained administrative caste which attaches importance only to things which can be expressed in numerical terms or on a chart.

[…] “Not everything that counts can be counted and not everything that can be counted counts.

David Perell, https://twitter.com/david_perell/status/1056966027752431618

Pasaulyje, kuriame visi kreipia dėmesį tik į duomenis ir skaičius, geriausia konkurencinio pranašumo ieškoti būtent ten, kur jis neišmatuojamas. Ir nors duoną uždirbu žiūrėdamas į skaičius, su verslo metrikomis irgi galima persūdyti.

Lietuvos miestų gatvės pagal pasaulio šalis

Neseniai užtikau įdomią JAV bei kitų pasaulio didmiesčių gatvių orientacijos analizę, darytą vienu mano mėgstamiausių python modulių osmnx. Kadangi kodas viešas, tai buvo nesunku tą patį padaryti ir Lietuvos miestams.

Kaunas ir Vilnius – gana chaotiški, o kitur vyrauja aiški kvartalinė sistema

Kuo senesnis miestas, tuo didesnis senamiestis, o šie dažniausiai būna chaotiški. Naujesniuose miestuose daugiau vyrauja aiški kvadratinė kvartalinė sistema. Buvo įdomu tai, kad dažniausiai ji ne tiksliai šiaurės-pietų bei rytų-vakarų krypties, o apie 20 laipsnių pasukta pagal laikrodžio rodyklę (Alytus, Gargždai, Kretinga, Kėdainiai, Marijampolė, Mažeikiai, Neringa, Palanga, Telšiai – ypač Žemaitijoje). Tobulai pagal pasaulio šalis orientuoti Elektrėnai (kuo tikriausiai nereiktų stebėtis) ir Utena, Visaginas ir Šiauliai išsidėstę įstrižai žemėlapio šalims.

Wexler, Shaffer, Cotgreave: The Big Book of Dashboards

Dirbant su duomenimis ir neturint didelės menininko gyslelės man kartais trūksta teorinių žinių apie grafikų dizaino teoriją, spalvas bei bendrą „user experience“. Kai greitai sumetinėji grafikus Excelyje, tai gal tai ne taip stipriai jaučiasi, bet kai reikia sukurti kažką sudėtingesnio, reikia ieškoti pagalbos knygose. „The Big Book of Dashboards“ pradžiai tam visai tinka.

Knygos stipriausia dalis yra tie keli skyriai apie pagrindus: kodėl niekada nereiktų naudoti skritulinių diagramų, kodėl reikia žūt būt vengti šviesoforo spalvų (daltonikai jų neskiria), kodėl reikia vengti per didelio informacijos kiekio vienoje vietoje ir panašiai. Kuriant įvairiausias ataskaitas visada pirmiausia reikia išsiaiškinti klientų klausimus, kuriuos turėtų atsakyti duomenys ir ataskaitų struktūrą taikyti prie jų. Žinau, skamba lyg akivaizdžių ir paprastų tiesų kartojimas, bet realybėje tai ne taip lengvai pasiekiama. Negana to, ataskaitos turėtų numatyti ir tolimesnius klausimus, kurie gali kilti klientams: jeigu ataskaitos grafikas rodo, kad pardavimai Latvijoje mažesni nei užsibrėžtas tikslas, tikriausiai vartotojui kils klausimas kodėl? – Tikriausiai reikia ir būdo, kaip probleminį regioną išskaidyti pagal vadybininką arba prekių grupę, o išskaidžius „tooltipe“ (koks to teisingas lietuviškas pavadinimas? Etiketė?) pateikti ir išsamias detales: kiek ko kada parduota.

Daugiau nei pusė knygos yra įvairių ataskaitų pavyzdžiai, ir, nors jos tikrai įdomios, bet greitai pradeda kartotis, juolab, kad visas jas kūrė tie patys knygos autoriai. Po keletos ataskaitų jau mintinai žinai, kuriuos grafinius elementus ir dizaino sprendimus jie mėgsta. Būtų žymiai geriau, jei knygoje būtų daugiau tvirtos teorijos. Bet bendrai tariant, knyga verta dėmesio, ypač jei tai pirmoji šia tema skaitoma knyga.

Ben Goldacre – „I Think You’ll Find It’s a Bit More Complicated Than That“

Ben Goldacre turėjo šventą misiją: laikraščio the Guardian kassavaitinėje skiltyje jis nepailsdamas kritikuodavo žurnalistus bei mokslininkus, kurie nepaisydami statistikos dėsnių ar gerųjų mokslinio metodo praktikų pernelyg greitai peršokdavo prie toli siekiančių išvadų. Kliūdavo daugeliui, net tam pačiam the Guardian laikraščiui. Ši jo knyga yra kassavaitinės skilties straipsnių rinkinys.

Mokslinius atradimus padaryti ne taip jau lengva: mokslininkams reikia nemažai statistikos žinių, o jų atradimus, kurie skelbiami moksliniuose žurnaluose, kritiška akimi turi peržiūrėti ir kiti mokslininkai. Jei nesilaikoma mokslinio metodo, galima greitai gauti sensacingų, bet ne itin teisingų rezultatų. Jau vien dėl to verta labai skeptiškai vertinti bet kokius straipsnius mokslo tema populiariuose portaluose: verta atkreipti dėmesį į tai, kokia buvo statistinė imtis, ar buvo naudojama kontrolinė grupė, ar rezultatai visgi galutiniai ir jau išspausdinti, ar tai vis dar tyrimų stadijoje. Tarkim, šis sensacingas straipsnis apie moterų orgazmą atitinka visus šiuos blogiausius kriterijus.

Jeigu tai tik būtų nekalti straipsniai apie mitybą („mokslininkai nustatė, jog valgydamas špinatus gyvensi trigubai ilgiau“) ar orgazmą, gal ir nevertėtų jaudintis. Tačiau dažnai toks mokslo nušvietimas žiniasklaidoje turi toli siekiančių pasekmių. Panašiai atsitiko ir su teorija, kad skiepai nulemia vaikų autizmą: mokslinio pagrindo tam nėra, bet visuomenė įbauginta ir supermamos rimtai diskutuoja apie tai, kad skiepai yra žalingi. Žurnalistai turi ypač didelę atsakomybę, tik ne visiems jiems pakanka statistinių žinių bei suvokimo, kaip iš tiesų veikia mokslas.

Gal iš knygos ir tikėjausi kažkiek daugiau, bet bendrai paėmus, tai neblogas populiarus bei praktinis įvadas į dažniausiai pasitaikančias statistines bei logikos klaidas, ties kuriomis nesunku suklupti.

Ką rodo Mankiw taisyklė Lietuvai? Palūkanos jau per žemos

Penktadienį keletas bendrų draugų susėdo prie stalo padiskutuoti markoekonomikos ir investicijų temomis. Ir nors karščiausios diskusijos virė apie kriptovaliutas, buvo labai įdomu paklausyti Vaido Urbos pasakojimo apie makroekonomines teorijas. Niekad jose gerai nesigaudžiau, tad buvo labia naudinga suprasti, kokie vėjai vyrauja tarp makroekonomistų, ir ką jie prognozuoja artimiausiems metams.

Vienas įdomiausių Vaido paminėtų dalykų buvo Mankiw taisyklė. Kai kurie makroekonomistai mano, jog egzistuoja labai paprasta formulė, pagal kurią reiktų valdyti palūkanas: jos gali būti nusakomos formule

I = 8.5 + 1.4 * (CI - U)

kur I yra palūkanų norma, CI yra bazinė infliacija (neįskaitant maisto bei energijos kainų), o U – nedarbo lygis. Kadangi Lietuvoje pastaruoju metu kainos pradėjo gana stipriai kilti, ši formulė lyg ir rodo, jog Europos Centrinio banko palūkanos mums yra per mažos. Tai reiškia, jog pinigai mums dalinami per lengva ranka ir tikėtina, jog būsto kainos gali toliau didėti.

Pabandžiau nupiešti esamų (VILIBOR 3M dar esant litui bei EURIBOR 3M po euro įvedimo) bei šios taisyklės „rekomenduojamų“ palūkanų istoriją. Tiesa, naudojau ne bazinę infliaciją, o tiesiog metinį vartotojų kainų indeksą, tad svyravimai yra kiek perdėti (greitai neradau bazinės infliacijos duomenų šaltinio). Atrodo, kad panašioje situacijoje jau buvome 2006-aisiais, kai pradėjus didėti infliacijai palūkanos nespėjo kilti. Toks skirtumas tarp „rekomenduojamų“ palūkanų ir VILIBOR, koks yra dabar, buvo pasiektas dar už metų – 2007-aisiais. Kas buvo po to, turbūt pamename.

Mankiw rekomenduoja didesnes palūkanos, nei jos šiuo metu yra.

Penktadienio susitikimo metu nuskambėjo išvada, kad tokia mums per daug laisva pinigų politika toliau turėtų pūsti nekilnojamo turto kainas. Iš tiesų, kai skirtumas tarp „rekomenduojamų“ palūkanų ir esamų yra didelis, būsto kainos linkę didėti. Bet, vėlgi, žvelgiant į 2007-2008-ųjų patirtį, gyvenant skolintos gerovės salygomis makroekonominiai pokyčiia būna itin staigūs ir dideli. Tad kol kas nekilnojamo turto kainoms dar yra vietos paaugti, nors tai stipriai gali pasikeisti kad ir per artimiausius metus.

Šiame grafike gali pasirodyti, jog būsto kainų augimas jau pasiekė piką