面向道路实时速度估算的浮动车载客行为模式清洗方法技术领域
本发明属于数据挖据技术领域,具体涉及到一种面向道路实时速度估算的浮动车
载客行为模式清洗方法。
背景技术
交通拥堵问题伴随着社会、经济的飞速发展而日益严重。缓解交通问题迫在眉睫。
随着“互联网+”的提出,各类智慧交通系统如雨后春笋般出现。各类智慧交通系统服务通过
合理的管理、诱导道路上的车流可以快速和有效的缓解道路拥堵问题。以上各类智能交通
服务的质量严重依赖于准确的、实时的路段速度,路段速度是以上各类服务的基础性参数。
因此,本专利即是针对此参数的准确性开展的进一步深入讨论,通过过滤浮动车载客行为,
进一步提高路段速度的准确性。
由于浮动车数据具有低沉本、易获得性、覆盖广等特点,被广泛应用于各类智能交
通服务。对现有海量的浮动车数据进行分析研究时可以发现,浮动车的载客行为产生的速
度样本如果不进行剔除会严重影响路段速度的准确性。由于浮动车数据巨大,实时性非常
强,人工很难及时发现并剔除载客行为产生的速度样本。本专利将要讨论的载客行为较出
租车停车载客具有更加广泛的含义,主要包括导致浮动车数据梯度下降,然后再梯度上升
的行为过程,如图1所示,发生此类行为时,有可能是真实的载客行为,有可能是避让行为,
也有可能是寻客等待行为、路口红灯等待、斑马线礼让行人等等。在剔除此类行为过程中,
还需要防止误剔除,如路口红灯等待,斑马线礼让行人等等代表了路段当前真实情况的行
为。行业内的少数研究者关注了停车行为对路段速度估算的影响,对于本专利提出的更加
广泛的类载客行为尚未涉及。
发明内容
本发明针对现有技术的不足,提出了一种面向道路实时速度估算的浮动车载客行
为模式清洗方法。
本发明中所谓的浮动车数据是指安装在城市公共交通工具(多指出租车)上的GPS
设备每隔一段时间(一般30秒一次)上传至数据中心的数据。浮动车数据字典包括:车牌号
码、车辆位置信息、数据创建时间、车辆载客状态(0表示空载,1表示满载)等;“载客行为”是
指如图1所示的车辆由正常行驶突然减速后恢复正常行驶的过程。“载客行为”包括:
“真载客行为”:是指从浮动车数据上表现出来的,即车辆载客状态由0变为1或者
由1变为0的过程。该过程产生的速度样本需要剔除。
“类载客行为”:是从车辆速度上表现出来的,表现为车辆速度变化类似于真实的
载客行为,但是它的车辆载客状态并没有发生0,1跳变。我们称之为“类载客行为”。如路口
等待红绿灯、遇突发事件、真实发生了载客行为但设备故障没有发生0,1跳变等等。“类载客
行为”还根据发生时的不同情景分为以下各种行为:
“路口行为”:指车辆的“类载客行为”发生在路口区域。多数情况下在路口等待红
绿灯时发生,属于正常的交通行为无需剔除。
“集体行为”:指所有车辆在同一时空范围内且在非路口区域均发生了“类载客行
为”。这种行为多发生在道路临时拥堵,或斑马线前的礼让行人,属于道路正常现象无需剔
除。
“个体行为”:该行为是相对于“集体行为”而言的。该类行为产生的速度样本需要
被剔除。
本发明技术方案的主要构思:离线阶段,根据大量浮动车历史数据学习得到“类载
客行为”的速度变化阈值,对路网数据进行预处理。在线阶段,实时获取一定时间片的浮动
车数据,计算出浮动车行驶速度并添加到路网相应的路段中,从路段中的各个车辆的速度
列表中剔除“真载客行为”的速度样本,并且根据“类载客行为”速度变化阈值识别“类载客
行为”并剔除需要剔除的速度样本。
本发明方法包括以下步骤:
步骤(1).读取浮动车历史数据,浮动车数据包括车牌号码、位置信息、创建时间、
载客状态,计算车辆连续两次记录的距离和时间差,然后通过距离和时间差计算速度得到
历史数据中所有车辆的速度列表,统计载客状态发生跳变时的速度样本,并得到“类载客行
为”速度变化阈值;
1-1.根据“车牌号码”、“创建时间”升序读取一段时间(大于1个小时)的浮动车历
史数据,浮动车每个样本点数据包括车牌号码(CPHM)、位置信息(GPS_FDC)、创建时间
(CJSJ)、载客状态(STATUS);
1-2.计算每辆车连续两个样本点相隔的距离和时间差,并计算出每辆车连续一个
小时的所有速度样本列表;
1-3.记录所有车辆发生“真载客行为”(STATUS由0变1或由1变0)时速度变化前后
的连续5个速度样本<v1,v2,v3,v4,v5>,并选取500组这样的速度样本;
1-4.将每组速度样本根据最小二乘法拟合成2次曲线,则每组速度样本都有一条
唯一的二次曲线f(x);
对速度样本的时间进行无量纲化、坐标原点设定、坐标统一化。首先将5个样本的
时间都用等距的数值5,10,15,20,25依次替代。其次,将所有曲线进行上下平移使得所有曲
线都经过坐标原点。最终为每组样本得到在统一坐标下的唯一的一条曲线,公式(1)中的a
和b可以唯一确定曲线的形状。这里我们选取a,b,v1-v5三个参数作为每条曲线的参数向量
V(a,b,v1-v5);
f(x)=ax2+bx..............(1)
1-5.对每一组数据计算得到它的参数向量V(a,b,v1-v5),将这500个参数向量进
行基于密度的聚类算法DBSCAN进行聚类,可以得到三类曲线,即载客行为过程前半部分、载
客行为过程后半部分、载客行为全过程;
1-6.获取3个类的类簇中心的参数向量Vic(a,b,v1-v5)和最远边界的参数向量Vib
(a,b,v1-v5)。根据公式(2)计算聚类中心参数向量和最远边界参数向量的欧式距离;
1-7.根据以上步骤得到的三个类的距离D1,D2,D3作为“类载客行为”的速度变化
阈值;
步骤(2).读取路网数据,路网数据包括路段编号、路段位置信息,将路网网格化得
到“网格—路段编号”映射表,并根据路段的连通性得到路口路段映射表;
步骤(3).根据“车牌号”、“创建时间”升序读取当前时间前5分钟的浮动车数据,计
算车辆连续两个样本点的相隔距离和时间差,然后通过距离和时间差计算速度,并根据“网
格—路段编号”映射表将该速度添加到第二次记录的车辆位置信息所在的路段编号上,得
到该时间片各个路段上各个车辆的速度列表;
步骤(4).根据车辆载客状态识别“真载客行为”并剔除速度列表中由于该行为形
成的异常速度样本,并返回新的速度列表,过程如下:
4-1.循环读取LDIDSpeedListMap中下一个LDID中所有车牌号码CPHM对应的速度
列表speedList;
4-2.识别每一个speedList中,是否存在STATUS由0变1或者由1变0的过程,若存在
则剔除跳变时产生的速度样本;
4-3.重复步骤4-1,4-2直至LDIDSpeedListMap中所有LDID中的所有车牌号码CPHM
对应的速度列表speedList都剔除完毕,并返回一个新的LDIDSpeedListMap;
步骤(5).根据步骤(1)得到的阈值识别“类载客行为”,并剔除速度列表中由于“类
载客行为”造成的异常速度样本,并返回新的速度列表,过程如下:
5-1.经过步骤(4)后从新的LDIDSpeedListMap中循环遍历获取LDID中CPHM的速度
样本列表speedList,以5个连续的速度样本为一组<v1,v2,v3,v4,v5>;
5-2.将每组速度样本根据最小二乘法拟合成2次曲线,则每组速度样本都有一条
唯一的二次曲线f(x),f(x)=ax2+bx,a、b为系数,每一组速度样本建立参数向量Vis(a,b,
v1-v5),并根据公式(3)计算Vis与步骤(1)中得到三个类簇中心的参数向量Vic(a,b,v1-v5)
的欧式距离di(d1,d2,d3);
5-3.将di(d1,d2,d3)与步骤(1)中得到的对应的“类载客行为”速度变化阈值Di
(D1,D2,D3)比较,如果d1<D1则认为该组速度样属于第一类“类载客行为”;d2<D2则认为
该组速度样属于第二类“类载客行为”;d3类推。每个样本将唯一对应一个类,不会出现同时
属于2个类的情况;
5-4.扫描speedList表,得到该“类载客行为”速度样本<v1,v2,v3,v4,v5>中最
小速度对应的LDID和GPS_FDCi。遍历LkMap,若LkMap中存在该LDID则说明该行为出现的路
段LDID为路口路段,若不存在进入5-5。从LkMap中获取该路段编号LDID对应的路口点(GPS_
QD,GPS_ZD),GPS_QD表示起点经纬度,GPS_QD表示终点经纬度,通过公式(3)计算GPS_FDCi
与路口的距离并取其最小值L,若L<L_min,则认为该“类载客行为”属于“路口行为”不进行
剔除,否则进入5-5判断是否属于“集体载客行为”;
L=min(abs(GPS_FDCi-GPS_QD),abs(GPS_FDCi-GPS_ZD)………(4)
5-5.得到该载客行为的vi对应的CJSJi和GPS_FDCi,循环遍历该LDID下其他车辆的
速度列表若均出现“载客行为”获取其对应载客点的GPS_FDCi'和CJSJi',根据公式(5)、公式
(6)计算判断条件;
abs(GPS_FDCi-GPS_FDCi')<Δs_min,i≠i'………(5)
abs(CJSJi-CJSJi')<Δt_min,i≠i'…………………(6)
若该LDID下其他车辆都满足以上判断条件则认为该载客行为属于“集体行为”不
进行剔除,否则属于“个体行为”进入步骤5-6进行速度样本剔除;
5-6.剔除上述步骤得到的“类载客行为”速度样本。根据该速度样本vi<v1,v2,
v3,v4,v5>所属的“类载客行为”分类,若属于第一类即载客过程的前半部分,则剔除这组
速度样本中的后3个样本;同理若d2<D2,则剔除中间3个样本;若d3<D3,则剔除前3个样本;
5-7.重复步骤5-2至5-6完成“类载客行为”识别和剔除后返回一个新的
LDIDSpeedListMap;
步骤(6).经过以上步骤后得到LDID对应的所有速度样本,计算所有速度样本的平
均速度作为该路段的实时速度并存于数据库实时速度表中;
6-1.完成该时间片Δt所有的速度样本剔除之后,根据新的LDID_SpeedMap获取
LDID中的所有CPHM的速度列表根据CJSJ的先后顺序组成一新的速度列表<v1,v2,v3,…vn
>;
6-2.我们把该时间片划分为更小的时间片段τ,将速度列表中所有速度根据其对
应的CJSJ划分到每一个小的时间片段中,假设每个小的时间片段中有m个速度样本,则根据
公式(7)估算路段速度vR;
步骤(7).根据时间无缝规则更新时间片,重复步骤(3)至步骤(6);
λk表示每一个小时间片段所对应的权值参数,k表示小时间片段的个数;mμ
表示每个小时间片段内速度样本的个数;
vR:路段平均速度,单位km/h;
Δt_min:判断是否为“集体行为”的时间阈值(设值30秒);
Δs_min:判断是否为“集体行为”的空间阈值(设置50米);
L_min:判断车辆是否发生“路口行为”的距离阈值(设置50米)。
本发明具有的有益效果:本发明在大数据量且无规律可循的浮动车数据中快速并
且准确的识别数据中的两种载客行为并剔除,在保证数据的实时性的同时,极大的增加了
实时速度的准确性。
附图说明:
图1浮动车类载客行为示意图
图2具体实施步骤流程图;
图3三类载客行为聚类曲线图;
图4 LDIDSpeedListMap数据结构图;
图5时间无缝规则图。
具体实施方式
如图2所示具体实施方式如下:
为叙述方便,定义相关符号如下:
vR:路段平均速度,单位km/h。
Δt_min:判断是否为“集体行为”的时间阈值(设值30秒)。
Δs_min:判断是否为“集体行为”的空间阈值(设置50米)
L_min:判断车辆是否发生“路口行为”的距离阈值(设置50米)。
步骤(1).“类载客行为”速度变化阈值计算:
1-1.根据“车牌号码”、“创建时间”升序读取一段时间(大于1个小时)的浮动车历
史数据,浮动车每个样本点数据包括车牌号码(CPHM)、位置信息(GPS_FDC)、创建时间
(CJSJ)、载客状态(STATUS);
1-2.计算每辆车连续两个样本点相隔的距离和时间差,并计算出每辆车连续一个
小时的所有速度样本列表;
1-3.记录所有车辆发生“真载客行为”(STATUS由0变1或由1变0)时速度变化前后
的连续5个速度样本<v1,v2,v3,v4,v5>,并选取500组这样的速度样本;
1-4.将每组速度样本根据最小二乘法拟合成2次曲线,则每组速度样本都有一条
唯一的二次曲线f(x)。由于每组的5个速度样本的间隔时间都在30秒左右(设备上传写入时
间),但是每组样本的时间段各不相同,为了便于试用最小二乘法拟合,我们需要对速度样
本的时间进行无量纲化、坐标原点设定、坐标统一化。首先我们将5个样本的时间都用等距
的数值5,10,15,20,25依次替代。其次,我们将所有曲线进行上下平移使得所有曲线都经过
坐标原点。最终我们可以为每组样本得到在统一坐标下的唯一的一条曲线,公式(1)中的a
和b可以唯一确定曲线的形状。这里我们选取a,b,v1-v5三个参数作为每条曲线的参数向量
V(a,b,v1-v5);
f(x)=ax2+bx..............(1)
1-5.对每一组数据计算得到它的参数向量V(a,b,v1-v5),将这500个参数向量进
行基于密度的聚类算法DBSCAN进行聚类,可以得到三类曲线(载客行为过程前半部分、载客
行为过程后半部分、载客行为全过程)如图3所示;
1-6.获取3个类的类簇中心的参数向量Vic(a,b,v1-v5)和最远边界的参数向量Vib
(a,b,v1-v5)。根据公式(2)计算聚类中心参数向量和最远边界参数向量的欧式距离;
1-7.根据以上步骤得到的三个类的距离D1,D2,D3作为“类载客行为”的速度变化
阈值。
步骤(2).路网数据预处理:
2-1.读取路网数据,路网数据包括路段编号(LDID)、起点位置信息(GPS_QD)、终点
位置信息(GPS_ZD)、中点位置信息(GPS_MD),将路网网格化(网格边长100米)得到“网格—
路段编号”映射表(如表1所示)。
表1
2-2.因为路段相互连通,统计路网数据中所有路段的起点和终点,得到“点-路段
编号”映射表(如表2所示);
表2
2-3.对“点-路段编号”映射表进行筛选,保留Value个数大于等于3(即为十字路口
或三叉路口)的所有键值对,将新的“点-路段编号”映射表进行键值转换形成“路段-点”映
射表如表3所示,记为LkMap。
表3
步骤(3).计算车辆速度样本:
3-1.根据“车牌号码”、“创建时间”升序实时读取一个时间片(5分钟)的浮动车数
据,浮动车数据包括车牌号码(CPHM)、位置信息(GPS_FDC)、创建时间(CJSJ)、载客状态
(STATUS),记为{CPHM}_{GPS_FDCi,CJSJi,STATIUSi};
3-2.通过计算同一车辆的所有两个点的距离差和时间差,得到连续的速度样本列
表speedList;
3-3.计算GPS_FDCi在地图中所对应的网,在根据“网格-路段编号”映射表得到一
系列候选路段,分别计算GPS_FDCi与候选路段的垂直距离,取距离最小的路段作为该点的
匹配路段,并将速度样本添加到该路段上,最终得到数据结构LDIDSpeedListMap(如图4所
示)。
步骤(4).识别并剔除“真载客行为”:
4-1.循环读取LDIDSpeedListMap中下一个LDID中所有车牌号码CPHM对应的速度
列表speedList;
4-2.识别每一个speedList中,是否存在STATUS由0变1或者由1变0的过程,若存在
则剔除跳变时产生的速度样本(一般剔除前后3个速度样本即可);
4-3.重复步骤4-1,4-2直至LDIDSpeedListMap中所有LDID中的所有车牌号码CPHM
对应的速度列表speedList都剔除完毕,并返回一个新的LDIDSpeedListMap。
步骤(5).识别并剔除“类载客行为”:
5-1.经过步骤(4)后从新的LDIDSpeedListMap中循环遍历获取LDID中CPHM的速度
样本列表speedList,以5个连续的速度样本为一组<v1,v2,v3,v4,v5>;
5-2.根据步骤(1)中步骤1-4的方法为每一组速度样本建立参数向量Vis(a,b,v1-
v5),并根据公式(3)计算Vis与步骤(1)中步骤1-5中行成的三个类簇中心的参数向量的欧
式距离di(d1,d2,d3);
5-3.将di(d1,d2,d3)与步骤(1)中得到的对应的“类载客行为”速度变化阈值Di
(D1,D2,D3)比较,如果d1<D1则认为该组速度样属于第一类“类载客行为”;d2<D2则认为
该组速度样属于第二类“类载客行为”;d3类推。每个样本将唯一对应一个类,不会出现同时
属于2个类的情况;
5-4.扫描speedList表,得到该“类载客行为”速度样本<v1,v2,v3,v4,v5>中最
小速度对应的LDID和GPS_FDCi。遍历LkMap,若LkMap中存在该LDID则说明该行为出现的路
段LDID为路口路段,若不存在进入5-5。从LkMap中获取该路段编号LDID对应的路口点(GPS_
QD,GPS_ZD),通过公式(3)计算GPS_FDCi与路口的距离并取其最小值L,若L<L_min,则认为
该“类载客行为”属于“路口行为”不进行剔除,否则进入5-5判断是否属于“集体载客行为”;
L=min(abs(GPS_FDCi-GPS_QD),abs(GPS_FDCi-GPS_ZD)………(4)
5-5.扫描speedList表,获取该载客行为速度样本vi<v1,v2,v3,v4,v5>对应的
CJSJi和GPS_FDCi,循环遍历该LDID中同一路段,同一时间段内,其他车辆的速度列表若均出
现“载客行为”获取其对应载客点的GPS_FDCi和CJSJi',根据公式(5)、公式(6)计算判断条
件,
abs(GPS_FDCi-GPS_FDCi')<Δs_min,i≠i'………(5)
abs(CJSJi-CJSJi')<Δt_min,i≠i'…………………(6)
若该LDID下其他车辆都满足以上判断条件则认为该载客行为属于“集体行为”不
进行剔除,否则属于“个体行为”进入步骤5-6进行速度样本剔除;
举例:“集体行为”如表4所示,在同一路段中同一时间范围内均发生了“类载客行
为”
表4
举例:“个体行为”如表5所示,在同一个路段中只有一辆车发生的“类载客行为”。
5-6.剔除上述步骤得到的“类载客行为”速度样本。根据该速度样本vi<v1,v2,
v3,v4,v5>所属的“类载客行为”分类,若属于第一类即载客过程的前半部分,则剔除这组
速度样本中的后3个样本;同理若d2<D2,则剔除中间3个样本;若d3<D3,则剔除前3个样本;
5-7.重复步骤5-2至5-6完成“类载客行为”识别和剔除后返回一个新的
LDIDSpeedListMap。
步骤(6).估计路段速度:
6-1.完成该时间片Δt所有的速度样本剔除之后,根据新的LDID_SpeedMap获取
LDID中的所有CPHM的速度列表根据CJSJ的先后顺序组成一新的速度列表<v1,v2,v3,…vn
>;
6-2.我们把该时间片划分为更小的时间片段τ,将速度列表中所有速度根据其对
应的CJSJ划分到每一个小的时间片段中,假设每个小的时间片段中有m个速度样本,则根据
公式(7)估算路段速度vR。使得距离当前时间越近的样本所占权值越大。
步骤(7).根据时间无缝规则(每次保留4分钟历史数据并向前更新1分钟数据组成
一个时间片的数据如图5所示)更新时间片,重复步骤(3)至步骤(6)。