-
到2020年,将道路交通事故造成的全球伤亡人数减半是联合国2015年发布的可持续发展目标之一[1]。国家在交通安全上的注意力不断增加,十九大报告中提出建设“交通强国”的口号,交通运输部门又提出了建设“新型交通运输智库”的政策。将交通事故态势预测结果应用到交通规划中,能提高交通安全水平。
研究者对交通事故的某些指标进行了预测,研究方法主要分为3类:统计回归法、灰色预测[2]、神经网络模型方法。
统计回归方法包括时间序列预测和许多经典的交通事故经验模型。文献[3]采用结构时间序列方法对马来西亚2001−2012年道路交通事故趋势进行了建模。文献[4]采用时间序列分析方法对库尔德斯坦地区道路交通事故伤亡数据进行了表征和预测。文献[5]将逆模糊函数引入到模糊时间序列预测的研究中,提高了时序预测工作的精度。文献[6]利用自回归综合移动平均线(ARIMA)和具有解释变量的自回归综合移动平均线(ARIMAX)建模技术,建立预测尼日利亚阿南布拉州事故频率的预测模型。文献[7]采用季节自回归综合移动平均法(SARIMA)预测了伊朗2005年3月−2016年2月月度道路交通伤害(RTI)的时间趋势。文献[8]建立了基于ARIMA模型和SVR模型的混合预测模型,用于交通事故统计指标的时间序列预测。回归模型具有计算简单方便的特点,对短期的数据变化有一定的预测能力,其实质是对数据的线性拟合。由于交通事故自身的随机性大,影响因素众多,且抗干扰能力弱,所以该方法预测的结果具有片面性,预测结果的可靠性得不到保证。
在样本数量少的情况下,灰色预测可以对具有光滑离散函数特性的数据建模进行预测。文献[9]提出了一种具有强指数规律的序列GM(1,1)模型来预测交通事故,但该模型只能描述单调的变化过程。文献[10]采用灰色系统理论MGM(1,4),基于电子稳定程序(ESP)的市场扩散,预测了德国2025年前道路交通事故的趋势。文献[11]提出了道路交通事故的灰色Verhulst预测模型,适用于非单调摆动发展序列或具有饱和状态的S形序列。文献[12]基于灰色系统理论和马尔可夫链理论,应用SCGM(1,1)_c拟合了道路交通时序数据的总体趋势。文献[13]提出了一种加权组合多种灰色预测方法的模型,虽然预测精度有所提高,但其实质是原始数据的线性组合,中长期预测仍存在不足。
神经网络预测方法具有较强的非线性映射及自学习能力、高鲁棒性,在许多领域得到了广泛的应用。文献[14]提出了一种基于BP神经网络的交通事故预测模型。文献[15]利用交通事故预测算法(如时间序列法、灰色预测理论和神经网络方法)预测1981−2007年中国交通事故总数。由于BP神经网络模型存在训练收敛速度慢、训练时间长、易陷入鞍点等缺点,文献[16]提出了一种灰色神经网络模型。灰色理论弥补了小样本数据中失真数据挖掘的不足,而神经网络弥补了灰色理论只能用于短期预测的不足。
本文的主要工作有:
1) 交通事故具有时间空间上的异构性,而大多数学者的预测工作过于宏观,空间上以国家为单位,时间上以年为单位,在应用层面,对有关管理部门的指导意义不大。本文充分利用了与交通事故相关的人、车、路、环境等特征,建立了基于GBRT方法的交通事故预测模型,对英国城市每日的交通事故数据进行预测。
2) 在数据建模时,针对离散类别特征,传统的One-Hot Encoding方式,只能表达特征类别,不能表达特征数量,本文通过统计方法构造出离散类别特征的标签与事故数据之间的映射关系,使用映射数据来进行预测工作。
3) 针对时序建模过程中,对数据中时序关系挖掘不充分的问题,本文在数据建模中同时考虑了长周期段、短周期段中的时间序列关系,利用多种时间序列关系来构造数据集。
HTML
-
本文使用了英国运输部公开的2005−2015年的交通事故数据“road-accidents-safety-data”。经过统计排序,从207个城市筛选出了事故最多的城市Leicester(编码:E10000016)作为数据样本。2005−2015年,这座城市发生了49 209起交通事故,死亡人数为67 039,涉及事故车辆达到了91 963辆。
-
交通事故的发生由多种因素共同导致,本文综合考虑了人、车、路、环境4方面因素,选取的特征详细信息如表1所示。
-
表1中的11类离散类别特征,在时间维度上使用传统One-Hot Encoding方法时,只能表示出子类别,不能对子类别的数值进行量化表示。原始数据是根据每一起交通事故进行记录的,本文的目标是对某段时间周期内的事故量进行预测。
特征名称 取值类型 子标签数 事故数 数值类型 / 死亡人数 数值类型 / 涉事的车辆数 数值类型 / 事故严重程度 离散类型 3 道路等级 离散类型 6 道路类型 离散类型 8 速度限制 离散类型 6 光线条件 离散类型 7 天气状况 离散类型 9 路面条件 离散类型 5 城市或农村地区 离散类型 3 现场是否出现警察 离散类型 4 驾驶员性别 离散类型 3 驾驶员年龄段 离散类型 12 特征子标签数合计 / 66 本文以天为时间单位,建立起每个离散类别特征子标签与事故数据的映射关系。对数值类型的特征处理是通过对每天的数据进行统计求和操作。表2为2005年1月1日道路类别的不同子标签与3类事故数据所建立的映射关系。
日期 编码 道路类别子标签 事故数 死亡人数 涉事车辆数 2005/1/1 1 环状交叉路口 (roundabout) 1 1 1 2005/1/1 6 不分隔车路 (single carriageway) 5 9 7 2005/1/1 2 单行道 (one way street) 空值 空值 空值 2005/1/1 3 双线车道 (dual carriageway) 空值 空值 空值 2005/1/1 7 通往高速公路之交流道 (slip road) 空值 空值 空值 2005/1/1 9 未知 (unknown) 空值 空值 空值 2005/1/1 12 单向街/支路 (one way street/slip road) 空值 空值 空值 2005/1/1 −1 数据丢失或超出范围 (data missing or out of range) 空值 空值 空值 表1中,特征道路类别的子标签有8种。表2中,2005年1月1日统计结果显示,特征道路类别出现了两种子标签,另外6种子标签为空值。使用上述方法,统计出了2005−2015年间4 017天的离散特征的66个子标签的映射关系。最终的输入特征为66个子标签的映射结果和目标事故数据的上一个时间周期的历史值。
-
交通事故的时间空间稀疏性导致了经过映射的离散特征产生了大量空值,需要进行空值处理。
零值填充方法:在模型学习过程中,更容易学习到导致事故发生的高权重特征。均值填充方法:在风险防范角度考虑的更周全,虽然没有发生事故,但事故的风险始终存在。为了更好地选择出空值处理方法,本文使用零值填充和均值填充两类方法进行对比实验。
2.1. 数据来源
2.2. 离散特征描述及标签映射
2.3. 空值处理
-
一个过程随时间的演变是人口的变化、城市化和机动化的过程、医学的进步、道路的改善、更安全的车辆、对风险以及其他社会规范态度的变化等[19]。所以,本文利用时间序列中的周期关系,在传统的建模方法基础上,提出了周期时序关系(last_period)和多元周期时序关系(merge_period)建模方法。
1) 传统建模方法(one_by_one):使用第t−1天的数据作为输入特征,对第t天的目标数据进行预测。
2) 周期时序关系建模方法(last_period):利用数据中的周期性规律建模,使用第t−(period)天的数据,预测第t天的目标数据。
3) 多元周期时序关系建模方法(merge_period):使用第t−1天、第t−(period)天的数据作为输入特征,预测第t天的目标数据。
本文使用年作为时间周期,来描绘相似的季节性环境特性;使用星期作为时间周期,描绘人们的工作生活规律特性。构造了last_week、last_year、merge_week、merge_year共4类数据。
因为预测目标无法验证,在构造数据时需要剔除最后一个时间周期的数据记录,由于平、闰年的问题,数据存在缺失的情况。如2008年2月29日的上一年不存在2007年2月29日,本文使用相邻两天的平均值来填充。last_year类别数据中,填充了2007年2月29日、2011年2月29日的两条记录。对merge_year类别数据,填充了2009年2月29日、2013年2月29日的两条记录。以星期作为时间周期不存在缺失的情况,可以直接使用第t−7天的数据预测第t天的数据。
最终利用不同的建模方法,分别对事故数(accident)、死亡人数(casualties)、涉事的车辆数(vehicles)3组目标特征构建了15组实验数据。由于空值处理分别使用了零值填充和均值填充,所以本文的30组实验数据、数据集的信息如表3所示。
数据类别 记录 特征数 预测目标 one_by_one 4 017 67 事故数 4 017 67 死亡人数 4 017 67 涉事的车辆数 last_week 4 010 67 事故数 4 010 67 死亡人数 4 010 67 涉事的车辆数 last_year 3 655 67 事故数 3 655 67 死亡人数 3 655 67 涉事的车辆数 merge_week 4 010 134 事故数 4 010 134 死亡人数 4 010 134 涉事的车辆数 merge_year 3 655 134 事故数 3 655 134 死亡人数 3 655 134 涉事的车辆数 -
式中,L是一个可微凸损失函数,用来度量预测值I和数据中真实预测目标值yi之间的差异;
${\hat y_i} $ 代表树模型得到的预测目标值;l表示对(yi,${\hat y_i} $ )计算损失函数;Ω(fk)表示第k个树函数的惩罚项;Ω(f)代表惩罚项的详细表示,惩罚了模型的复杂性,平滑处理学习权重,可以避免过拟合;λ、γ是超参数,用于控制正则化程度;T代表f这个树函数的叶子数;ω为叶子对应的权重;||ω||2代表L2范数,通过权重的平方和来实现正则化。 -
模型的超参主要包括:学习率、估计器个数、树的最大深度、样本内部分裂节点数、叶子节点所需的最小样本及损失函数。
本文利用GridResearchCV在训练集上自动寻找最优超参。设定学习率分别为0.2、0.1、0.05。样本内部分裂节点和叶子节点所需的最小样本都设置为1~10之间,树的最大深度为1~15之间,估计器的个数取10~150之间10的倍数。表4为模型使用不同建模方法,零值填充和均值填充寻找到的超参数据表。
建模方法 数据(零值填充/均值填充) 学习率 最大
深度最小
样本分裂
节点估计
器数one_by_one_accident 0.1/0.1 2/2 1/1 2/2 140/140 one_by_one_casualties 0.2/0.1 3/2 1/1 3/2 130/140 one_by_one_vehicles 0.1/0.1 2/2 1/1 5/4 100/120 last_week_accident 0.1/0.2 2/2 1/1 3/6 130/130 last_week_casualties 0.2/0.1 2/2 1/1 2/2 130/130 last_week_vehicles 0.1/0.2 2/2 1/1 2/2 120/140 last_year_accident 0.2/0.2 2/2 1/1 4/2 130/100 last_year_casualties 0.2/0.2 9/2 1/1 3/2 90/130 last_year_vehicles 0.2/0.1 2/2 1/1 2/2 90/110 merge_year_accident 0.2/0.1 3/2 1/1 3/3 40/140 merge_year_casualties 0.2/0.2 2/2 1/1 3/3 80/100 merge_year_vehicles 0.2/0.1 2/2 1/1 2/2 110/120 merge_week_accident 0.1/0.1 2/2 1/1 3/5 110/110 merge_week_casualties 0.2/0.2 2/2 1/1 3/2 90/100 merge_week_vehicles 0.2/0.1 2/2 1/1 2/6 40/140
3.1. 时间序列关系建模
3.2. GBRT模型正则化
3.3. 超参选择
-
本文实验的个人电脑,CPU:AMD Ryzen 2600X Six-Core Processor@3.60 GHz,内存为16 GB,开发环境为python 3.5语言的PyCharm集成开发工具,使用skit-learn提供的GBRT模型。
-
性能评价指标误差率公式如下:本文使用均方根对数误差(rmsle)和决定系数(R-square)来衡量模型的拟合能力。均方根对数误差取值越小,模型的拟合性能越好。决定系数的值越接近1,变量对预测值的解释能力越强。
均方根对数误差和决定系数公式分别为:
式中,Y0表示真实预测目标值;YP表示模型预测目标值;Ymean表示真实预测目标值的平均数。
-
对上述30组数据,本文采用训练集与测试集7∶3的比例进行划分,再使用GBRT模型对训练集进行拟合,最后对测试集的预测性能进行分析。
对比实验为比较离散特征标签映射中的空值在两类填充方法下的实验结果。表5为模型在零值填充和均值填充方法下的测试集实验结果。
建模方法 零值填充 比较结果 均值填充 rmsle R-square rmsle R-square one_by_one_accident 0.010 694 4 0.989 643 6 < 0.009 400 1 0.990 108 2 one_by_one_casualties 0.076 180 1 0.142 487 8 < 0.069 511 2 0.177 686 4 one_by_one_vehicles 0.056 437 0 0.302 941 7 < 0.055 705 5 0.318 687 7 last_week_accident 0.002 954 9 0.999 589 9 > 0.003 012 2 0.999 588 6 last_week_casualties 0.019 512 6 0.906 438 4 > 0.023 288 0 0.889 549 4 last_week_vehicles 0.018 403 9 0.944 819 6 < 0.016 416 4 0.958 028 6 last_year_accident 0.005 764 7 0.999 830 0 < 0.007 508 6 0.999 861 5 last_year_casualties 0.011 052 8 0.999 984 6 < 0.010 696 4 0.999 340 0 last_year_vehicles 0.033 843 5 0.998 134 4 < 0.027 991 2 0.9987472 merge_year_accident 0.007 009 0 0.999 965 4 > 0.009 347 4 0.999 854 4 merge_year_casualties 0.024 341 1 0.997 904 2 < 0.013 775 0 0.999 091 9 merge_year_vehicles 0.033 320 1 0.998 114 0 < 0.033 062 0 0.997 947 4 merge_week_accident 0.003 047 0 0.999 618 1 > 0.003 068 3 0.999 578 0 merge_week_casualties 0.027 697 0 0.851 847 8 < 0.018 820 9 0.944 924 2 merge_week_vehicles 0.038 087 2 0.926 162 4 < 0.023 322 3 0.896 847 1 表5中的实验结果显示,one_by_one类型数据使用均值填空的方法整体好于零值填充方法。Last和merge类型数据中均值填充方法的模型效果较好,因此本文使用均值填充方法处理离散特征标签映射中的空值。
表5中3组预测目标的实验结果显示,事故数的预测精度整体比死亡人数及涉事的车辆数的预测效果明显要高,rmsle误差更小,R-square的值更接近1,变量对预测值的解释能力强。说明模型更容易拟合到交通事故的发生频率,但表征交通事故危害程度的死亡人数和涉事车辆数更难预测。
比较不同建模方法的预测结果,本文提出的last_period和merge_period方法比传统的one_by_one建模方法预测精度要高。其中传统建模方法在死亡人数和涉事车辆数的预测误差分别为0.069 5和0.055 7,R-square的值为0.177 6和0.318 6,说明传统建模方法在死亡人数和车辆数的预测能力较差。last_week建模方法在事故数和涉事车辆数的预测结果最佳,last_year建模方法对死亡人数的预测结果最佳。merge_period所考虑的因素更加全面,但实验结果却没有获得最佳的预测结果,本文考虑,该方法增加的特征表征是不同时间的数据,特征类别存在冗余。