Iloa ja älyä kaupunkipyöristä

Yksi viime vuosien ilahduttavimmista lisäyksistä Helsingin katukuvaan ovat olleet pirteän keltaiset kaupunkipyörät. Fillarin voi vuokrata kuka tahansa vuorokaudeksi, viikoksi tai koko kaudeksi lokakuun loppuun asti. Itse olen hyödyntänyt kaupunkipyöriä sekä työmatkoissa että vapaa-ajan riennoissa, ja myös ihan silkasta pyöräilyn ilosta. Kilometrejä tältä kesältä on kertynyt karvan alle 300km, eli karkeasti laskettuna Turkuun ja takaisin.

Kaupunkipyörät ovat suuren suosion myötä herättäneet tietenkin kiinnostusta siitä, miten koko järjestelmä on saatu toimimaan niin sulavasti. Nopealla uutishaulla löytyy viitteitä esimerkiksi tekoälyn hyödyntämisestä pyörien saatavuuden optimointiin (YLE) » Nämä asiat tietenkin kiinnostavat meitä Bilotilla ja (entisellä) Louhialla myös alan puolesta; kun eräänä hiljaisena kesäpäivänä sitten törmäsin HSL:n avoimeen dataan fillariasemien käyttötilastoista, oli kesän ”puhdeprojekti” selvillä.

Projektin tuloksena loihdin koneoppimisesta tuttua logistista regressiota hyödyntävän kartan, joka auttaa käyttäjäänsä päätöksenteossa vastaamalla seuraavaan kysymykseen: kannattaako odotella uutta pyörää?

Miksi kaupunkipyörät?

Kaupunkipyörät ovat julkinen palvelu: Niiden käyttämiseen liittyvät kuviot ja tilastot kuvaavat hienosti ihmisten yleistä liikehdintää kaupungilla. Tämä tekee niistä aiheena mielenkiintoisen: Joillakin asemilla pyörien vaihtuvuus on suurimmillaan ruuhka-aikoina eli aamuisin ja iltapäivisin. Toiset asemat taas ovat selkeitä iltakohteita, ja toiset suosittuja vain viikonloppuisin. Asemien käyttötilastoja tarkastelemalla ja analysoimalla voidaan päästä käsiksi mielenkiintoisiin havaintoihin koko Helsingin toiminnasta – miksi esimerkiksi Eteläesplanadin asemalla näkyy selkeä piikki torstai-iltaisin?

Toinen syy tälle aihealueelle on myös röyhkeän omakohtainen: Olen itse kaupunkipyörien innokas käyttäjä, ja harmittavan usein olen törmännyt tilanteeseen, jossa asema on joko tyhjä tai siellä olevat pyörät eivät ole käyttökunnossa. Analytiikan avulla voin näin ollen helpottaa ainakin omaa elämääni, ja toivottavasti myös muiden. 🙂

Miten?

Parsin minuuttikohtaiset JSON-tiedostot ensin yhdeksi CSV-muotoiseksi aikasarjaksi. Tämän jälkeen tein nopean valmistelun Tableau Prepillä, jonka avulla pääsin nopeasti kiinni datan rakenteeseen ja sen sisäisiin suhteisiin. Kun datasta oli hyvä kuva, aloin hahmotella mallia, joka vastasi tutkimusongelmaani.

Kun idea sopivasta mallinnustavasta oli valmis, etenin datan rikastamiseen ja säätietojen yhdistämiseen hyödyntäen sekä R:ää että Tableau Prepiä. Valmiin datamallin pohjalta pystyin laskemaan yksinkertaisen logistisen regression, joka validoi lähtestymistavan. Pienen hiomisen jälkeen rakensin mallista kaksitasoisen regression, joka mahdollisti asemakohtaisten ennusteiden laskemisen, joita hyödynnetään vastaamaan itse kysymykseen.

Mallin valmistuttua jäljellä oli enää tulosten visualisointi merkityksellisessä muodossa: nopea valmistelu Tableau Prepissä, ja tulokset kartalle. Loppu olikin enää kartan käytettävyyden hiomista ja lisäominaisuuksien hahmottelua.

Blogisarjan muut osat: