作者 | Perry Johnson
来源 | Medium
编辑 | 代码医生团队
住在西雅图,最近搬到了另一个社区。根据Walk Score的专有算法,从第9个最适合步行的西雅图街区搬到了第30个街区。仍然可以轻松地走到当地的咖啡馆和理发店,但那就是它!可以说已经搬到了一个相当不那么适合步行的社区,但目前还不清楚如何量化其规模或者步行性得分。
之前使用Walk Score API作为预测电动滑板车位置聚类的数据源。Walk Score是一个网站,它使用专有算法和各种数据流获取地址并计算其步行性的度量,范围从0到100。
https://www.walkscore.com/professional/api.php
作为一个喜欢步行去寻找地方的人,对这些产生行走能力得分的专有算法的推动感到好奇。开始提出以下问题:
1.专有的Walk Score算法可以进行逆向工程吗?
2.建立步行性分数有哪些重要特征?
为了回答这些问题,通过收集各种精细的西雅图城市数据和Walk Score API数据来构建自定义数据集,以训练机器学习模型以预测行走能力得分。能够训练一个模型,该模型在测试集数据上达到了0.95 的R²。R平方解释了特征集的方差在多大程度上解释了步行得分的方差。
从本质上讲,能够对Walk Score方法进行逆向工程,并重新创建为其Walk Score提供支持的专有算法。位置步行能力最重要的特征是1000米范围内的餐馆数量,人口普查区内的人口密度,1000米范围内的超市数量,以及距离最近的商业区域的米数。
数据源和机器学习管道
反向工程的完整数据管道步行分数方法
数据
开始在大西雅图地区随机生成纬度和经度坐标。一旦获得了大约7800个独特地理位置的列表,就使用了Walk Score API,它为每个唯一的地理位置返回了一个步行性分数。然后开始收集反映位置周围区域的可行性的数据。
数据源:
https://github.com/gboeing/osmnx
https://www.walkscore.com/professional/api.php
https://locationiq.com/
http://data-seattlecitygis.opendata.arcgis.com/datasets/862db70aaf974523b3bcae427f1f512d_5
https://www.seattle.gov/opcd/population-and-demographics/geographic-files-and-maps#2010census
https://geocoding.geo.census.gov/
特色工程
由于LocationIQ API每日请求限制,将数据收集阶段延长了两周。这给我留下了~7800个独特的地理位置,然后设计了27个功能来训练机器学习模型,以预测整个西雅图的步行性。
全功能集
功能分为四类:
1.基于设施:公共汽车站,公园,餐馆,学校,指定半径范围内的总设施(大多数设施使用1000米半径)
2.人口普查得出:分区类别和人口密度
按地区分类划分的地理位置观测
3.基于距离:靠近最近的高速公路,最近的主要道路,最近的二级公路,最近的住宅道路,最近的工业区划
4.步行网络结构:交叉点数,平均电路数,街道长度平均值,每个节点的平均街道数
单个地理位置绘制在OSMnx库的顶部,用于生成步行网络结构功能
模型开发
训练了三种机器学习模型:随机森林回归,梯度增强回归和极端梯度增强回归。根据所收集的数据的三分之二训练了这些模型中的每一个,并保留了剩余的三分之一用于测试。
极限梯度增强模型预测(R²为0.95)步行得分与三分之一测试集
极端梯度增强回归在预测步行得分方面做得非常出色,在三分之一测试集(约2300个样本)上达到了0.95 的R²。该模型具有最佳性能的测试集精度(RMSE)。
黑盒子里有什么?
对Walk Score方法进行逆向工程的目的是为了理解算法中的关键特性。想知道什么才能真正使一个位置步行,而不仅仅是一个分数!通过检查极端梯度增强模型的特征重要性,1000米范围内的餐厅数量占据了最重要的特征。其他重要的模型特征是给定人口普查区的人口密度,总设施数,1000米范围内的超市数量,以及距离最近的商业区划的接近度。
1000米范围内的餐馆,超市和总设施数量,人口密度和商业区划的接近度是预测位置步行得分的最重要特征。
结论
Walk Score已经成为一个有用的决策工具,可以根据步行,骑自行车和交通偏好来居住和开发房地产。现在有助于了解Walk Score方法以及构建算法的哪些功能。现在知道根据步行分数使位置可以步行的输入。
目前的模型在西雅图城市范围内进行训练,城市特征相似。可以收集其他功能以增强步行分数的预测能力,例如地形测量和最近的舒适距离计算。模型预测可以很容易地扩展到其他领域,因为Walk Score API和用于生成特征的基础数据源(US Census,OSMnx,City Zoning,LocationIQ)可以广泛使用。
该项目的代码可以在我的GitHub上找到
https://github.com/perryrjohnson/Walk-Score