Using Machine Learning to Build a Walkability Score
Asun Seattlessa, WA
Asun Seattlessa, ja olen hiljattain muuttanut toiseen kaupunginosaan. Walk Scoren omien algoritmien mukaan muutin Seattlen 9. käveltävimmästä kaupunginosasta 30. kaupunginosaan. Kävelen edelleen helposti paikalliseen kahvilaan ja parturiin, mutta siihen se sitten jääkin! Voin sanoa, että olen muuttanut huomattavasti huonommin käveltävään asuinalueeseen, mutta on epäselvää, miten kvantifioida suuruusluokkaa tai mitä käveltävyyspistemäärään kuuluu.
Olen aiemmin käyttänyt Walk Score API:ta tietolähteenä sähköskootterien sijaintien klusteroitumisen ennustamiseen. Walk Score on verkkosivusto, joka ottaa osoitteen ja laskee sen käveltävyyden mittarin asteikolla 0-100 käyttäen omia algoritmeja ja erilaisia tietovirtoja.
Kuten joku, joka nauttii kävelemisestä paikasta toiseen (ja vaeltamisesta!), olen tullut uteliaaksi siitä, mikä ruokkii näitä omia algoritmeja, jotka tuottavat käveltävyyspisteet. Lähdin kysymään seuraavia kysymyksiä:
- Voidaanko patentoituja Walk Score -algoritmeja kääntää takaisinpäin?
2. Mitkä ominaisuudet ovat tärkeitä kävelykelpoisuuspistemäärän muodostamisessa?
Vastaakseni näihin kysymyksiin rakensin räätälöidyn tietokokonaisuuden keräämällä monipuolista rakeista Seattlen kaupunkitietoa ja Walk Score API -dataa kouluttaakseni koneellisen oppimisen malleja, joilla voidaan ennustaa kävelykelpoisuussuhteen pistemäärä. Pystyin kouluttamaan mallin, joka saavutti R²-arvon 0,95 testijoukon datalla. R-neliö selittää, missä määrin ominaisuusjoukon varianssi selittää Walk Score -pistemäärän varianssia.
Pohjimmiltaan pystyin käänteismallintamaan Walk Score -menetelmän ja luomaan uudelleen omat algoritmit, jotka käyttävät Walk Score -pistemäärää. Sijainnin käveltävyyden kannalta tärkeimpiä ominaisuuksia ovat ravintoloiden määrä 1000 metrin säteellä, väestötiheys kyseisellä väestötiheydellä, supermarkettien määrä 1000 metrin säteellä ja etäisyys metreinä lähimpään kaupalliseen kaavoitukseen.
Data
Aloitin generoimalla satunnaisotannalla Greater Seattlen alueella sijaitsevia leveys- ja pituuspiirejä. Saatuani luettelon ~7800 ainutlaatuisesta maantieteellisestä sijainnista käytin Walk Score API:ta, joka palautti kullekin ainutlaatuiselle maantieteelliselle sijainnille käveltävyyspistemäärän. Tämän jälkeen lähdin keräämään tietoja, jotka kuvastavat sijainnin ympäröivän alueen käveltävyyttä.
Tietolähteet:
- OSMnx: Python-paketti, jonka avulla voit ladata paikkatietogeometrioita ja mallintaa, projisoida, visualisoida ja analysoida katuverkkoja OpenStreetMapin API:sta.
- Walk Score API: Palauttaa käveltävyyspisteet mille tahansa paikalle.
- LocationIQ API: Nearby Points of Interest (PoI) API palauttaa määritellyt PoI:t tai paikat tietyn koordinaatin ympärillä.
- Seattle City Zoning:
- Seattle Census Data: Tarjoaa väestömäärän ja pinta-alan neliökilometreinä Census Tracts and Geographic Identifiers -alueilla
- U.S. Census Geocoder API: Tietyn maantieteellisen sijainnin osalta API palauttaa Census tracts ja yksilölliset maantieteelliset tunnisteet. Tämä oli ratkaisevan tärkeää, jotta kaavoitus- ja väestönlaskentatiedot voitiin yhdistää oikein.
Feature Engineering
LocationIQ API:n päivittäisten pyyntöjen rajoitusten vuoksi pidensin tiedonkeruuvaihetta kahdella viikolla. Tämä jätti minulle ~7800 ainutlaatuista geolokaatiota, jotka sitten suunnittelin 27 ominaisuutta kouluttaakseni koneoppimismalleja, joilla ennustetaan käveltävyyttä koko Seattlessa.
Ominaisuudet jakautuvat neljään kategoriaan:
- Amenity-based:
2) Census Derived:
3) Etäisyyteen perustuva: läheisyys lähimpään valtatiehen, lähimpään ensisijaiseen tiehen, lähimpään toissijaiseen tiehen, lähimpään asuintiehen, lähimpään teollisuuskaavoitukseen
4) Kävelyverkon rakenne: risteysten määrä, keskimääräinen kiertonopeus, katujen keskimääräinen pituus, keskimääräiset kadut solmua kohti
Mallien kehittely
Kouluttamani mallit muodostettiin kolmella koneellisella oppimisella: satunnaismetsäregressiota, gradienttiboosting-regressiota ja äärimmäistä gradienttiboosting-regressiota. Koulutin kutakin näistä malleista kahdella kolmasosalla kerätystä datasta ja varasin loput kolmanneksen testausta varten.