随机森林回归填补卡车交通数据空白:从HPMS到社区污染暴露评估
1. 项目概述:为什么我们需要更精细的卡车交通数据?
如果你做过交通规划、空气质量模拟或者环境健康影响评估,大概率对“平均年度日交通量”(AADT)这个指标不陌生。它是我们理解路网负荷、评估基础设施需求、乃至估算车辆排放的基础。在美国,公路性能监测系统(HPMS)是获取全国范围AADT数据的权威来源,由联邦公路管理局(FHWA)管理,各州上报数据汇总而成。这个数据集很庞大,覆盖了数百万个道路路段,是许多研究和政策分析的基石。
但干了这么多年交通数据分析,我越来越清晰地感受到HPMS数据的一个“阿喀琉斯之踵”:它对中重型车辆(MDV/HDV,也就是我们常说的卡车、货车)在非州际公路上的交通量记录,存在严重的稀疏性问题。简单说,对于州际高速,HPMS要求各州提供所有路段分车型的完整AADT数据;但对于其他类型的道路(如主干道、次干道、集散道路等),各州只需按随机抽样提供部分路段的卡车流量数据。这就导致了一个尴尬的局面:我们拥有海量的总交通量数据,但对于其中至关重要的卡车组成部分,却存在大片的数据空白。
这个数据缺口的影响是深远的。卡车交通不仅仅是货运经济的命脉,它更是拥堵、道路损坏、交通事故,尤其是空气污染和温室气体排放的主要贡献者。柴油卡车是氮氧化物(NOx)和颗粒物(PM)的重要排放源,这些污染物与一系列呼吸系统和心血管疾病密切相关。更关键的是,大量研究表明,低收入社区和少数族裔社区往往更靠近主要货运走廊,承受着不成比例的交通污染暴露风险。没有准确、高分辨率的卡车流量数据,我们几乎无法量化这种环境不公,也无法制定精准的减排和公共健康干预政策。
过去,填补这个缺口的主流方法是线性回归,或者简单地用总AADT乘以一个固定的车型比例系数。这些方法在变量关系简单、数据分布均匀时或许可行,但面对真实世界中错综复杂的交通系统——城市与乡村路网结构迥异、不同州数据采集标准不一、交通量与道路功能、车道数等因素间存在大量非线性交互——线性模型的局限性就暴露无遗。它无法很好地捕捉这些复杂模式,对于训练集中未出现过的变量组合,预测效果往往很差。
这正是我们转向随机森林回归的原因。这个项目核心要解决的,就是利用机器学习的力量,基于HPMS中已有的、部分路段完整的卡车流量数据作为“训练样本”,去智能地预测那些数据缺失路段的卡车AADT。最终目标,是构建一个覆盖全美85.2%公共道路的、包含分车型交通量的高分辨率数据集,并进一步计算出人口普查区级别的交通密度图。这个密度指标,可以作为评估社区层面交通相关空气污染暴露水平的可靠代理变量,为交通规划师、公共卫生研究员和环境政策制定者提供一个前所未有的强大工具。
2. 核心思路与技术选型:为什么是随机森林?
在动手敲代码之前,想清楚“为什么用这个模型”比“怎么用”更重要。我们之前尝试过线性回归,结果差强人意。交通数据天生就带着一堆“坏脾气”:非线性关系(交通量增长和车道数增加并非简单的等比关系)、高维度特征(州、县、道路等级、城乡属性等)、大量的类别变量、以及不可避免的数据噪声和缺失值。线性回归就像一个只会画直线的尺子,面对这些弯弯绕绕的数据 patterns,它无能为力。
随机森林回归则像是一位经验丰富的“委员会专家”。它的核心思想是“集思广益”:
- 自助采样:从原始训练数据中有放回地随机抽取多个样本子集(Bootstrap)。
- 随机特征:在构建每棵决策树的分裂节点时,只考虑全部特征的一个随机子集。
- 多树投票:建立大量这样的决策树,每棵树都对目标值(MDV或HDV的AADT)做出一个预测。对于回归问题,最终的预测结果是所有决策树预测值的平均。
这套机制带来了几个决定性的优势,完美契合了我们项目的需求:
- 处理非线性与交互作用:决策树本身就能通过层层“if-else”规则分割数据,天然适合捕捉非线性关系。多棵树的集成,进一步增强了模型发现复杂特征交互的能力。比如,模型能自动学习到“在乡村地区的州际公路上,总AADT对HDV流量的预测权重”与“在城市中心区的主干道上”是完全不同的模式。
- 对缺失值和噪声不敏感:随机森林不需要像许多传统统计方法那样进行复杂的数据插补。它可以通过“代理分割”来处理缺失值。同时,由于是多棵树平均,个别异常值或噪声数据对整体模型的影响会被大大削弱。考虑到HPMS数据来自各州,采集设备和标准不一,这个鲁棒性至关重要。
- 避免过拟合:通过随机抽取样本和特征,确保了每棵树学习的都是数据的不同侧面,降低了模型对训练数据特定噪声的依赖,提高了泛化能力。这对于我们要将模型应用于全国范围、各种未见过路段的预测任务来说,是生命线。
- 可解释性(相对)与特征重要性:虽然不如线性回归的系数那么直观,但随机森林可以提供特征重要性排序。这能告诉我们,在预测卡车流量时,究竟是“总AADT”、“道路功能等级”还是“所在州”起到了最关键的作用,为后续的模型分析和业务理解提供了抓手。
基于以上考量,我们放弃了“精致但脆弱”的线性模型,选择了“强大且稳健”的随机森林回归,作为填补全国范围内中重型车辆交通流量数据空白的核心技术。
3. 数据准备与预处理:魔鬼在细节中
拿到原始HPMS数据(我们用的是2018年版)只是万里长征第一步。原始数据就像刚从矿场挖出的原石,必须经过仔细的清洗、切割和打磨,才能用于机器学习建模。这一步的工作量和技术细节,直接决定了最终模型的上限。
3.1 数据概览与问题诊断
我们的数据集包含约650万条独立道路链路(road link),覆盖约40万车道-公里。首先,我们像医生一样给数据做了一次全面“体检”:
- 数据完整性检查:发现有约28%的道路链路(占47%的车道-公里)缺失MDV或HDV的AADT数据。这正是我们需要用模型填补的目标。
- 逻辑一致性清洗:我们移除了那些总AADT缺失,或者总AADT值竟然小于MDV与HDV AADT之和的记录(这明显是数据错误),这部分约占4.8%的链路。
- 默认值处理:对于缺失“直行车道数”的记录,我们根据美国道路的普遍情况,假设其默认值为2条车道。这是一个基于领域知识的合理填充。
3.2 空间数据处理与属性关联
交通数据天生具有空间属性。我们使用ArcGIS Pro进行了一系列地理处理:
- 几何修复:首先使用
Repair Geometry工具处理无效或空几何体,确保所有道路链路在空间上是有效的。 - 空间连接:将HPMS道路网络与2020年美国人口普查的县级边界进行叠加分析(Intersect),为每条道路链路赋予其所在的县和州信息(FIPS代码)。这是后续引入空间异质性的关键。
- 城乡分类校正:HPMS自带的2010年城市区域普查代码(UACE)存在错误和缺失。我们将其与更准确的2010年美国城市区域(UAC)边界数据进行重新对齐。这一操作修正了约14%道路链路的城乡分类,生成了新的字段:
0代表乡村,1代表城市,2代表小城市。城乡差异对交通模式影响巨大,必须厘清。
3.3 棘手问题的特殊处理
在清洗过程中,我们遇到了两个需要特别处理的“坑”:
- 特拉华州和亚利桑那州的“零值”问题:分析发现,这两个州有异常高比例(~47%和~38%)的链路其MDV/HDV AADT被记录为
0,而其他州的平均水平只有2%。与此同时,这两个州“NA”(缺失)值的比例又异常低(接近0%),而其他州平均有51%的缺失率。我们判断,这两个州很可能将“数据不可用”的情况统一记录为0,而其他州则记录为NA。为了统一标准,我们将这两个州所有的MDV/HDV零值重新归类为NA,纳入待预测数据池。 - 重复几何体:在全国层面,发现有1.10%的道路链路存在几何形状完全重复的问题(占3.06%车道-公里)。绝大多数重复链路的属性也完全一致,但有极少部分(63车道-公里)的重复链路,其AADT值或所属县不一致。我们的处理策略是:标记所有重复几何体,在数据集中仅保留第一条出现的记录,删除其余重复项。这移除了约0.81%的道路链路。
实操心得:数据预处理阶段花费的时间往往占整个项目的60%以上。对于地理空间数据,几何有效性检查和拓扑关系清理是重中之重,一个无效的多边形或断裂的线要素会导致后续空间分析全部失败。对于像“零值”代表“真零”还是“缺失”这类问题,必须结合业务背景和各州数据报告规范进行判断,不能想当然。建立一套清晰、可追溯的数据清洗日志至关重要。
4. 模型构建与超参数调优:不只是调包
数据准备好后,就进入了模型构建的核心环节。我们为MDV AADT和HDV AADT分别建立了两个全国级别的随机森林回归模型。
4.1 特征工程与变量选择
模型的特征(预测变量)选择基于交通工程常识和数据可得性:
- 总AADT:最核心的预测因子。卡车流量与总流量高度相关。
- FHWA道路功能分类:分类变量。州际高速、其他高速、主要干道、次要干道等,不同类型的道路卡车比例差异显著。
- 直行车道数:数值变量。车道数通常与道路容量和交通流量相关。
- 州代码(FIPS):分类变量(One-Hot编码)。用于捕捉各州在数据报告标准、经济结构、货运模式等方面的系统性差异。
- 县代码(FIPS):分类变量(One-Hot编码)。用于捕捉更细粒度的区域特性,如本地产业分布、港口或物流中心的影响等。
使用州和县作为特征,本质上是让模型学习空间自相关性和区域异质性,这是一种有效的、基于数据的空间效应建模方法,比单纯依赖经纬度坐标更稳健。
4.2 超参数调优:贝叶斯优化实战
虽然随机森林对超参数不敏感,但适当的调优能进一步提升性能。我们使用Python的scikit-learn库,并采用BayesSearchCV进行贝叶斯优化,目标是最小化均方根误差(RMSE)。
- 搜索空间:我们主要关注几个关键参数:
n_estimators(树的数量)、max_depth(树的最大深度)、min_samples_split(内部节点再划分所需最小样本数)、min_samples_leaf(叶节点最小样本数)和max_features(寻找最佳分割时考虑的特征数)。 - 优化过程:设置了48次迭代,采用3折交叉验证。贝叶斯优化的聪明之处在于,它会根据历史评估结果,智能地选择下一组可能更优的超参数进行尝试,比网格搜索(Grid Search)或随机搜索(Random Search)效率高得多。
经过优化,我们得到了两组最优超参数(如表所示)。但一个有趣的发现是:经过偏依赖分析,我们发现这些“最优”超参数带来的性能提升,与scikit-learn的默认参数相比,并不显著。这个结果很有启发性:对于像我们这样特征清晰、数据量大的问题,随机森林的默认设置(如n_estimators=100,max_depth=None等)已经非常接近最优。过度调优有时收益有限。因此,在最终的全量数据训练和预测中,我们出于效率和可复现性考虑,选择了使用默认超参数的随机森林模型。
表:经贝叶斯优化得到的随机森林回归模型最佳超参数
| 模型 | 树的数量 | 最大深度 | 最小分裂样本数 | 叶节点最小样本数 | 最大特征数 |
|---|---|---|---|---|---|
| MDV AADT | 120 | None | 2 | 1 | All |
| HDV AADT | 115 | 55 | 2 | 1 | All |
4.3 模型训练与轻交通量估算
我们用包含完整MDV/HDV AADT数据的路段(即非NA路段)作为训练集,训练了两个随机森林模型。然后,用训练好的模型去预测那些数据缺失路段的MDV和HDV AADT。
最后,轻交通量(LDV,即小汽车等)的AADT通过一个简单的减法得到:LDV AADT = 总AADT - (预测的MDV AADT + 预测的HDV AADT)。这确保了每个路段各车型流量之和与总流量一致,符合物理逻辑。
5. 从路段流量到社区暴露:交通密度计算
有了每条路段的车型级AADT,我们就可以进行更有意义的空间聚合分析。我们选择以人口普查区(Census Block)为单位计算交通密度,将其作为交通相关空气污染暴露的代理指标。这个指标比单纯的路段流量更能反映居民实际承受的交通影响。
计算步骤如下,均在GIS软件中实现:
- 数据准备:获取全美50个州和华盛顿特区2020年的人口普查区矢量边界数据,并合并成全国数据集。
- 创建缓冲区:以每个普查区的几何边界为中心,向外创建250米的空间缓冲区。这个距离的设定基于空气污染物扩散的相关研究,旨在捕捉那些虽不穿过普查区、但紧邻其边界的道路所产生的污染影响。
- 空间叠加分析:将缓冲后的普查区与HPMS道路网络进行叠加(Intersect)。对于完全位于缓冲区内的路段,全部计入;对于穿过缓冲区边界的路段,我们将其在边界处分割,只计算位于缓冲区内部的那部分长度。
- 计算车公里数:对于每个落入缓冲区的道路段
i,计算其车公里数:VKT_i = AADT_i * Segment_Length_i。这里AADT可以是总AADT,也可以是MDV、HDV或LDV的AADT。 - 汇总与密度计算:对一个普查区缓冲区内的所有路段,将其VKT求和,得到该普查区的总VKT。最后,用总VKT除以该普查区的实际面积(平方公里),即得到交通密度,单位为年均日车公里每平方公里。
注意事项:这里使用的是普查区的原始面积,而非缓冲区面积。因为我们的目标是评估该普查区单位面积上承受的交通负荷,缓冲区只是用来捕捉邻近道路影响的工具。计算LDV、MDV、HDV的密度时,只需在第四步分别使用对应的AADT即可。这套流程可以批量自动化处理,生成全国每一个普查区分车型的交通密度栅格或矢量数据,分辨率极高。
6. 模型验证与结果分析:我们的预测有多可靠?
模型做出来,不能光“自卖自夸”,必须经过严格的验证。我们采用了一套组合拳来评估模型的性能和可靠性。
6.1 整体精度与残��分析
首先,我们将数据按80%-20%划分为训练集和测试集。在测试集上的表现令人振奋:
- MDV模型:R² = 0.99, 平均绝对误差 = 12.97, 均方根误差 = 89.43
- HDV模型:R² = 0.99, 平均绝对误差 = 16.87, 均方根误差 = 146.16
R²接近1,说明模型解释了数据中绝大部分的方差。MAE和RMSE的绝对值看起来很小,但我们需要将其与AADT的实际量级对比。例如,HDV的MAE为16.87,这意味着平均每条路的预测误差约为每天17辆重型车,对于大多数道路来说,这是一个可接受的误差水平。
光看整体指标不够,我们绘制了残差图(预测值-真实值 vs. 真实值),并添加了局部加权散点平滑(LOWESS)曲线。结果显示,LOWESS曲线几乎是一条围绕0值线的水平线,没有呈现出明显的喇叭形、弯曲形或任何系统性模式。这说明模型在不同流量水平下(从低流量乡村道路到高流量高速路)都没有出现系统性的高估或低估,预测偏差是随机的,这是模型稳健的标志。
6.2 非空间与空间预测因子分析
我们进一步检查模型对不同特征类别的预测是否公平。
- 非空间因子:我们绘制了按“车道数”、“道路功能分类”、“总AADT分组”分组的预测值与观测值箱型图。结果显示,在所有分组下,预测值的分布中位数与观测值都非常接近,箱体重叠度很高,说明模型没有在某个特定类型的道路上(如多车道高速或低流量集散道)出现整体性的预测失灵。
- 空间因子:为了评估模型在不同地区的表现,我们计算了县级别的平均绝对百分比误差。这里有一个关键技巧:我们采用了VKT加权平均。因为一条日均流量只有几辆车的小路,即使预测误差百分比很大,其实际影响也很小;而一条主干道上较小的百分比误差,其绝对影响却很大。VKT加权能更真实地反映模型在交通负荷层面的整体精度。
全国范围MAPE的结果非常好:MDV AADT的平均MAPE为2.98%, HDV为3.45%。绝大多数县的MAPE都低于5%。当然,也有极少数(0.06% MDV, 0.19% HDV)乡村县的MAPE超过了100%。这在意料之中,因为这些地区卡车流量本身极低(例如每天只有1-2辆),任何微小的绝对误差都会导致巨大的百分比误差。但这并不影响模型在宏观和绝大多数区域的应用价值。
6.3 交叉验证与敏感性分析
为了排除一次数据划分的偶然性,我们进行了5折交叉验证。结果稳定,R²、MAE、RMSE的方差都很小,再次证明了模型的稳定性。
最后,我们进行了敏感性分析,模拟现实中的数据噪声。我们向“总AADT”这个最重要的预测变量中,逐步添加了0%到10%的高斯噪声。结果发现,随着噪声增加,模型R²仅有轻微、缓慢的下降。而当我们直接向响应变量(MDV/HDV AADT本身)添加噪声时,模型性能几乎不受影响。这个实验强有力地说明了两点:第一,我们的模型并不只依赖“总AADT”一个变量,其他特征(道路等级、空间位置等)也提供了重要的预测信息;第二,模型对训练数据中固有的测量误差和噪声具有很好的鲁棒性。
7. 成果、局限与实用建议
最终,我们生成了两套具有高应用价值的数据产品:
- 路段级交通量数据集:在原始HPMS数据基础上,补全了所有缺失的MDV和HDV AADT,并计算了LDV AADT。
- 普查区级交通密度数据集:提供了全美每一个普查区分车型(总、LDV、MDV、HDV)的交通密度估计值。
这些数据已开源,可用于交通规划、排放清单编制、环境健康研究、环境正义评估等多个领域。
7.1 已知局限与使用注意事项
没有任何模型是完美的,清楚其边界才能正确使用:
- 数据源限制:模型的精度上限受制于HPMS原始数据的质量。各州数据采集方法和设备的不统一是无法消除的噪声源。
- 低等级道路缺失:HPMS本身不包含功能分类为7(地方性街道,如居民区内部道路)的交通量数据,这部分道路约占全美总交通量的14.8%。我们的数据集也无法覆盖。
- 空间不确定性差异:模型在乡村低流量道路的预测不确定性相对较高(表现为高MAPE)。因此,不建议将本数据用于单一、特定路段的极端精细化分析(例如,争论某条乡村小路到底是每天过3辆还是5辆卡车)。它的核心优势在于区域、县、市乃至社区层面的宏观或中观分析。
7.2 给使用者的实操建议
如果你打算在项目中使用这个数据集或复现该方法,以下几点经验可能对你有帮助:
- 明确分析尺度:将分析聚焦在普查区、邮政编码区、县或州等聚合层面,充分利用数据在宏观层面的高精度优势,避免陷入微观路段的不确定性中。
- 结合其他数据:可以将生成的交通密度数据与人口普查数据、健康统计数据、土地利用数据等进行空间关联分析,用于评估环境公平性或健康风险。
- 模型迁移考虑:如果你想将类似方法应用于其他地区(例如中国或欧洲),核心思路是通用的,但特征工程需要调整。你需要找到当地对应的“道路功能分类”体系、“行政区划”变量,并确保有足够的有标签数据(即部分路段已知的卡车流量)用于训练。
- 关注数据更新:HPMS数据每年更新。我们的方法可以作为一个自动化流程,定期用新的HPMS数据重新训练模型,生成更新的交通量估算,以反映路网和交通流的变化。
这个项目让我深刻体会到,在数据科学应用于传统工程领域时,对业务背景的深刻理解(知道数据缺口在哪、为什么重要)与对机器学习技术的娴熟运用(知道用什么模型、为什么用它)同等重要。随机森林在这里的成功,不仅仅是算法本身的胜利,更是从问题定义、数据清洗、特征构建到验证评估这一整套严谨研究设计的胜利。它为我们提供了一把钥匙,打开了利用现有不完美数据构建高分辨率、高实用价值信息产品的大门。
