宋永朝,王 翠
(重庆交通大学 交通运输学院,重庆 400074)
随着智能检测设备的普及,城市道路存在大量固定检测器,由于环境异常、突发事件、设备故障、通信网络故障等原因,其采集的动态交通状态参数存在丢失、冗余、异常、噪声污染及漂移现象[1],直接使用原始数据计算会降低数据质量,影响交通流预测及状态判别精度。因此,进行有效的交通故障数据识别、异常数据修复,可以得到可靠的动态交通参数,为解决城市交通问题提供支持。
在交通故障数据识别方面,YIN Chunyong等[2]提出了基于边缘计算感知数据流的异常检测算法, 利用区间差对异常数据识别;陆百川等[3]考虑交通流数据时空特性结合马氏距离,构建了故障数据识别模型;陆化普等[4]根据S-G滤波法和数据驱动方法,提出一套城市道路交通流检测数据故障识别算法。在故障数据修复方面,苗旭等[5]考虑检测器采集数据的周期性与时间变化特性,提出了基于时空相关性的异常数据修复方法;YE Miao等[6]提出了一种基于再生码和混合遗传算法的故障数据修复方法,减少了数据传输量,提高了修复效率;王薇等[7]考虑交通流数据的时空相关性,提出了基于3D形函数的时空插值修复方法,有效修复了高速路网交通流故障数据。目前,对各类检测传感器数据中所存在的故障数据识别、异常数据修复问题,研究主要考虑如何准确修复时间序列数据、如何挖掘利用数据的时空相关特性、如何提高模型算法的性能以及精度等。针对海量的城市动态交通参数,为满足城市管理系统的数据要求,需要交通故障数据识别与修复需模型算法效率更快、精度更高。
笔者以动态交通参数中常见的基本参数为例(如流量、速度)。首先采用阈值结合交通流机理进行浅层次异常数据识别,并利用时序数据间的相关联性,结合离群距离筛选出相对离群距离较大的异常数据,进行深层次异常数据识别;其次,提出改进DE-LSTM数据修复模型,通过改进DE算法优化LSTM中隐含层和学习率,提高数据修复精度和降低模型时间成本;最后,采用实际道路固定检测器采集数据进行案例分析,检验模型实际效果。
根据交通流合理取值范围,设置阈值区间,若交通流数据不在此区间范围内,则判定该条交通流数据为故障数据[8]。固定检测器采集的动态交通基础参数中,交通流3参数流量q、速度v、占有率o的阈值取值范围如式(1):
(1)
式中:fc、fv分别为流量、速度修正系数,取值范围为[1.3,1.5][9];C为路段通行能力,pcu/h;T为检测器数据采集时间间隔,min;vh为道路限速,km/h。
当交通流参数值不为0时,阈值法可初步识别交通故障数据;交通参数值为0时,无法判断该采集数据是无车辆通过检测器还是检测器受到干扰,此时需要结合交通流机理进行规则识别,如表1。
表1 交通流机理识别规则
由表1可得到:①无车辆通行时:q=0、v=0、o=0;②车辆正常通行时:q>0、v>0、o>0;③车辆处于拥堵占据检测器时:q=0、v=0、o=(95,100]。当交通流3参数属于以上3种情况,即为正常数据,反之为异常数据。
运用阈值结合交通流机理法初步识别出明显不合理数据或不符合交通基本理论的数据,对明显不合理数据或缺失数据用历史数据和采集时刻前后相关数据进行补齐,将初步识别后的数据作为数据输入,进一步异常数据识别及修复,提高数据质量。
固定检测器所收集到的动态交通数据,在采集时间段内有严格的时间顺序,对于时间序列异常数据常用的检测方法有:直接检测、间接检测、时间跨度检测、序列跨度检测[10]。交通流动态故障识别定位,即为针对点位异常数据检测,进行直接离群点位定位。笔者采用基于距离检测的异常数据检测算法来筛选更为隐含的错误数据,利用边缘计算的思想提高数据处理效率,高效识别异常数据。
对于单个固定检测器,其采集到的时序数据,按采集时间表达如式(2):
Xi={x1,x2,…,xm,…,xn},1≤m≤n
(2)
式中:Xi为第i天交通流时间序列数据样本集;xm为某个采集具体时刻tm的数据值;n为数据长度。
对于交通流数据集合Xi,引入用来存放Xi部分数据的滑动窗口SW(slide window),其长度为LSW,滑动窗口长度一般与检测器采集数据时间间隔相关。进行长度计算时,只考虑时序数据在采集时刻的具体数据值,忽略时间标签,将滑动窗口中时序数据简化表达如式(3):
XSW={s1,s2,…,sr,…,sn},1≤r≤n=LSW
(3)
(4)
(5)
更新中心子序列Xcentre,如式(6):
Xcentre=(sr-Lmove-1,sr-Lmove,…,sr,…,sr+Lmove)
(6)
其中滑动窗口、子序列最小长度和横向移动距离与故障数据在相同时间段的历史数据高度相关,考虑到历史数据与当前数据间,在滑动窗口内存在着基本相关,根据Pearson相关系数,可求出历史数据与当前数据的线性相关系数R,如式(7):
(7)
采用最小二乘法求解线性逼近函数y=kx+b,其系数计算如式(8)、式(9):
(8)
(9)
利用式(7)验证两个数据之间的相关性,利用式(8) 、式(9)对滑动窗口内的数据依次进行相对离群距离计算,则基于相对离群距离和数据间相关性的异常数据检测步骤如下:
Step1基础参数设置
设置固定滑动窗口长度LSW、子序列最小长度Lmin、子序列横向移动距离Lmove、点位相对离群距离最小值εdis。
Step2计算相对离群距离
随着多源信息技术快速发展,传统数据驱动模型难以满足实时性、准确性等要求,长短期记忆神经网络(LSTM)模型具有实现简单,长期记忆功能突出,模型泛化能力好的特点,常用于处理与时间序列相关性特别高的问题[11-12]。但由于LSTM在训练过程中,学习率和隐含层需要依据经验不断尝试,会耗费大量时间。差分进化算法(DE)在处理非线性问题有较强稳定性,且算法收敛速度快、鲁棒性强,因此笔者提出改进DE-LSTM故障数据修复模型。
差分进化算法是一种基于种群的全局优化算法,常被应用在神经网络、数据挖掘、多源信息处理等领域[13]。其算法步骤主要包括初始化种群、变异、交叉和选择,由于种群的更新策略以及交叉选择的不同,算法存在着前期求解非全局最优,后期在最优解附近震荡、搜索停滞等问题,针对DE算法存在的主要问题,对下一代最优种群的选取和变异交叉因子动态调整进行改进,改进差分进化算法步骤如下:
Step1初始化
固定检测器采集数据种群初始化,维数D,种群数量N,初始化操作如式(10):
xi,g={xi,1,xi,2,…,xi,D},i=1,2,…,N
(10)
Step2变异
DE算法的变异策略是采用种群中两个不同个体向量来干扰一个现有个体向量,进行差分操作实现子代变异,传统DE算法变异如式(11):
vi,g=xr1(g)+F×[(xr2(g)-xr3(g))]
(11)
式中:r1,r2,r3为3个相异个体且取值为[1,N];F为变异因子;g为当前进化代数。
对变异因子进行改进,在传统固定因子的基础上,设置一个动态变异因子,使得变异因子随着迭代过程而动态变化,在算法初期提高种群的搜索能力,后期提高寻优能力。采用自适应变异因子[14],改进具体如式(12):
(12)
式中:F′为改进变异因子;G为最大进化代数;g′为当前进化代数。
算法运行初期,变异因子取值较大,以保持种群多样性,扩大搜索空间;随着进化次数逐渐增大,变异因子逐渐减小,以保持种群中的优秀个体,当变异因子维持0.5时,算法整体性能最佳,提高了算法运行效率。改进后变异操作如式(13):
vi,g=xr1(g)+F′×[(xr2(g)-xr3(g))]
(13)
Step3交叉
差分进化算法对于每个个体和它所生成的子代变异个体进行交叉,即对每个个体分量按照一定概率的交叉因子P选择子代变异个体(否则就是原个体)来进行种群的交叉进化,形成一个新的个体,操作如式(14):
(14)
交叉因子P影响DE算法的局部搜索能力及全局搜索平衡性,交叉因子取较大值时,利于局部寻优并提升算法运算效率;交叉因子取较小值时,利于全局并行搜索并维持种群的多样性[15]。采用自适应控制策略,对传统交叉因子具体改进操作如式(15)、式(16):
Pi,g=N(μi,g,0.1)
(15)
(16)
式中:Pi,g为当前个体xi,g的交叉概率;a为常数,a∈[0,0.5];μi,g为更新交叉概率的高斯分布均值,初始值为0.5。
Step4选择
差分进化算法采用贪婪算法,根据子代和父代的适应度函数值对比,选择更优秀的个体作为下一代。具体操作如式(17):
(17)
处理有严格时间序列的检测器采集数据时,常选用循环神经网络(recurrent neural networks),但其只有短期记忆,因而存在下降梯度消失的问题,长短期记忆神经网络(long short-term memory)中新的记忆细胞可有效解决该问题。因此, LSTM的隐藏计算模块在RNN基础上引入一个新的内部状态:记忆细胞(memory cell),记忆细胞在3个控制传递的逻辑门(输入门、遗忘门、输出门)之间进行信息传输。LSTM采用一定的方法将短期记忆与长期记忆相结合,克服了时序过长时,RNN容易忘记前较久远时间段的信息,越近的时间点对此刻的输入影响越大。常见LSTM结构如图1。
图1 LSTM数据传输结构Fig. 1 LSTM data transmission structure diagram
ft=σ(Wf·[ht-1,xt]+bf)
(18)
it=σ(Wi·[ht-1,xt]+bi)
(19)
ct=tanh(Wc·[ht-1,xt]+bc)
(20)
(21)
ot=σ(Wo·[ht-1,xt]+bo)
(22)
ht=ot×tanh(Ct)
(23)
(24)
(25)
式中:带下标的W、b均为参数矩阵;xt为输入值;ht为t时刻输出值;Ct为t时刻时,记忆细胞状态参数;σ为s型激活函数。
通过改进差分进化算法优化长短期记忆神经网络,对神经网络中学习率、隐含层节点进行自动寻优,提高了模型计算效率且避免了陷入局部最优,使得提出的改进DE-LSTM模型对交通时序故障数据有较好的修复能力及较高的精度。改进DE-LSTM的故障数据修复模型流程如图2。
图2 基于改进DE-LSTM的故障数据修复流程Fig. 2 Fault data repair process based on improved DE-LSTM
改进DE-LSTM的故障数据修复步骤如下:
Step1导入固定检测器采集的交通流时序数据,对工作日内处理后的采集数据划分训练集、测试集,并对不同源数据进行归一化。
Step2建立长短期记忆网络训练模型,设置输入层节点数3,输出层节点数1,最大迭代次数50次,将神经网络模型中的学习率及隐含层节点数定为寻优参数。
Step3对差分进化算法中的参数进行初始化赋值,设置最大迭代次数为50、缩放因子及交叉因子按式(12)、式(15)取值,并对检测器时间序列数据种群初始化。
Step4根据改进差分进化算法,对交通流信息数据按设置好的基础参数进行变异、交叉、选择产生下一代个体。
Step5判断是否达到迭代终止条件,即当前进化代数是否为预设最大迭代次数G=50,若进化代数达到50次则输出当前种群,否则转Step4。
Step6重复执行Step4、Step5,得到最优的下一代种群。
Step7对输出的种群进行适应度评价,最小适应度值所对应的子个体即为算法最优解,将得到的最优参数作为LSTM输入。
Step8将优化后学习率和隐含层节点数输入LSTM中,构建改进DE-LSTM故障数据修复模型。
Step9根据评价指标进行分析总结,选取修复精度最高的模型进行交通时序故障数据修复。
选取某交通示范区实际交通路段所采集交通数据,进行固定检测器动态交通数据故障识别及修复模型验证,该交通路段地理位置如图3。以固定检测数据采集时间间隔5 min为例,考虑到交通流的时空相关性,同一路段在工作日和周末交通状态差异较明显,因此选取同一微波检测器所采集周一至周五(以2016年7月11日—7月15日为例)的1 440个交通数据为研究对象,部分采集数据集如表2。
图3 实际路网及检测器布设位置Fig. 3 Actual road network and detector layout
表2 微波采集部分数据
为更好模拟故障异常数据的出现,以7月12日数据为研究对象,人为设置流量异常数据34个、速度异常数据32个,采用阈值结合交通流机理进行初步识别,其中修正系数fc=1.4。
利用阈值结合交通流机理诊断结果如图4。
图4 基于阈值结合交通流机理的异常数据识别Fig. 4 Abnormal data recognition based on threshold combined with traffic flow mechanism
利用阈值结合交通流机理的方法能够初步识别明显的异常数据,对明显超过阈值或数据为0时的异常数据识别率较高,对隐含在数据中更加深层次的异常数据识别率较低。识别出的流量及速度异常数据个数均为16个。
利用距离检测算法进行深层次异常数据识别,诊断结果如图5。
图5 基于离群距离检测算法的异常数据识别Fig. 5 Abnormal data identification based on outlier distance detection algorithm
利用距离检测算法进一步进行异常数据识别,除去可以明显识别超过阈值和不符合交通流运行规律数据之外,更进一步地识别出数据中的深层次异常数据,对于异常数据识别个数的结果为:流量异常数据识别30个、速度异常数据31个,较阈值结合交通流机理法准确率提升41.2%和46.8%。
对识别出的异常故障数据进行剔除,通过改进DE-LSTM算法对数据进行补齐;将2016年7月11日—7月14日速度数据作为历史数据输入,对模型训练,修改的2016年7月15日速度数据作为模型测试集,并将通过模型修复后的数据与7月15日原始速度数据做对比(假定7月15日原始数据不存在数据故障问题,修复性能对比为模型修复后的数据与当天完整原始数据之间的对比),并采用平均均方误差和相对精度对模型进行准确性评价。设定LSTM训练过程采用adam优化器进行优化[16],适应度函数为LSTM训练集、测试集均方误差,利用差分进化算法对LSTM学习率、隐含层节点数进行动态寻优。
为验证改进差分进化算法能够优化基于长短期记忆神经网络算法,先采用LSTM算法对数据进行预测修复,以7月11—7月14日速度数据作为历史数据输入,7月15日数据为预测集,设定输入层为3、输出层为1、隐含层为6、初始学习率为0.01、迭代次数88次,基于LSTM的数据预测修复模型结果如图6。
图6 基于LSTM算法的数据预测修复Fig. 6 Data prediction repair based on LSTM algorithm
LSTM模型中的学习率以及隐含层节点数设置通常都是根据文献及经验直接给出,未考虑数据情况,数据训练预测精度与参数设定高度相关,因此引入DE算法对种群自动寻优,得到最优的学习率及隐含层节点数,提高LSTM算法效率。
采用传统差分进化算法对数据进行训练,取F=0.5、P=0.6、最大进化代数为50,得到基于差分进化算法优化的超参数为:神经元个数35、学习率0.024 8。通过传统DE优化LSTM算法对数据预测修复过程及结果如图7。
图7 基于DE-LSTM算法的数据预测修复Fig. 7 Data prediction repair based on DE-LSTM algorithm
通过差分进化算法优化长短期记忆神经网络,算法迭代收敛运行效率提高,避免了陷入局部最优,并在传统固定因子的基础上,设置一个动态变异因子和交叉因子,增强迭代初期算法寻优能力,提高迭代后期算法计算效率,基于改进DE-LSTM算法对数据修复补齐过程及结果如图8。
图8 基于改进DE-LSTM算法的数据预测修复Fig. 8 Data prediction repair based on improved DE-LSTM algorithm
由图7、图8可知:改进后的DE算法迭代收敛过程更快,寻优能力更强,较传统DE算法收敛速度提升较大,提高算法运行效率,改进DE寻优超参数结果为:神经元个数12、学习率0.048 7。
通过LSTM、DE-LSTM、改进DE-LSTM分别对交通速度数据进行训练、测试,3种算法结果对比如图9,算法性能对比如表3。
图9 算法对比Fig. 9 Comparison of algorithms
表3 指标对比
由平均均方误差可以看出,LSTM算法均方误差较大、DE-LSTM算法次之、改进DE-LSTM算法均方误差最小,通过训练后的速度曲线都较为接近原始数据曲线,DE-LSTM算法和改进DE-LSTM算法对数据预测效果都较LSTM更为接近理想目标,预测效果较好,但改进DE-LSTM算法通过对交叉因子、变异因子的改进,使得算法寻优训练时间大幅减小,改进DE-LSTM较于LSTM网络运行时间更长,但是对数据预测修复精度更好。
1) 根据固定检测器采集的动态交通参数存在的故障问题,利用交通流时序数据的自身连续性,提出了基于离群距离检测的故障数据识别算法,在算例验证过程中,比较固定阈值结合交通流机理法,准确率提升41.2%和46.8%,故障数据识更为高效。
2) 提出了基于改进差分进化算法优化长短期记忆神经网络的数据修复模型,算例验证过程中的LSTM、DE-LSTM及改进DE-LSTM模型的相关系数分别为0.802 1、0.867 6、0.918 7,表明改进的DE-LSTM模型精度更高、性能更优。