一种基于云计算框架的交通大数据清洗方法与流程

文档序号:11950593阅读:391来源:国知局
一种基于云计算框架的交通大数据清洗方法与流程

本发明属于智能交通系统范畴,涉及一种基于云计算框架的交通大数据清洗方法。



背景技术:

智能交通系统有助于改善交通通行情况,对于受交通拥堵困扰的城市,交通拥堵问题越来越受到人们的关注。交通传感器是智能交通系统数据的重要来源。但是受设备精度、设备故障、采集环境等多种因素的影响,往往会采集到异常或出错的数据。这将降低智能交通系统大部分应用(比如交通状态估计、交通状态预测)的准确性。因此,需要对交通数据进行清洗,填补缺失数据、剔除出错数据、修正异常数据。目前使用的交通传感器种类多、采样频率高,系统将面对海量的交通数据,在清洗过程中需要考虑处理效率。

Map/Reduce是一种编程模型,用于大规模数据集的并行运算。它极大地方便了编程人员在不会分布式并行编程的情况下,将程序运行在分布式系统上。针对具体应用,实现该模型需要指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。因此,采用Map/Reduce框架时,重点是设计Map和Reduce两个函数。

通过调研发现,现有交通数据清洗方面的工作包括:王晓原等《交通流数据清洗与状态辨识及优化控制关键理论方法》结合中国高速公路道路交通基础设施现状和未来发展的需要,对我国的交通流状态辨识框架及其关键理论和方法进行了研究,提出了交通流数据清洗的方法;他们的文章《交通流数据清洗规则研究》也提出了交通数据清洗的规则。这些规则都是结合交通流理论提出,适合高速路等道路的情况,本专利从数据本身出发,采用了聚类获取交通运行规律的方法,适用于城市道路等交通复杂度高的情况;专利《基于时空分析的交通流数据清洗方法》采用交通流在时间和空间上的关系,提出了数据清洗的方法;国外的研究工作者还提出了状态相空间重构模型、小波分解模型、神经网络、支持向量机等方法,但是复杂度都较高,很难实际应用于处理大数据。同时,上述工作都没有考虑面对T级别(日处理量大于500G)交通大数据的情况,包括如何进行高效数据处理。

现有的传感器采集交通数据存在数据缺失、数据异常和数据错误等问题,所指的数据缺失为由于传感器或网络通信原因智能交通系统未采集到数据或缺失了某一维的数据;数据异常为由于传感器本身设备误差或环境偶发因素引起的数据偏离正常值;数据错误为采集或传输出错,导致的数据严重偏离正常值,出现错误。



技术实现要素:

为了克服已有交通数据清洗方式的处理效率较低、无法适用于大数据的不足,本发明提供了一种提升处理效率、有效适用于大数据的基于云计算框架的交通大数据清洗方法,在云计算(Hadoop的Map/Reduce)框架下,针对交通数据高维、海量、数据更新快的特点,利用集群系统的并行计算能力来解决面临的海量交通数据的快速清洗问题,能够快速且有效的挖掘交通数据相似性特征,用于清洗异常数据。

本发明解决其技术问题所采用的技术方案是:

一种基于云计算平台的交通大数据清洗方法,包括以下步骤:

步骤1:缺失数据补全

扫描整个数据源,若存在缺失数据,根据相同路段数据所在维的均值填充;需要根据数据产生的位置进行分发,由不同的子节点并行处理;

步骤2:聚类获取路段特征数据

将具有相似数据变化规律的数据聚成一类,获得该路段数据的特征值,所述特征值为聚类中心为;每个聚类过程由不同节点完成,特征值的获取由reduce步骤完成,步骤如下:

步骤2.1:根据路段标号r对数据集τ进行分割,获得N个数据块,然后,每个数据块分割为M个子数据块,获得N×M个子数据块,并分发给子节点;

步骤2.2:子节点把数据块分配给N×M个Map函数,每个MAP任务处理一个子数据块;

步骤2.3:在Map函数中,首先,对子数据块进行聚类,获得聚类中心ci(i=1,2,3,...,K),聚类中心数目K由压缩因子α确定,K=floor(α*N),floor表示向下取整;然后,离散化聚类中心,以道路标号(r)为键值构造数据对象进行分发,数据对象属性包含键值、聚类中心ci和中心点数目K、传感器数据集合、数据元素和位置信息,所述键值为路段标号r;

步骤2.4:在Reduce函数中,合并多个子数据块的聚类中心,获得特征值xl(l=1,2,3,...,K′),K′为特征值个数,步骤为:

2.4.1)计算两个聚类中心(ci、cj)之间的欧式距离lij,获得两个聚类中心之间的最小欧式距离lmin,lmin=min(|ci-cj|),其中i,j∈K且i≠j,|*|表示欧式距离;

