Uuringud on näidanud, et 40% idufirmadest, kes väidavad, et nad kasutavad tehisintellekti ja masinõpet, seda tegelikult ei tee.

 

Masinõppe rakendamine praktikas

Vaatame ühte näidet sellest, kuidas masinõppe lahendusega kulusid optimeerida. Näide puudutab väga suurt avaliku sektori organisatsiooni, mille nime ja andmeid me ei saa välja tuua, kuid võime kirjeldada seda, kuidas seal kasutatakse ja kuvatakse masinõppe tehnoloogiat. Organisatsoon hõlmab kümneid üksuseid (enamjaolt eraldiseisvaid juriidilisi isikuid), kus töötab kokku tuhandeid inimesi. Seal on juurutatud küllaltki hea raamatupidamise ja finantsaruandluse süsteem, mis ei ole siiski päris täiuslik. Seega on organisatsioon saavutanud piisava küpsuse, et selle andmeid mudeldada ja analüüsida. Mõnda üksust, näiteks hankeprotsesse, on olnud vaja optimeerida, mida on suurte pingutustega ositi juba ka tehtud. See töö on tervikuna veel tegemata eeskätt seetõttu, et tegu on väga keerulise struktuuriga. Ilmselgelt tekib sellises olukorras küsimus: kui organisatsiooni üksuseid on optimeerinud finants- ja hankeeksperdid, siis miks mitte kasutada masinõppe algoritme, mis õpiksid juba tehtud töö põhjal optimeerimisprotsessid selgeks ning teeksid ettepanekuid selle kohta, kuidas ülejäänud üksusi optimeerida?

Ettevalmistused

Enne seda, kui võtta asutuses või ettevõttes kasutusele masinõppe algoritmid, tuleb teha järgmist:

  • KPMG eksperdid õpivad organisatsiooni tundma, et saada aru kogu terviku ja allüksuste äriprotsessidest,
  • äriprotsessid kaardistatakse ja visualiseeritakse erinevate vahenditega (nt MS Power BI),
  • tähtis on ETL (ingl Extract, Transform, Load) ehk rahvakeeli öeldes andmed puhastatakse.

Selleks, et andmeanalüütika üldse õnnestuks, on vaja mudeli jaoks piisavalt andmeid või võimalust neid luua. Ka organisatsiooni jaoks, mille andmeküpsus on küllalt hea, tuleb moodsa tehnoloogia rakendamiseks tavaliselt tuua andmeid juurde (andmeid rikastada või väärindada), milleks võib tihti kasutada mitmesuguseid välisallikaid (äriregistrit, riigihangete registrit, avalikke ostu- ja müügikeskkondi, kus kuvatakse toodete ja teenuste hindu jne). Mõnikord tuleb lausa teha vaatlusi või lisada teatud protsesside ja väärtuste eksperdihinnanguid.

Masinõppe algoritmi valik

