13.1.2020
Tässä tekstissä tutustutaan poikkeamiin datassa. Tätä tekstiä kirjoittaessa mielessäni on ollut pääasiassa talousdata, joten käytännön viittaukset ohjaavat siihen suuntaan, vaikka aihe pätee kaikkeen dataan. Tavoitteena on tuoda esiin poikkeamien merkitystä ja miten niitä voisi löytää. Perinteisien menetelmien ja ihmisen silmäparien avuksi voidaan tehdä automatisoitua datan käsittelyä algoritmeilla, jotka oppivat itsenäisesti datan perusteella tuomaan esiin mahdolliset poikkeamat.
Tässä yhteydessä poikkeamalla tarkoitetaan lukua tai lukuja aikasarjassa, jotka ovat syystä tai toisesta erikoisia kyseisen aikasarjan muihin lukuihin nähden. Nämä luvut voivat olla virheellisiä arvoja, oikeita mutta historiaan nähden hetkellisiä heilahduksia erikoiseen suuntaan tai oikeita lukuja jotka johtuvat täysin muuttuneista olosuhteista. Yhtenäistä näille on, että poikkeava luku eroaa jotenkin siitä mitä on aiemman perusteella odotettavissa.
Virheiden löytäminen ja korjaaminen vaikuttaa suoraan datan laatuun. Datan parissa työskennellessä on tärkeää, että käytettävissä oleva informaatio on oikein ja luotettavaa. Tämä vaatimus pätee oli aihepiirinä sitten esimerkiksi kirjanpito, sisäisen laskennan laskelmat, operatiivisen järjestelmän kirjaukset tai käyttäjien tekemä ennuste.
Yksittäiset oikean arvon aiheuttamat poikkeamat voivat olla yllätyksiä tai liiketoiminnassa jo tuttuja arvoja. Esimerkiksi yksittäinen erikoistilaus, jollaista ei aiemmin ole ollut, näkyy poikkeamana muun muassa myyntitilillä. Tälle poikkeamalle kuitenkin löytyy looginen selitys, joka myös yleensä kiinnostaa raportin lukijaa. Tämäntyyppinen poikkeama voi myös olla ensimmäinen merkki seuraavasta poikkeamasta.
Muuttuneet olosuhteet näkyvät datassa ensin poikkeamana. Tiedossa oleva muutos voidaan ottaa huomioon heti, mutta toisinaan vasta ajan myötä selviää onko kyseessä pysyvä vai hetkellinen muutos. Esimerkiksi yhtiön liiketoimintayksikön myynti näkyy yhtiön tuloslaskelmassa monilla tileillä selkeästi. Tämänlaiset muutokset vaikuttavat liiketoimintaan ja mitä nopeammin ne tunnistetaan, sitä aiemmin ehditään reagoimaan muutokseen.
Riippumatta poikkeaman tyypistä, yleensä siihen pitää reagoida joko korjaamalla virhe tai sitten tekemällä liiketoimintaprosessiin muutoksia, jotta muuttuneessa tilanteessa voidaan toimia järkevästi.
Tavanomaiset menetelmät poikkeamien löytämiseen on informaation silmämääräinen tarkastelu ja esimääritellyt säännöt, joiden perusteella liputetaan epäilyttävät tapaukset. Kummassakin tapauksessa ihminen on antanut arvionsa siitä, mikä on normaalia toimintaa ja mikä on poikkeama.
Informaation määrä on monesti niin suuri, ettei ole mahdollista tai järkevää varmistaa jokaista yksityiskohtaa erikseen. Datan laadun varmistamiseen menee kuukausittain paljon aikaa, vaikka ei kävisi jokaista kohtaa erikseen läpi. Isojen lukujen massassa suuretkin virheet menevät helposti huomaamatta läpi. Tästä johtuen mm. Controllerien työajasta suuri osa menee kokonaisuuden tarkasteluun sekä tästä hieman pienempien osakokonaisuuksien läpikäyntiin tiheämmällä kammalla, jotta virheitä ei pääsisi raporteille asti.
Monissa ohjelmistoissa on yksittäisiä kontrollipisteitä erilaisien virheiden metsästämiseen. Esimerkiksi laskutusjärjestelmässä voi olla tarkistus ettei tietyn tuotteen hinta voi ylittää raja-arvoa, vaan päätyy virhelistalle ihmisen tarkistettavaksi. Tämäntyyppistä menetelmää on myös verottaja hyödyntänyt omassa työssään, josta voit lukea Ylen artikkelista täältä. Tällainen lähestymistapa, jossa virhelistaa kerätään tarkistusta varten olisi hyödyllinen monissa tilanteissa. Useimmiten haasteena on kuitenkin määrittää, millä raja-arvolla virhelistaa täydennetään. Esimerkiksi kirjanpitoon on saattanut päätyä lasku väärälle kustannuspaikalle, mutta tällaisen estämiseksi on hankala muodostaa loogista sääntöä, jota kone voisi orjallisesti toteuttaa.
Datan suuri määrä ja monimuotoisuus ovat ihmisille hankala yhdistelmä. Tietokone käsittelee dataa huomattavasti nopeammin, eikä se kärsi keskittymisen puutteesta. Jotta tietokone osaa käsitellä dataa halutulla tavalla, sille pitää antaa sopivat ohjeet. Tässä avuksi otetaan algoritmit. Algoritmi määrittelee tietyn prosessin datan käsittelylle ja laskennoille. Algoritmien avulla voidaan myös määritellä edellisessä kappaleessa mainittuja raja-arvoja tapauskohtaisesti ilman, että ihmisen tarvitsee osata arvioida sopivaa tasoa.
Algoritmien valinta riippuu huomattavasti ratkaistavasta ongelmasta ja saatavilla olevasta datasta. Algoritmeja on lukuisia, vaikka aiheen rajaa vain poikkeamien tunnistamiseen aikasarjoista. Kullakin algoritmilla on omat vahvuutensa ja heikkoutensa. Lisäksi algoritmia valitessa pitää varmistaa, että algoritmin taustalla olevat ennakko-oletukset eivät ole ristiriidassa ratkaistavan ongelman ja saatavilla olevan datan kanssa. Algoritmien yksi merkittävä oletus on, että historia kuvaa edes jollain tavalla myös tulevaa. Seuraavaksi on mainittu muutamia algoritmeja antamaan kuvaa tämän aihepiirin valikoimasta.
Aikasarjojen kanssa monesti ensimmäisenä tartutaan yksinkertaiseen ja helposti käyttöön otettavaan algoritmiin, jota voidaan kutsua nimellä 3 sigma (sigma tulee tilastotieteestä ja tarkoittaa keskihajontaa). Tämän avulla pystytään liputtamaan kaikki luvut, jotka poikkeavat 3 sigman verran keskiarvosta. Tässä oletuksena on, että tarkasteltava data noudattaa normaalijakaumaa ja on tasaista. Esimerkiksi aikasarjassa usein esiintyvät trendit ja kausivaihtelut menevät tältä algoritmilta täysin yli hilseen.
ARIMA (Auto Regressive Integrated Moving Average) on toinen erittäin yleisesti käytetty algoritmi. Tässä algoritmissa yhdistetään pari yksinkertaista tilastomatematiikan työkalua eli autoregressiivisyys ja liukuva keskiarvo. Tähän löytyy myös variaatioita, jotka ottavat kausivaihtelut huomioon. ARIMAa yleensä käytetään ennustamaan tulevaa aikasarjaa, mutta samalla pystytään tunnistamaan algoritmin arviosta huomattavasti poikkeavat arvot.
Twitterillä töissä olleet henkilöt ovat kehittäneet oman algoritminsa, kun yllä olevat eivät palvelleet heidän tarpeitaan. Heidän ideoima S-ESD (Seasonal Extreme Studentized Deviate) on kaksivaiheinen prosessi. Ensin siivotaan aikasarjasta trendit ja kausivaihtelut, jonka jälkeen saadaan poikkeamat esiin tehokkaalla ESD-algoritmilla. Tästä on lisäksi variaatio, jossa otetaan myös huomioon poikkeaminen aiheuttama vääristymä. Tällöin suuretkaan poikkeamien määrät eivät haittaa niin pahasti poikkeaminen tunnistamiseen.
Tilastotieteeseen perustuvat algoritmit, kuten yllä mainitut, ovat monesti varsin toimivia sopivassa ympäristössä. Vaihtoehtona on myös ottaa koneoppiminen avuksi ja hyödyntää neuroverkkoja (neural nets) poikkeaminen metsästämiseen. Neuroverkoilla voidaan esimerkiksi pyrkiä ryhmittelemään arvot, jolloin pääryhmän ulkopuoliset luvut voidaan tuoda esiin. Kuten tilastollisten algoritmien kohdalla, myös koneoppimisessa on monenlaisia neuroverkkotyyppejä- ja rakenteita eri käyttötarkoituksia varten. Vielä pidemmälle vietynä voidaan yhdistää tilastotieteen algoritmit ja neuroverkot.
Palataan alkuperäiseen ongelmaan eli miten löydetään poikkeamat aikasarjasta. Ihmisen tekemästä tarkistuksesta ei pääse eroon, mutta sen laatua voidaan parantaa ottamalla algoritmit tukemaan työskentelyä. Käytännössä esimerkiksi kuukauden vaihteen talousraportoinnissa annetaan algoritmin tarkastella suljettavan kuukauden lukuja, jolloin se tuo esiin mahdolliset poikkeamat. Samalla algoritmi voi käydä läpi ihmisten tekemät ennusteet ja tuoda sieltä esiin erikoiset ennusteluvut.
Poikkeamien tunnistamisessa algoritmit voivat toimia kuten tekstinkäsittelyn oikeinkirjoitus-toiminto. Kone päättelee datan perusteella mikä on normaalia toimintaa ja tuo esiin tähän sopimattomat arvot aikasarjoista. Kuten oikeinkirjoituksenkin osalta, ihminen voi sitten tarkistaa nämä poikkeaviksi epäillyt luvut ja tehdä tarvittavat johtopäätökset ja korjaukset. Tätä kautta informaation, raportoinnin ja päätöksenteon laatu paranee, kun selkeät erot tunnistetaan nopeasti.
Alla olevalla demovideolla näytämme, miten poikkeamien havaitseminen algoritmien avulla käytännössä toimii.
Post address:
Intito Oy, PL 87, FI-00101 Helsinki
Visiting addresses:
Kaisaniemenkatu 4 A, 00100 Helsinki
Länsikatu 15, 80110 Joensuu
Tietotie 2, 90460 Oulu
Business ID: 2657499-3
Visiting address:
Repslagaragatan 17 B
118 46 Stockholm
Business ID: 556971-0980
Visiting address:
Stortingsgata 4
0158 Oslo