Using Machine Learning to Build a Walkability Score
Am locuit în Seattle și m-am mutat recent într-un alt cartier. Conform algoritmilor patentați de Walk Score, m-am mutat din al 9-lea cel mai ușor de parcurs pe jos cartier din Seattle în al 30-lea. Încă pot merge cu ușurință pe jos până la o cafenea și un frizer local, dar cam atât! Pot spune că m-am mutat într-un cartier considerabil mai puțin circulabil pe jos, dar nu este clar cum se poate cuantifica magnitudinea sau ce intră într-un scor de circulabilitate.
Am folosit anterior API-ul Walk Score ca sursă de date pentru a prezice gruparea locațiilor scuterelor electrice. Walk Score este un site web care ia o adresă și calculează o măsură a gradului său de mers pe jos pe o scară de la 0 la 100, folosind algoritmi brevetați și diverse fluxuri de date.
Ca cineva căruia îi place să meargă pe jos pentru a ajunge în anumite locuri (și să facă drumeții!), am devenit curios ce alimentează acești algoritmi brevetați care generează un scor de mers pe jos. Mi-am propus să pun următoarele întrebări:
- Poate algoritmii patentați Walk Score să fie supuși unui proces de inginerie inversă?
2. Ce caracteristici sunt importante în construirea unui scor de mers pe jos?
Pentru a răspunde la aceste întrebări, am construit un set de date personalizate prin colectarea unui set divers de date granulare ale orașului Seattle și date API Walk Score pentru a antrena modele de învățare automată pentru a prezice un scor de mers pe jos. Am reușit să antrenez un model care a obținut un R² de 0,95 pe datele din setul de teste. R pătrat explică măsura în care variația setului de caracteristici explică variația scorului de mers pe jos.
În esență, am reușit să fac inginerie inversă în metodologia Walk Score și să recreez algoritmii brevetați care alimentează Walk Score-ul lor. Cele mai importante caracteristici pentru capacitatea de mers pe jos a unei locații sunt numărul de restaurante pe o rază de 1 000 de metri, densitatea populației din acel sector de recensământ, numărul de supermarketuri pe o rază de 1 000 de metri și proximitatea în metri față de cea mai apropiată zonare comercială.
Data
Am început prin a genera aleatoriu coordonate de latitudine și longitudine în zona Greater Seattle. Odată înarmat cu o listă de ~7800 de geolocații unice, am folosit API-ul Walk Score care a returnat un scor de mers pe jos pentru fiecare geolocație unică. Apoi mi-am propus să colectez date care să reflecte capacitatea de mers pe jos a zonei înconjurătoare a unei locații.
Surse de date:
- OSMnx: Pachet Python care vă permite să descărcați geometrii spațiale și să modelați, proiectați, vizualizați și analizați rețele de străzi din API-urile OpenStreetMap.
- Walk Score API: Returnează un scor de mers pe jos pentru orice locație.
- LocationIQ API: Nearby Points of Interest (PoI) API returnează punctele de interes (PoI) specificate sau locurile din jurul unei coordonate date.
- Seattle City Zoning: Districtele de zonare specifică o categorie de utilizare (de exemplu, rezidențial unifamilial, rezidențial multifamilial, comercial, industrial, etc.)
- Seattle Census Data: Furnizează populația și suprafața în mile pătrate pentru zonele de recensământ din cadrul Census Tracts and Geographic Identifiers
- U.S. Census Geocoder API: Pentru o anumită geolocație, API returnează secțiuni de recensământ și identificatori geografici unici. Acest lucru a fost crucial pentru fuzionarea corectă a datelor de zonare și de recensământ.
Feature Engineering
Datorită limitărilor zilnice ale cererilor zilnice ale LocationIQ API, am prelungit faza de colectare a datelor cu două săptămâni. Acest lucru mi-a lăsat ~7800 de geolocații unice pe care am proiectat apoi 27 de caracteristici pentru a antrena modele de învățare automată pentru a prezice capacitatea de mers pe jos în întregul Seattle.
Caracteristicile se împart în patru categorii:
- Bazate pe localități: numărul de stații de autobuz, parcuri, restaurante, școli, facilități totale pe o anumită rază (raza de 1000 de metri a fost utilizată pentru majoritatea facilităților)
2) Derivate din recensământ: categoria de zonare și densitatea populației
3) Pe bază de distanță: proximitatea față de cea mai apropiată autostradă, cel mai apropiat drum primar, cel mai apropiat drum secundar, cel mai apropiat drum rezidențial, cea mai apropiată zonare industrială
4) Structura rețelei de mers pe jos: numărul de intersecții, circuitul mediu, media lungimii străzilor, media străzilor pe nod
Model Development
Am antrenat trei modele de învățare automată: o regresie random forest, o regresie gradient boosting și o regresie extreme gradient boosting. Am antrenat fiecare dintre aceste modele pe două treimi din datele colectate și am rezervat restul unei treimi pentru testare.
Regresia extreme gradient boosting a făcut o treabă excelentă în ceea ce privește predicția scorului de mers pe jos, obținând un R² de 0,95 pe setul de testare de o treime (~2300 de eșantioane). Acest model a avut cea mai bună performanță în ceea ce privește acuratețea setului de testare (RMSE).
Ce este în cutia neagră?
Scopul ingineriei inverse a metodologiei Walk Score a fost acela de a obține o înțelegere a caracteristicilor cheie care intră în algoritmii lor. Vrem să știm ce anume face ca o locație să fie cu adevărat umblătoare, nu doar un scor! Examinând importanța caracteristicilor modelului de amplificare cu gradient extrem, numărul de restaurante pe o rază de 1 000 de metri a dominat ca fiind cea mai importantă caracteristică. Alte caracteristici importante ale modelului au fost densitatea populației într-o anumită zonă de recensământ, numărul total de facilități, numărul de supermarketuri pe o rază de 1 000 de metri și proximitatea în metri față de cea mai apropiată zonă comercială.
Concluzie
Score-ul de mers pe jos este deja un instrument util de luare a deciziilor cu privire la locul unde să locuiești și să dezvolți proprietăți imobiliare pe baza preferințelor de mers pe jos, cu bicicleta și cu transportul în comun. Acum este util să avem o înțelegere a metodologiei Walk Score și a caracteristicilor care intră în construirea algoritmilor lor. Cunoaștem acum datele de intrare care fac ca o locație să fie circulabilă pe jos conform Walk Score.
Modelul actual este antrenat în limitele orașului Seattle, unde caracteristicile urbane sunt similare. Există caracteristici suplimentare care ar putea fi colectate pentru a spori puterea de predicție a Walk Score, cum ar fi măsurătorile topografice și calculul distanței celei mai apropiate facilități. Predicțiile modelului ar putea fi cu ușurință extinse la alte zone, deoarece API-ul Walk Score și sursele de date care stau la baza generării caracteristicilor (US Census, OSMnx, City Zoning, LocationIQ) sunt disponibile pe scară largă.
Cod
Codul pentru acest proiect poate fi găsit pe GitHub
meu