2. 陕西省道路交通智能检测与装备工程技术研究中心, 西安 710064
2. Shaanxi Road Traffic Detection and Equipment Engineering Technology Research Center, Xi’an 710064, China
近年来, 基于轨迹数据挖掘人类移动规律和兴趣爱好已成为研究人员的热点研究领域之一. 在轨迹数据处理方面, 高强等人[1]对基于轨迹大数据的处理技术进行了综述, 介绍了多种轨迹处理分析方法; 在出租车GPS轨迹分析方面, 郑运鹏等人[2]通过聚类方法识别乘客热点区域并对出租车司机进行热点推荐; 在基于出租车GPS轨迹数据研究城市交通状况方面, 王晗等人[3]提出使用大规模出租车GPS轨迹数据对城市交通状况进行建模和预测, 构建基于大规模出租车GPS轨迹的宏观交通密度动态模型, 预测未来的交通密度,何雯等人[4]提出了基于GPS轨迹的规律路径挖掘算法; 在基于GPS轨迹数据研究人类活动方面, 段宗涛等人[5]以西安市GPS轨迹为例基于Hadoop分布式系统设计了出租车服务策略分析模型. Moreira Matias L等人[6]通过出租车GPS轨迹实时数据和出租车站牌的乘客需求预测在短时间内(几分钟)的出租车乘客空间分布从而进行智能派遣.
本文基于西安市大规模的出租车GPS数据, 利用大数据分析平台, 首先对不同时段的司机收入进行量化; 再根据各时段司机收入分布情况进行轨迹数据筛选, 然后利用过滤数据对出租车的换道行为进行识别和次数统计, 并计算出租车的平均速度; 最后与司机收入结合分析出租车司机换道行为的习惯和心理对运营的影响.
1 换道行为轨迹分析 1.1 数据预处理本文基于西安市出租车调度系统采集的GPS数据; 数据格式依次为: ‘序号’, ‘车辆牌照’, ‘时间’, ‘经度’, ‘纬度’, ‘水平速度’, ‘方向’, ‘状态位’(0 无状态位 1 防劫 2 签到 3 签退 4 空车 5 重车 6 点火 7 熄火). 将GPS数据转化为文本格式, 上传到HDFS分布式存储平台. 原始的GPS轨迹数据可能存在数据缺失, 漂移, 时间错乱, 不完整等问题. 因此本文通过数据预处理过程从12 000多辆出租车GPS数据中, 选取了3189辆数据完备和准确的GPS数据进行分析, 根据统计学原理, 为了保障精度, 假设在整个样本区间95%的置信度下, 0.05的误差限, 此时认为数据选取足够可靠.
在数据预处理过程中, 首先对GPS轨迹数据进行二次排序, 获得车辆的完整时空轨迹, 然后对其进行以下几个方面的处理:
(1) 错误数据. 一天出租车状态位为‘4’即空车的数据, 对于研究是无用数据, 对于超出西安市范围(东经108度~109度, 北纬33.65度~34.65度)的数据均认为无用的错误数据, 对错误数据直接删除.
(2) 重复数据. GPS数据时间重复现象, 如果重复时间数据没有断点现象, 直接删除一条重复数据, 如果某时刻的重复数据造成断点现象, 删除重复数据后, 还需利用上下两条数据进行插值处理.
(3) 缺失数据. 原始的GPS轨迹存在部分字段缺失(速度或航向角)现象, 如果连续时间点中间某一字段缺失, 利用上下两条数据插值补足, 如果存在大量连续时间点字段缺失, 直接删除.
(4) 异常数据. 在原始GPS数据中, 存在speed<0 或者 speed >120(单位为km/h)的异常速度值, 还存在相邻时刻的经纬度之差大于0.012阈值的GPS轨迹误差, 这些认为是异常数据, 这样的数据比较少直接剔除比较简单并对后续研究没有影响.
1.2 换道运动轨迹关系汽车的行驶过程符合物理运动规律, 如图1所示建立汽车行驶运动的平面图. 图1中
出租车在行驶过程中会发生航向角和轨迹方向的波动, 而直线换道行为的轨迹波动会呈现规律变化, 如图2所示,
2 换道行为识别模型 2.1 换道行为模型特征向量的选取
以换道行为的航向角偏差和轨迹方向偏差为特征, 建立特征向量样本集合
${{y}_i} = \left\{ {\begin{array}{*{20}{c}}{1,}&{{x_i} \in {D_1}}\\{ - 1,}&{{x_i} \in {D_2}}\end{array}} \right.$ | (1) |
支持向量机(Support Vector Machine, SVM)是机器学习领域可以用于分类的经典模型, 它在解决有限样本, 数据非线性适应, 模式识别中表现出许多优势, 本文利用Spark的SVMWithSGD进行换道行为识别.
SVMWithSGD通过求得最优分类面
${\min _{w,b}}\sum\limits_{i = 1}^n {\max } \left( {0,1 - {y_i}\left( {w{x_i} + b} \right)} \right) + \lambda {\left\| w \right\|^2}$ | (2) |
最后采用随机梯度下降求解. 根据以上分析, 换道行为识别算法如表1.
2.3 换道行为识别支持向量机模型的验证
经过出租车(装配GPS设备)在城市道路的实测, 如表2所示得到200个由航向角和轨迹方向偏差与标签组成的特征数据, 标签1表示换道行为, 0表示其他, 将200个特征数据随机分为训练样本(120个样本, 大概有50多次换道行为)和测试样本. 利用spark的SVMWithSGD(stepSize, numIterations, gradient, updater, optimizer)进行模型训练. 其中, stepSize: 迭代步长, 默认为1; numIterations: 迭代次数, 设置为50; gradient: 梯度下降的损失函数, 设置为hinge loss; updater: 正则化, 设置为
采用80个测试样本(40次换道行为)进行测试, 测试结果如表3所示, 可以看出, Spark的SVM算法可以准确的识别换道行为.
3 出租车司机换道行为的大数据分析方法实现
司机的换道行为的分析主要是研究不同时段司机换道行为发生的次数与出租车平均行驶速度的关系, 首先将一天划分成12个时段(即每两个小时为一个时段), 并按时段量化司机收入, 大量的收入数据满足大数中心定律, 近似服从T分布, 对平均收入进行区间估计并过滤置信范围内的GPS轨迹数据, 数据过滤后, 利用SVM进行换道行为识别, 并统计各时段换道行为发生次数和出租车平均行驶速度. 换道行为的分析的关键是数据的定量统计和分析, 由于数据量规模比较大, 传统的的数据库和数据分析工具SPSS等分析方法比较耗时, 而且本文分析的统计量计算步骤繁复, 需进行大量的迭代操作. Spark是一个分布式系统架构的计算引擎, 它是基于内存计算的框架, 计算速度快, 适合大规模数据迭代运算[8], 并且spark包含数据统计库函数, 可以直接调用进行复杂的数学统计, 为了分析计算方便, 因此本文采用大数据平台spark进行分析数据.
3.1 出租车司机收入量化司机收入量化即计算司机每个时隙的收入, 通过计算每个时隙出租车司机载客的距离, 根据出租车运营价格大致得到司机的收入. 利用司机载客状态的GPS数据相邻时间经纬度的变化, 计算出间隔的距离, 累积一个时隙得到司机的载客距离, 从而得到司机的大致收入. 利用spark对出租车司机收入量化, 主要用到三个算子: map, groupByKey和mapValue. map算子将原始数据切分成key_value型数据((车牌号, 日期, 时隙), 原始数据), groupByKey将(车牌号, 日期, 时隙)这种key相同的数据聚合到一个组. mapValue对group成一组的数据进行操作, 对司机收入进行量化. 算法1中的V表示原始数据, 原始数据: (车牌号,日期,时段,经度,纬度,航向角,状态)=(carid,date,slot,lon,lat,A,state).
算法1. 司机收入并行量化算法
输入: 按时间排序的GPS轨迹数据.
输出: 各个时隙司机的收入.
1. map:
2. 切分数据为key_value形式: ((carid,date,slot),V);
3. groupByKey:
4. 将key相同的数据聚合成一组,即
(carid,date,slot),iterable(V));
5. mapValue:
6. 对每组数据的value进行操作
7. for (line<- iterable(V)) {
8. if(state==5){
9. 累积计算载客状态的每两个相邻时间间隔GPS点距离, olon, olat代表上一个经纬度;
10. distance=GetDistace(olon,olat,lon, lat);
11. 累积计算一个时隙载客总距离;
12. Dis=Dis+distance;
13. }
14. 累积计算一个时隙司机的收入;
15. Salary=Dis*运营单价;
16. }
17. 整合数据为((carid,date,slot),Salary).
3.2 按出租车收入的置信区间提取GPS轨迹数据对于出租车司机的收入, 由于存在很多非营运因素造成出租车司机收入过高或过低, 影响出租车换道行为的分析结果. 因此, 首先假设出租车司机收入服从T分布, 然后对出租车司机收入进行区间估计, 在后续分析过程中, 仅保留收入在置信水平为95%的置信区间内的出租车的轨迹数据, 以消除收入极值的影响. 出租车司机收入的置信区间如下式
$\left( {\bar x - \frac{S}{{\sqrt n }}{t_{\alpha /2}}\left( {n - 1} \right),\bar x + \frac{S}{{\sqrt n }}{t_{\alpha /2}}\left( {n - 1} \right)} \right)$ | (3) |
其中,
算法2. 司机收入置信区间范围内轨迹提取算法
输入: 算法1数据 ((carid,date,slot),Salary)
输出: 置信区间的轨迹数据
1. map:
2. 转换数据为(slot,( Salary,V));
3. groupByKey:
4. 将key相同数据聚合为一组, 即
5. (slot, Iterator(Salary,V));
6. mapValue:
7. 计算各时隙平均收入
8.
9. S=getVar(Iterator(Salary,
10. map:
11. 得出每个时隙收入的置信区condis;
12. filter:
13. 从(slot, (Salary, V))过滤置信数data;
14. data=filter(condis.contains(Salary) ).
3.3 出租车司机换道次数提取上述置信区间的轨迹数据, 算法3在Spark上通过groupByKey和mapValue计算航向角和轨迹方向的偏差和平均行驶速度, 并建立特征向量, 通过map算子利用Spark已建立SVM模型进行换道行为判别, 最后通过reduceByKey统计换道次数.
算法3. 基于SVM的出租车换道次数提取算法
输入: 置信区间的轨迹数据
输出: 换道次数和平均速度
1. groupByKey:
2. 将(slot,V)按key聚合为一组;
3. mapValue:
4. 计算每个时隙的平均速度meanv
5. meanv=getAverageSpeed(Iterator(V));
6. mapValue:
7. 计算连续四个GPS轨迹的航向角偏差和轨迹方向偏差
8. map:
9. 判别换道行为为1, 其他为0;
10. state=SVMModel.predict(
11. reduceByKey:
12. 统计换道次数S;
13. 整合数据为(slot, (meanv, S)).
4 实例分析通过司机收入量化, 置信数据提取, 和换道行为的分析, 得到了各个时隙的换道行为次数, 司机的收入, 和出租车平均速度. 最后, 对换道行为的次数和出租车平均速度, 司机收入进行相关性计算, 评估三者的关联关系. 实验环境: Spark集群, 13台Workers, 104个Cores,64G Memory; GPS数据集: 西安市2015年9月一个月的数据, 约70 GB数据, 包含1万多辆出租车.
本文相关性分析采用皮尔逊相关系数评估算法, 通过相关系数临界值表得知, 当自由度为1000, 显著水平
在图3中, 可以看出0点到5点, 出租车司机收入与置信范围的边界值低于其它时段, 说明乘客量比较少, 自6点后, 收入开始增加, 在8点到9点和18点到19点, 出租车司机收入相比前一时段增幅比较大, 说明这几个时段是客流量高峰期.
在图4中, 0点到5点速度高于其它时段, 速度与收入的相关系数低于临界值0.041, 不显著相关, 可以理解在这期间司机的驾驶速度快, 与收入没有直接的关联关系, 自6点后的其它时段, 速度降低, 相关系数大于临界值, 呈现正相关, 表明在这期间, 司机的驾驶速度变快, 收入就会增加, 并且在速度较低的时段相关系数明显大于临界值, 说明在车流量多的时候速度与收入正相关性越显著.
图5中0点到5点平均换道次数少于其他时段, 速度与换道次数的相关系数为负值, 小于临界值-0.041, 可以看出换道次数与平均速度没有直接关系; 6点以后换道次数增多, 在车流量高峰时明显高于其他时段, 如8点到9点, 18点到19点, 换道次数与速度的的相关系数呈现显著的负相关, 说明速度越慢, 换道次数越多. 结合图4速度与收入的相关系数, 可以得出结论, 0点到5点, 在这期间, 车流量少, 出租车司机都以较快的驾驶速度运营, 换道次数少, 速度与换道次数和收入三者没有相关关系; 6点以后, 随着车流量增加, 收入与速度呈现正相关, 出租车司机通过提高速度来增加收入, 为了提高速度多次换道, 尤其在车流量高峰期, 而频繁的换道行为, 造成了交通不畅, 加剧了交通拥堵, 反而降低车的行进速度, 因此换道次数与速度呈现负相关.
5 总结
出租车司机的直道换道行为是一种司空见惯的驾驶行为, 一般的, 我们认为出租车司机的的换道行为会提高出租车的驾驶速度, 有利于出租车司机更好的服务乘客, 但这种行为会对城市交通状况产生什么影响, 进一步这一行为受到什么因素驱动, 本文通过大规模的GPS轨迹数据挖掘城市出租车司机的换道行为, 发现出租车GPS轨迹数据中隐藏的规律与特征.
通过结果分析, 出租车司机的直道换道行为受到收入的驱动, 当车流量较少时, 换道行为可以提高收入, 但当车流量较大时司机频繁换道行为致使车流整体速度降低, 造成交通不畅, 而出租车司机驾驶速度会影响它的收入, 速度越慢收入越低, 所以当车流量较大时, 司机的频繁直道换道行为会降低收入并且影响城市交通状况, 而且容易造成交通事故, 建议出租车司机在车流量较大时尽量减少不必要的换道行为, 养成良好的驾驶习惯, 促进城市交通和谐.
[1] |
高强, 张凤荔, 王瑞锦, 等. 轨迹大数据: 数据处理关键技术研究综述. 软件学报, 2017, 28(4): 959-992. |
[2] |
郑运鹏, 赵刚, 刘健. 基于出租车GPS数据的交通热区识别方法. 北京信息科技大学学报, 2016, 31(1): 43-47. |
[3] |
王晗. 基于出租车轨迹的路网交通流建模研究[硕士学位论文]. 北京: 北京交通大学, 2017.
|
[4] |
何雯, 李德毅, 安利峰, 等. 基于GPS轨迹的规律路径挖掘算法. 吉林大学学报(工学版), 2014, 44(6): 1764-1770. |
[5] |
段宗涛, 陈欣欣, 康军, 等. 基于Hadoop的出租车服务策略. 计算机系统应用, 2017, 26(1): 255-259. |
[6] |
Moreira-Matias L, Gama J, Ferreira M, et al. Predicting taxi–passenger demand using streaming data. IEEE Transactions on Intelligent Transportation Systems, 2013, 14(3): 1393-1402. DOI:10.1109/TITS.2013.2262376 |
[7] |
闫辛. 半监督支持向量机模型与算法研究[博士学位论文]. 上海: 上海大学, 2016.
|
[8] |
Apache基金会Spark官方文档. http://spark.apache.org/, 2017-06-11/2017-06-28.
|