2.4.2)特征值计算采用:xl=avg(c1,c2,...,ck),k为满足合并条件的聚类中心个数,当多个聚类中心ck满足合并条件lij<(1+α)*lmin时,特征值为多个聚类中心的平均值,当一个聚类中心ck与其他聚类中心的欧式距离都不满足合并条件时,特征值为它自身;

2.4.3)若K′<K,聚类过程结束;反之,调整压缩因子α=α*1.5,扩大压缩因子继续聚类,重新进行步骤2.2到步骤2.4;

步骤2.5:将特征值xl写入以路段标号为行标的数据集到分布式文件系统,完成数据清洗过程。

进一步,所述清洗方法还包括以下步骤:

步骤3:更新和剔除异常数据,步骤如下:

步骤3.1:根据道路标号r分发数据集给子节点;

步骤3.2:在Map函数中,首先读取数据d,找出距离最小的聚类中心编号,搜索特征值xl(l=1,2,3,...,K′),当|xl-d|距离最小时,将i赋值给m;然后,以聚类中心编号m为键值构造对象进行分发,对象属性包括聚类中心编号m、聚类中心差值|xm-d|、数据本身d、传感器数据集合和位置信息;

步骤3.3:在Reduce函数中,若聚类中心差值(|xm-d|<α*|xm|),正常数据不处理;若聚类中心差值(|xm-d|>5α*|xm|),剔除数据;若不符合这两种情况,更新数据,如下公式:d′=d-(d-xm)*α,最后,数据d′写入以路段标号为行标的数据到分布式文件系统,清洗过程完成。

再进一步,所述步骤1中,缺失数据补全的步骤如下:

步骤1.1:在Map函数中,首先,读入历史数据,获取数据元素的数值;然后,解析出数据产生的位置信息,获得路段标号r;最后,以r为键值构造数据对象并分发,数据对象属性包含键值、传感器数据集合、缺失信息、数据元素和位置信息;

步骤1.2:在Reduce函数中,首先,计算子数据块各维的均值μ和标准差δ;选取(μ-δ,μ+δ)范围的子数据进行计算均值获得μ2,填充缺失数据;最后,写入以路段标号为行标的数据集τ到分布式文件系统。

本发明的有益效果主要表现在:本发明利用云计算平台的并行计算能力来解决交通大数据清洗时的计算速度问题;以数据清洗为目标,以聚类方法为基础,提出了新的交通数据清洗思路和方法;该方法能快速聚类,挖掘交通数据相似性特征,实现对异常的交通数据的分布式处理,保障后续针对数据的各项应用的准确性和鲁棒性。

附图说明

图1是一种基于云计算框架的交通大数据清洗方法的流程图。

图2是合并多个子数据块的聚类中心示意图

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1和图2,一种基于云计算平台的交通大数据清洗方法,包括以下步骤:

步骤1:缺失数据补全

扫描整个数据源,若存在缺失数据,根据相同路段数据所在维的均值填充。整个过程,需要根据数据产生的位置(数据采集的路段)进行分发,由不同的子节点并行处理。具体步骤如下:

步骤1.1:在Map函数中,首先,读入历史数据,获取数据元素的数值;然后,解析出数据产生的位置信息,获得路段标号(r);最后,以r为键值构造数据对象并分发,数据对象属性包含键值、传感器数据集合、缺失信息、数据元素和位置信息,所述键值为路段标号r;

步骤1.2:在Reduce函数中,首先,计算子数据块各维的均值(μ)和标准差(δ);选取(μ-δ,μ+δ)范围的子数据进行计算均值获得μ2,填充缺失数据;最后,写入以路段标号为行标的数据集(τ)到分布式文件系统。

步骤2:聚类获取路段特征数据

将具有相似数据变化规律的数据聚成一类,获得该路段数据的特征值(聚类中心)。为提高计算效率,每个聚类过程由不同节点完成。因为节点不能直接通信,所以最后特征值的获取由reduce步骤完成。具体步骤如下:

步骤2.1:根据路段标号(r)对数据集(τ)进行分割,获得N个数据块。然后,每个数据块分割为M个子数据块,获得N×M个子数据块,并分发给子节点;

步骤2.2:子节点把数据块分配给N×M个Map函数,每个MAP任务处理一个子数据块;

步骤2.3:在Map函数中,首先,对子数据块进行聚类(可选用Kmeans、层次聚类等能产生聚类中心的聚类方法),获得聚类中心ci(i=1,2,3...,K)。聚类中心数目K由压缩因子α(初始值为常数,小于1,比如0.05)确定,K=floor(α*N),floor表示向下取整;然后,离散化聚类中心,以道路标号(r)为键值构造数据对象进行分发,数据对象属性包含键值(r)、聚类中心(ci)和中心点数目(K)、传感器数据集合、数据元素和位置信息;

