02.11.2018

Älyä fillarointiin osa 4: Karvalakkimallista jotain hienostuneempaa

Blogisarjan edellisessä tekstissä esiteltiin malli, joka laski ennusteita perustuen sateen määrään, lämpötilaan ja kategorisiin aikakomponentteihin. Alustavasti malli vaikutti siltä, että tuloksia on mahdollista laskea. Yksityiskohtaisten ennusteiden laskeminen on kuitenkin ongelmallista kahdesta syystä: parametrejä on näillä yhdistelmillä 170, eikä malli ota huomioon asemakohtaista vaihtelua.

Todennäköisyysmatematiikkaa ja jakaumia

Nämä ongelmat päätin taklata kahdella melko suurella muutoksella. Käydään ensin läpi, miten aikakomponenttia voi tarkastella fiksummin. Pienen pohdiskelun jälkeen palasi mieleen vanha tuttu yliopiston matematiikan luennoilta: Poisson-jakauman tiheysfunktio, jota voidaan käyttää laskemaan pistetodennäköisyys jokaiselle riville. Toisin sanoen: lasketaan arvo kaikista tapahtumista, jotka ovat tapahtuneet samalla asemalla samana viikonpäivänä, tuntina ja 2 minuutin intervallilla. Kutsutaan tätä todennäköisyyttä vastedes nimellä p(Bike). Koska dataa on 4 kuukauden ajalta 20 miljoonaa riviä, on jokaiselle asemakohtaiselle 2 minuutin pituiselle hetkelle keskimäärin 15 riviä. Poisson-jakaumasta ja todennäköisyyksistä löytää nopealla googlauksella lisää materiaalia, vaikkapa Wikipediasta »

Poisson-jakauman oletus täytyy kuitenkin tarkistaa, ennen kuin voidaan edetä pidemmälle; varianssin täytyisi vastata keskiarvoa. Tällä datalla keskiarvo (pelkästään pyörien saapumisilla 2 minuutin intervalleilla) on 0,07947, ja varianssi 0,1120. Close enough. Meitä kiinnostaa tässä tapauksessa todennäköisyys, että asemalle tulee vähintään yksi pyörä – eli halutaan laskea vastatodennäköisyys sille, että asemalle ei tule yhtään pyörää:

Kaavassa e on vanha tuttu Neperin luku, ja µ on aiemmin mainittu asema- ja minuuttikohtainen keskiarvo saapuneista pyöristä.

Pistetodennäköisyyden käyttäminen ennustajana helpottaa mallinnusta huomattavasti. Koska luku on hyvin pitkälti rivikohtainen, voidaan korvata aikaisemmat ~160 parametriä lähes yhtä paljon informaatiota sisältävällä p(Bike)-ennustajalla. Tämä helpottaa huomattavasti sekä ennusteiden laskemista että tulkitsemista.

Datan visualisointi p(Bike)-muuttujalla tuottaa myös selkeämmän ”pulssin”, joka ilmentää kaupungin sykettä:

Oikotiellä tehokkuutta mallinnukseen

Tsekataan miltä aikaisempi malli näyttää todennäköisyysennustajalla aikakomponenttien sijaan:

Ensinnäkin malli saatiin laskettua samalla 1.5%:n näytteellä silmänräpäyksessä verrattuna aiempaan useiden minuuttien urakkaan. Leikkauspisteen, sateen ja lämpötilan estimaatit muuttuivat suuntiinsa suuremmiksi, ja sateen p-arvo puolittui 0.08:n. P(Bike)-ennustaja sai suuren, 9.345-arvoisen estimaatin hyvin pienellä p-arvolla. Lopuksi residual deviance on itse asiassa 18 142 yksikköä pienempi kuin aikaisemmalla mallilla. Tulos ei sinänsä yllätä, koska kyseessähän on aikamoinen oikotie: ennalta laskettu todennäköisyys ottaa malliin mukaan aikakomponenttien sisältämän informaation, joka on prosessoitu etukäteen. Mutta hei, jos malli toimii ja antaa hyviä arvoja, niin mikäs siinä.

Toinen ongelma on kuitenkin vielä ratkaisematta: Kuinka antaa asemakohtaisia ennusteita? Nopea ratkaisu olisi sisällyttää asemat kategorisena muuttujana malliin suoraan. Tässä lähestymistavassa on kuitenkin ongelma: Malli käyttäisi ensimmäistä satunnaista asemaa (Kaivopuisto) vertailukohtana sille, miten todennäköisyys eroaa toiseen asemaan verrattuna. Ennusteiden laskeminen olisi edelleen monimutkaista. Lisäksi kyseinen lähestymistapa voisi helposti johtaa ylisovitukseen, eli malli keskittyisi liian rajatusti yksittäisiin asemiin. Mikä siis avuksi? Tähän en välttämättä olisi löytänyt vastausta, jos en olisi sattunut tekemään graduani samalla metodologialla: monitasoinen regressio!

Seuraavassa osassa siis tutkitaan, miten voidaan hajauttaa regressio toimimaan useammilla hierarkkisilla tasoilla.

Blogisarjan muut osat:

Jaa
Contact Person

Bloggaaja

Lauri Nurmela

Bilot Alumni

Vincit Bilot

Vincit ja Bilot ovat nyt virallisesti yhtä!

Toiminta jatkuu Vincit-nimen alla.

You have Successfully Subscribed!

Vincit Bilot

Vincit ja Bilot ovat nyt virallisesti yhtä!

Toiminta jatkuu Vincit-nimen alla.

You have Successfully Subscribed!