Kui andmed ja arusaamine äriprotsessidest on olemas, tuleb leida sobiv algoritm: regressioon, tugivektorklassifitseerija, mõni närvivõrkude algoritm vms. Praegusel juhul valime klassifitseerijaks otsustuspuu (ingl decision tree). Klassifitseerija ülesanne on öelda meile, kas kulugrupp on hankeprotsessis optimeeritav. Otsustuspuu ei kuulu küll nende masinõppe algoritmide hulka, mille abil loodetakse saada väga kõrge determinatsioonikordaja, ja see võib olla ülesobituv (ingl overfitting), kuid praegusel juhul ei ole meil vaja suurt otsustuskindlust, vaid tagada sisendid inimekspertidele. Vastupidises olukorras, kus meil oleks tegu täiesti automatiseeritud süsteemiga, näiteks soovitussüsteemiga (inlg recommender system), huvitaks meid võimalikult kõrge determinatsioonikordaja ja mudeli kallutamine täpsuse poole (täpsuse all on mõeldud precision’i-nimelist näitajat, mis tuleb eksimismaatriksist (ingl confusion matrix). Niisiis sobib meile selle organisatsiooni puhul otsustuspuu, kuna see klassifitseerija on lihtne, arusaadav ega esita kõrgeid nõudeid andmetele. See on antud juhul oluline! Allpool lahendame koos esimese väga tähtsa ülesande ehk juhendame, õpetame ja testime masinõppe algoritmi, kasutades selleks Pythoni programmeerimiskeele uusimaid mooduleid.

Teekide import ja andmete laadimine

Selles näites eeldame, et andmete puhastamine (ETL) on juba tehtud ning et me saame failist nimega “training_testing_set.xlsx” laadida mudeldamiseks ette valmistatud andmed. Need ongi need andmed, millega hakkame masinõppe algoritmi n-ö õpetama. Lisaks impordime programmeerimiskeele tehnoloogia, mida hakkame kasutama, näiteks:

  • pandas – Pythoni andmetöötluseks ja -analüüsiks mõeldud moodul (Wiki),
  • otsustuspuu – mitteparameetriline juhendatud õppemeetod (scikit-learn.org),
  • matplotlib – Pythoni vahend 2D-graafikute joonistamiseks (matplotlib.org).

Kood ise näeb välja selline:

Ülalpool on näha, milliseid andmeid võib (kuid ei pruugi) algoritmi õpetamiseks vaja minna: erinevad andmed selle kohta, kes on organisatsiooni tarnija, tarnitava kauba/teenuse raamatupidamislik staatus ja mitmesugused teised näitajad.

Andmed jagatakse treening- ja testimisandmeteks

Masinõppe algoritmi õpetamine koosneb esiteks õpetamisest endast ja teiseks õpitu kontrollist ehk testimisest. Selleks jagatakse mudelisse laetavad andmed kaheks: treening- ja testimisandmestikuks. See on vastutusrikas protsess, mille käigus tuleb jälgida, et algoritm ei piiluks testandmeid.

Andmete jagamiseks vajalik juhuslikkus on loodud juba laaditavas andmeallikas, mistõttu ei kasutata andmeteadlaste armastatud funktsiooni “train_test_split”.

Mudeli tunnuste kaalumine näitab, et mitte kõigil tunnustel ehk andmetel (kuigi nad võivad aidata olukorrast aru saada) ei ole märkimisväärset kaalu ja et need on piisavalt sõltumatud selleks, et algoritmi õpetada, mistõttu valitakse olemasolevast tabelist (vt ülalpool programmikoodi suur tabel) vaid teatud tunnused (vt allpool) ning käiku lastakse ainult piiratud valik andmeid ehk nn mudeli tunnuseid.

Andmete laadimine otsustuspuusse ja selle seadistamine

Tihti tuleb andmeid muundada ehk normaliseerida selleks, et algoritmid saaksid neist aru. Praegusel juhul pole see vajalik, kuna otsustuspuu suhtub etteantavatesse andmetesse leebelt. Koodireaga “clf_non_scaled = clf_non_scaled.fit(X_train,y_train)” söödame otsustuspuu algoritmile treenimisandmed, st otsustuspuu õpib ära, kuidas tuleb hankeülesandeid lahendada.

Koodireaga “for d in max_depths:” katsetame otsustuspuu suutlikkust erineva pikkuse juures. Pikkus määrab ära selle, kui paindlik otsustuspuu on ja kui palju see suudab otsuste tegemisel erinevaid kaalutlusi arvesse võtta. Võiks arvata, et mida pikem on otsustuspuu, seda rohkem võtab see otsustusprotsessi erinevaid aspekte arvesse ja seda targem on, kuid see ei ole nii. Liiga suur puu võib muutuda ületreenituks, st ülesobituda. Võtame puu pikkuseks 1–20 ja mõõdame, millise pikkuse juures saavutame kõige parema determinatsioonikordaja. Selleks laseme otsustuspuul prooviülesannet lahendada testimisandmetega, mis on näha järgmises koodireas: “test_r2.append(clf_non_scaled.score(X_test,y_test))”.

Eelnevast saab selgeks, et testimisandmete determinatsioonikordaja on otsustuspuul kõige suurem siis, kui puu pikkuseks on valitud 3 või 8. Kordaja on päris hea juba 3 juures! Viimasel juhul arvab puu õigesti ligi 86% ulatuses, kas kulugruppi saab hankeprotsessis optimeerida.

Iseenesest tekib nüüd küsimus, kas selline tulemus meid rahuldab, sest saab kasutada ka märksa moodsamaid masinõppe algoritme.

Tunnustel on erinev kaal

Otsustuspuu on võimeline iseseisvalt jõudma järeldusteni selle kohta, millised on kõige enam otsuste tegemist mõjutavad tunnused. Selle üle otsustamist, kas kulugruppi saab hanke alla viia, mõjutavad kõige rohkem kulugrupi suurus (allpool graafikus „Arvete maksumus“), tarnija tegevusala ja tarnija tüüp. Otsustuspuu jääb raamatupidamisandmete (nt raamatupidamuslike artiklite) suhtes mõnevõrra skeptiliseks, sest nendele annab algoritm otsustamisel väiksema kaalu. Teisisõnu ei pruugi sellise keerulisema ülesande puhul nagu hankeprotsesside optimeerimine piisata ainult raamatupidamis- ja finantsandmetest!

Allpool valime otsustuspuu pikkuseks 8 ja uurime, milline on erinevate andmete kaal, kui teha otsuseid kulugrupi suunamisest hankeprotsessi.

Visualiseerimiseks kasutame väiksemat puud pikkusega 3. Alumisel pildil on näha vaid otsustuspuu osaline vaade.

Saab väita, et vähendatud pikkusega otsustuspuus mängib esmavaliku tegemisel kõige suuremat rolli isiku tüüp (eraisik, äriühing, MTÜ, SA, KOV jne), tähtsuselt järgmised on isiku tegevusala (hulgi- ja jaekaubandus, veondus ja laondus jne) ning kulugrupi suurus. Peenemad kaalutlused tulevad mängu alles pärast neid.

Tulemused ja kokkuvõte

Käsitlesime selles näites ainult otsustuspuu õpetamise protsessi. Järgmise sammuna tuleks tulemused valideerida, seejärel lasta otsustuspuul üksuseid optimeerida ja esitada meile ettepanekuid. Selleks peame alustama näiteks nii:

“df_production = pd.read_excel(‘production_set.xlsx’, names = columns)” “print(‘Tootmisandmestikus on kokku:’,len(df_production),’rida’)”

Kokkuvõttes pakkus masinõppe ja ekspertide koostöö näites vaadeldud organisatsioonile konsolideerimisvõimalusi, mis annavad päris suure kulude kokkuhoiu ning vabastavad paljud spetsialistid pidevast arveldamise ja andmesisestamise kohustusest.

 KPMG kasutab masinõpet aktiivselt. Meil on 1700 andmeteadlasest ja 12 500 andmeanalüütika eksperdist koosnev üleilmne võrgustik Lighthouse (Targa Automatiseerimise ja Andmeanalüütika Oivakeskus), mis on üks suurimate kogemustega masinõppe ja tehisintellekti rakenduskeskuseid. Pärast seda, kui Lighthouse laienes Eestisse 2018. aasta oktoobris, oleme masinõppe lahendusi Eesti klientide heaks hoolega kasutanud erakordselt heade tulemustega. Masinõppe põhilised rakendusalad seonduvad laiema riskijuhtimisega: pettuste tuvastamise, tausta- ja riskihindamise, rahapesu, samuti äriprotsesside optimeerimisega, mis hõlmab ka kulude ja tulude optimeerimist. Siiski tasub meeles pidada, et mitte kõiki (optimeerimis)ülesandeid ei saa lahendada masinõppe ja tehisintellektiga.

Jaga artiklit

Jäta kommentaar