步骤2.4:在Reduce函数中,合并多个子数据块的聚类中心,获得特征值xl(l=1,2,3,...,K′),K′为特征值个数,步骤为:

2.4.1)计算两个聚类中心(ci、cj)之间的欧式距离lij,获得两个聚类中心之间的最小欧式距离lmin,lmin=min(|ci-cj|),其中i,j∈K且i≠j,|*|表示欧式距离;

2.4.2)特征值计算采用:xl=avg(c1,c2,...,ck),k为满足合并条件的聚类中心个数,当多个聚类中心ck满足合并条件lij<(1+α)*lmin时,特征值为多个聚类中心的平均值,当一个聚类中心ck与其他聚类中心的欧式距离都不满足合并条件时,特征值为它自身。

2.4.3)若K′<K,聚类过程结束;反之,调整压缩因子α=α*1.5,扩大压缩因子继续聚类,重新进行步骤2.2到步骤2.4。

步骤2.5:将特征值xl写入以路段标号为行标的数据集到分布式文件系统

步骤3:更新和剔除异常数据

新采集的需要清洗的数据被分发到各个子节点,首先,进行缺失数据补全。然后,查找异常数据;最后,进行异常数据的更新或剔除。具体步骤如下:

步骤3.1:根据道路标号(r)分发数据集给子节点;

步骤3.2:在Map函数中,首先读取数据d,找出距离最小的聚类中心编号,搜索特征值xl(l=1,2,3,...,K′,当|xl-d|距离最小时,将i赋值给m;然后,以聚类中心编号(m)为键值构造对象进行分发,对象属性包括聚类中心编号(m)、聚类中心差值(|xm-d|)、数据本身(d)、传感器数据集合和位置信息

步骤3.3:在Reduce函数中,若聚类中心差值(|xm-d|<α*|xm|),正常数据不处理;若聚类中心差值(|xm-d|>5α*|xm|),剔除数据;若不符合这两种情况,更新数据,如下公式:d′=d-(d-xm)*α。最后,数据d′写入以路段标号为行标的数据到分布式文件系统,清洗过程完成。

本实施例的数据来自安装浙江省杭州市天目山路和余杭塘路,紫金花路和莫干山路之间400多条路段的传感器,或者行驶在这些路段的GPS浮动车。传感器包括浮动车GPS、SCATS线圈、微波雷达和卡口视频数据。四源数据只采用了速度或速率的结果,作为本实施例的输入。数据采集时间为2013年7月,共30天数据,原始数据总量共473.2GB。其中,前28天的数据用于聚类获取路段特征数据,后2天数据用于对方法效果的测试。在性能测试中,采用的是8台物理计算机(16核,1.6GHz CPU)。

步骤101,原始数据清洗。在Map函数中,首先,读入一行数据,获取数据元素的数值;然后,解析出数据产生的位置信息,获得路段标号(r);最后,以r为键值构造数据对象并分发,数据对象属性包含键值(r)、传感器数据集合、缺失信息和位置信息。以莫干山路-文二路-文一路为例,获得路段标号为267,以r为键值构造数据对象并分发。

步骤102:在Reduce函数中,首先,计算子数据块速度的均值(μ)、标准差(δ);然后,选取(μ-δ,μ+δ)范围数据进行均值计算获得μ2,填充缺失数据;最后,写入以路段标号为行标的数据到分布式文件系统。

步骤103:根据路段标号(r)对数据集进行分割,获得30个数据块。然后,每个数据块分割为20个子数据块,获得30*20个子数据块,并分发给子节点。子节点把数据块分配给30*20个Map函数,每个MAP任务处理一个子数据块;这里的数据以一个数据块为例。

步骤104:在Map函数中,首先,对子数据块进行聚类(实施过程中采用Kmeans),获得初始值聚类中心。聚类中心数目K=80;然后,以道路标号(r)为键值构造数据对象进行分发,数据对象属性包含键值(r)、聚类中心(ci)和中心点数目(K);

步骤105:在Reduce函数中,合并多个子块的聚类中心(ci),获得特征值xl(l=1,2,3,...,K′);

步骤106:在Map函数中,首先,计算每一行数据(d)和聚类中心的聚类,找出距离最小的聚类中心编号m;然后,以聚类中心编号m为键值构造对象进行分发,对象属性包括聚类中心编号(m)、聚类中心差值(|xm-d|)、数据本身(d)。

步骤107:在Reduce函数中,若聚类中心差值(|xm-d|<α*|xm|),正常数据不处理;若聚类中心差值(|xm-d|>5α*|xm|),剔除数据;若不符合这两种情况,更新数据,如下公式:d′=d-(d-xm)*α。最后,数据d′写入以路段标号为行标的数据到分布式文件系统。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1