Blogisarjan edellisessä kirjoituksessa laskettiin melko yksinkertainen logistinen regressio, joka ennustaa pyörien saapumista asemalle riippuen säästä ja ajankohdasta. Nyt sukelletaan syvemmälle, ja lasketaan asemakohtaiset ennusteet käyttämällä monitasoista regressiota.
Pintaraapaisu hierarkkisiin malleihin
Monitasoinen eli hierarkkinen regressio on suunniteltu laskemaan malleja datalle, joka on hierarkisesti jakautunut selkeästi määriteltäviin yksiköihin. Sen juuret ovat koulutuksessa ja lääketieteessä: Esimerkiksi oppilaiden mallintaminen osana luokkia, tai potilaiden mallintaminen osana lääkäreitä, omassa tapauksessamme 2 minuutin välein tehdyt havainnot osana asemia. Tarkoituksena on laskea malli, joka osaa ottaa huomioon yksikköihin tai klustereihin liittyvät ei-mitattavissa olevat muuttujat – toisin sanoen ottaa myös huomioon, että klusterien sisällä voi olla vaihtelevia korrelaatioita. Aiheesta voisi jaaritella vaikka kuinka pitkään, mutta onneksi tähän on paljon loistavaa kirjallisuutta. Itse suosittelen A. Gelmanin & J. Hillin kirjaa ”Data Analysis Using Regression and Multilevel/Hierarchical Models”.
Joka tapauksessa, monitasoisen mallin voi asettaa laskemaan asemakohtaisen estimaatin niin, että asemakohtaisia havaintoja verrataan kaikkiin havaintoihin. Epävarmoissa tapauksissa estimaatti asetetaan lähelle yleistä tasoa, ja tilastollisesti vahvoissa tapauksissa estimaatin annetaan vaihdella enemmän.
Vihdoin maalissa – lopullisen mallin laskenta
Nopealla laskutoimituksella saadaan myös ”oikeutus” monitasoiseen mallinnukseen: tyhjän, pelkästään asemat käsittävän mallin antama ICC on 39%. ICC eli intraclass correlation on perinteisen lineaarisen regression R2-lukuun verrattava mittari, joka tässä tapauksessa kertoo kuinka paljon vaihtelu asemien välisissä eroissa selittää vaihtelusta koko datasetissä. Monitasoisissa malleissa ICC on tyypillisesti n. 10-20%, joten tämä tulos on hyvinkin merkittävä. Toisaalta tulos on myös uskottava: muistattekos ensimmäisen postauksen graafin, jossa näkyi asemakohtainen pyörien saatavuus? Tableaussa tehdyllä visuaalisella analyysillä saatiin jo parissa minuutissa nopeasti vihiä, että monitasoinen mallinnus on todennäköisesti järkevää.
Monitasoista mallinnusta voi tehdä monella tavalla ja prosessi on melko pitkä – omassa tapauksessani päädyin tekemään varying intercept varying slope -mallin, jossa saavat vaihdella sekä leikkauspiste – eli tässä tapauksessa asemakohtainen lähtöpiste – että aiemmin mainitun p(Bike):n estimaatti. Sään suhteen riittää, että lasketaan tasot ylittävä eli kiinteä estimaatti, koska havainnot ovat kaikki samalta sääasemalta, ja siten täsmälleen samat kaikille havainnoille samana ajanhetkenä. Tässä vaiheessa myös mallin laskenta pitää ottaa huomioon, sillä monitasoinen mallinnus vaatii huomattavasti resursseja. Itse pystytin Azureen Data Science Virtual Machinen, jossa tulee R valmiiksi asennettuna. Datat koneelle, koodi sisään ja malli raksuttamaan. Jonkun ajan päästä tulokset odottavat koneella, ja hommassa päästään eteenpäin. Tältä näyttävät asemakohtaiset estimaatit leikkauspisteen ja p(Bike):n suhteen:
Ennustusten johtaminen monitasoisesta logistisesta regressiosta
Nopealla vilkaisulla näyttäisi siltä, että hyvin pienet arvot leikkauspisteellä on annettu kesän keskivaiheilla käyttöön otetuille asemille Espoossa – eli lähtökohtaisesti todennäköisyys on pieni. Suuret arvot taas ovat suosituimmilla asemilla, joissa liikennettäkin on paljon. Datan vähäinen määrä voi vaikuttaa merkittävästi asemien arvioiden luotettavuuteen. P(Bike)-arvoissa pienimmät estimaatit taas ovat menneet kaikista vilkkaimmille asemille, ja vastaavasti vähemmän liikennettä nähneet asemat ovat saaneet suuremmat estimaatit. Toisin sanoen, vähän liikennöidyillä asemilla yksittäisen pyörän saapumisen todennäköisyys vaikuttaa ennusteeseen todennäköisyyttä nostavalla tavalla, ja vilkkailla asemilla todennäköisyyttä laskevalla tavalla. Negatiivinen estimaatti todennäköisyydelle voi ensivilkaisulla vaikuttaa oudolta – selitys on, että näitä asemakohtaisia estimaatteja verrataan yleiseen asemista riippumattomaan tasoon kun lasketaan ennusteita.
Lämpötilan estimaatti on 0.05, eli lämpötilan noustessa pyörien saapumisen todennäköisyys nousee hienoisesti asemasta riippumatta. Tulos käy järkeen, sillä lähtökohtaisesti on järkevää olettaa, että lämpimällä säällä pyöriä on enemmän liikkeellä. Sateella vaikutus on päinvastainen: -0.167. Tällä kertaa myös estimaatin keskivirhe on pienentynyt mitättömäksi, eli luku on luotettava. Nyt meillä onkin siis malli, jolla on helppoa laskea yksityiskohtaisia ennusteita joka asemalle! Yksittäisen ennusteen kaava tässä mallissa on seuraava:
Toisin sanottuna kiinteä leikkauspiste ja asemittain vaihteleva leikkauspisteen satunnainen komponentti, lämpötilan ja sateen kiinteät muuttujat, ja p(Bike):n kiinteä estimaatti sekä asemittain vaihteleva komponentti. Laskettu arvio on logaritmisella asteikolla aiemmin mainittu riski, jonka voi muuntaa todennäköisyydeksi kaavalla
Sehän toimii!
Lopuksi vielä tarkistetaan, että malli todella toimii. Tähän hyödynnän koneoppimisen puolelta tuttua AUC-lukua, joka kuvaa oikeiden ennustusten suhdetta vääriin. Tehdään tämä laskemalla malli näillä parametreillä viikoilta 23 ja 24, ja ennustetaan sillä lukuja viikoilta 27 ja 28.
Tulokset: AUC 0.87, ja ROC näyttää kaunista kurvia:
Ennustustarkkuus mallilla näyttäisi olevan noin 93%, eli 93% ennustetuista ykkösistä ja nollista ovat oikein. Huomioitakoon toki, että binäärisissä vastemuuttujissahan tarkkuus on vähän kyseenalainen mittari. AUC ja ROC ovat paljon parempia mittareita, koska ne kertovat suoraan miten malli pärjää eri raja-arvoilla ykkösten ja nollien päättelyssä.
Näillä arvioilla voidaan todeta, että malli näyttäisi toimivan oikein hyvin. Seuraavassa osassa palataankin maan pinnalle, ja laitetaan malli tositoimiin Tableaussa.
Blogisarjan muut osat:
- Osa 1: Kuinka loihtia älyä kaupunkipyörien avoimesta datasta?
- Osa 2: Visuaalisella analyysillä kiinni dataan
- Osa 3: Ongelmasta ideaan, ideasta preppaukseen ja karvalakkimalliin
- Osa 4: Karvalakkimallista jotain hienostuneempaa
- Osa 6: Monitasoisen logistisen regression hyödyntäminen Tableaussa
- Osa 7: Mitä opittiin, ja kuinka sitä voisi soveltaa?
