Tällä kertaa blogissa sukelletaan tekoälyn pintaa syvemmälle. Tarkastelen erilaisia tekoälyn hyödyntämiä algoritmeja sekä esitän niihin liittyviä käytännön huomioita. Luvassa on rautaisannos tietoa ja tiukkaa asiaa.
Aloitetaan määrityksistä. Käytän sanoja "koneoppiminen" ja "tekoäly" samassa merkityksessä – tekoäly nimittäin on koneoppimista yhdistettynä automaatioon. Koneoppimisen vahvuus verrattuna tilastotieteeseen on siinä, ettei se ole yhtä tiukkojen sääntöjen rajoittama. Esimerkiksi lineaarinen analyysi asettaa selittäville muuttujille tarkat rajoitteet, jotta analyysi on ylipäänsä sallittua. Käyttökelpoisimpien koneoppimisalgoritmien kannalta ei esimerkiksi ole merkitystä, miten paljon muuttujat korreloivat keskenään tai noudattavatko ne normaalijakaumaa.
Päätöspuuyhdistelmät – tarkkuutta pienellä teholla
Puumalliyhdistelmien hyvä puoli on, etteivät laskennalliset vaatimukset ole suuria, ja algoritmien opettaminen on mahdollista perustietokoneen suorittimella. Mallinnuksessa käytettävä laskenta valmistuu nopeasti, ja tulokset ovat usein erinomaisia.
Itse aloitan mallinnuksen useimmiten opettamalla sekä satunnaismetsän (Random Forest) että Gradient Boosted Trees (GBT) -menetelmään perustuvat XGBoost- ja LightGBM-mallit. Nämä ovat kymmenistä tai sadoista päätöspuista muodostuvia yhdistelmiä. Puuyhdistelmäalgoritmit jaetaan päätöspuiden yhdistämistaktiikan perusteella satunnaismetsiin ja Gradient Boosted Trees -algoritmeihin. Näistä jälkimmäinen tuottaa keskimäärin muutamaa prosenttiyksikköä paremman tarkkuuden, mutta poikkeuksiakin löytyy. GBT-algoritmeihin verrattuna satunnaismetsät ovat kestävämpiä sekä ylisovitusta että opetusdatassa esiintyviä virheellisesti merkittyjä esimerkkejä kohtaan. Ne sopivat paremmin massiiviseen rinnakkaisprosessointiin, eivätkä ne myöskään edellytä hyperparametrien hienosäätöä.
Koneoppimisen vahvuus verrattuna tilastotieteeseen on siinä, ettei se ole yhtä tiukkojen sääntöjen rajoittama.
Neuroverkot – nyt myös taulukkomuotoiseen dataan
Mikäli kehitysympäristössä riittää tehoa, seuraavaksi opetan Pythonin fastai-kirjastossa oletuksena olevan 2-kerroksisen perceptron-neuroverkon Entity Embeddingeillä. Pitkään hyväksytty uskomus on ollut, etteivät neuroverkot ole kuvan, tekstin, videon ja äänen tuloksellisesta analytiikasta huolimatta luotettava ratkaisu taulukkomuotoisen datan käsittelyyn. Tämä pitää usein paikkansa, mutta parin viime vuoden aikana on nähty myös päinvastaista – ilmiön taustalla on uusi menetelmä käsitellä kategorista dataa, Entity Embeddings of Categorical Variables (Guo & Berkhahn, 2016). Tulokset ovat vertailukelpoisia puuyhdistelmiin ja joskus jopa selvästi parempia, mutta vaativat laskennallisesti enemmän ja ison datan ollessa kyseessä tehokkaan GPU-suorittimen.
Mallinnuksen tienhaarassa
Tässä vaiheessa mallinus voi edetä kahteen suuntaan. Tähän vaikuttavat kaksi tekijää – näyttääkö jokin algoritmi ylivoimaiselta, vai näyttääkö esimerkiksi Spearmanin järjestyskorrelaation perusteella siltä, että mallit eroavat toisistaan suuresti, mutta ovat silti laadukkaita. Mikäli jokin malleista näyttää ylivoimaiselta, kannattaa keskittyä tämän mallin hyperparametrien virittämiseen ja lisänäkemyksen saamiseen tulkitsemalla esimerkiksi sen muuttujien merkityksellisyyttä koko mallissa ja yksittäisissä ennustuksissa. Jälkimmäisessä tapauksessa kokeilen mallien yhdistämistä.
Yhdistelmämallit – enemmän kuin osiensa summa
Monta päätä on yhtä viisaampi. Lähtöajatus on, että erilaisiin matemaattisiin menetelmiin perustuvat mallit ovat oppineet eri asioita opetusaineistosta – jos esimerkiksi malli M1 tekee datan osassa A hyvää ennustetta, mutta datan osassa B huonoa, ja jos malli M2:n "osaaminen" on päinvastaista, eli malli M2 tekee datan osassa B hyvää ennustetta, mutta datan osassa A huonoa, niin on järkeenkäypää kysyä siltä algoritmilta, joka on hyvä siinä osassa dataa. Tärkeintä yhdistelmämallien luonnissa on osien keskinäinen erilaisuus. Siksi yhdistelmään voidaan ottaa mukaan heikkoina pidettyjä ja harvoin käytettyjä koneoppimisalgoritmeja, kuten tukivektorikoneita eri ytimillä, regularisoidun (LASSO, Ridge tai Elasticnet) logistisen regression, K Nearest Neighborsin, Naive Bayesin, tavallisen Perceptronin jne.
Tekstin on kirjoittanut alunperin Matti Karppanen.
Kuinka tekoälyn avulla voi menestyä omissa ydintoiminnoissaan ja mitä huomioida ennen ensimmäistä tekoälyprojektia? Lataa tekoälyn ostajan oppaamme.
Tutustu myös