本發(fā)明屬于智能交通系統(tǒng)范疇,涉及一種基于云計(jì)算框架的交通大數(shù)據(jù)清洗方法。
背景技術(shù):
智能交通系統(tǒng)有助于改善交通通行情況,對(duì)于受交通擁堵困擾的城市,交通擁堵問題越來越受到人們的關(guān)注。交通傳感器是智能交通系統(tǒng)數(shù)據(jù)的重要來源。但是受設(shè)備精度、設(shè)備故障、采集環(huán)境等多種因素的影響,往往會(huì)采集到異?;虺鲥e(cuò)的數(shù)據(jù)。這將降低智能交通系統(tǒng)大部分應(yīng)用(比如交通狀態(tài)估計(jì)、交通狀態(tài)預(yù)測)的準(zhǔn)確性。因此,需要對(duì)交通數(shù)據(jù)進(jìn)行清洗,填補(bǔ)缺失數(shù)據(jù)、剔除出錯(cuò)數(shù)據(jù)、修正異常數(shù)據(jù)。目前使用的交通傳感器種類多、采樣頻率高,系統(tǒng)將面對(duì)海量的交通數(shù)據(jù),在清洗過程中需要考慮處理效率。
Map/Reduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算。它極大地方便了編程人員在不會(huì)分布式并行編程的情況下,將程序運(yùn)行在分布式系統(tǒng)上。針對(duì)具體應(yīng)用,實(shí)現(xiàn)該模型需要指定一個(gè)Map(映射)函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組。因此,采用Map/Reduce框架時(shí),重點(diǎn)是設(shè)計(jì)Map和Reduce兩個(gè)函數(shù)。
通過調(diào)研發(fā)現(xiàn),現(xiàn)有交通數(shù)據(jù)清洗方面的工作包括:王曉原等《交通流數(shù)據(jù)清洗與狀態(tài)辨識(shí)及優(yōu)化控制關(guān)鍵理論方法》結(jié)合中國高速公路道路交通基礎(chǔ)設(shè)施現(xiàn)狀和未來發(fā)展的需要,對(duì)我國的交通流狀態(tài)辨識(shí)框架及其關(guān)鍵理論和方法進(jìn)行了研究,提出了交通流數(shù)據(jù)清洗的方法;他們的文章《交通流數(shù)據(jù)清洗規(guī)則研究》也提出了交通數(shù)據(jù)清洗的規(guī)則。這些規(guī)則都是結(jié)合交通流理論提出,適合高速路等道路的情況,本專利從數(shù)據(jù)本身出發(fā),采用了聚類獲取交通運(yùn)行規(guī)律的方法,適用于城市道路等交通復(fù)雜度高的情況;專利《基于時(shí)空分析的交通流數(shù)據(jù)清洗方法》采用交通流在時(shí)間和空間上的關(guān)系,提出了數(shù)據(jù)清洗的方法;國外的研究工作者還提出了狀態(tài)相空間重構(gòu)模型、小波分解模型、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等方法,但是復(fù)雜度都較高,很難實(shí)際應(yīng)用于處理大數(shù)據(jù)。同時(shí),上述工作都沒有考慮面對(duì)T級(jí)別(日處理量大于500G)交通大數(shù)據(jù)的情況,包括如何進(jìn)行高效數(shù)據(jù)處理。
現(xiàn)有的傳感器采集交通數(shù)據(jù)存在數(shù)據(jù)缺失、數(shù)據(jù)異常和數(shù)據(jù)錯(cuò)誤等問題,所指的數(shù)據(jù)缺失為由于傳感器或網(wǎng)絡(luò)通信原因智能交通系統(tǒng)未采集到數(shù)據(jù)或缺失了某一維的數(shù)據(jù);數(shù)據(jù)異常為由于傳感器本身設(shè)備誤差或環(huán)境偶發(fā)因素引起的數(shù)據(jù)偏離正常值;數(shù)據(jù)錯(cuò)誤為采集或傳輸出錯(cuò),導(dǎo)致的數(shù)據(jù)嚴(yán)重偏離正常值,出現(xiàn)錯(cuò)誤。
技術(shù)實(shí)現(xiàn)要素:
為了克服已有交通數(shù)據(jù)清洗方式的處理效率較低、無法適用于大數(shù)據(jù)的不足,本發(fā)明提供了一種提升處理效率、有效適用于大數(shù)據(jù)的基于云計(jì)算框架的交通大數(shù)據(jù)清洗方法,在云計(jì)算(Hadoop的Map/Reduce)框架下,針對(duì)交通數(shù)據(jù)高維、海量、數(shù)據(jù)更新快的特點(diǎn),利用集群系統(tǒng)的并行計(jì)算能力來解決面臨的海量交通數(shù)據(jù)的快速清洗問題,能夠快速且有效的挖掘交通數(shù)據(jù)相似性特征,用于清洗異常數(shù)據(jù)。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于云計(jì)算平臺(tái)的交通大數(shù)據(jù)清洗方法,包括以下步驟:
步驟1:缺失數(shù)據(jù)補(bǔ)全
掃描整個(gè)數(shù)據(jù)源,若存在缺失數(shù)據(jù),根據(jù)相同路段數(shù)據(jù)所在維的均值填充;需要根據(jù)數(shù)據(jù)產(chǎn)生的位置進(jìn)行分發(fā),由不同的子節(jié)點(diǎn)并行處理;
步驟2:聚類獲取路段特征數(shù)據(jù)
將具有相似數(shù)據(jù)變化規(guī)律的數(shù)據(jù)聚成一類,獲得該路段數(shù)據(jù)的特征值,所述特征值為聚類中心為;每個(gè)聚類過程由不同節(jié)點(diǎn)完成,特征值的獲取由reduce步驟完成,步驟如下:
步驟2.1:根據(jù)路段標(biāo)號(hào)r對(duì)數(shù)據(jù)集τ進(jìn)行分割,獲得N個(gè)數(shù)據(jù)塊,然后,每個(gè)數(shù)據(jù)塊分割為M個(gè)子數(shù)據(jù)塊,獲得N×M個(gè)子數(shù)據(jù)塊,并分發(fā)給子節(jié)點(diǎn);
步驟2.2:子節(jié)點(diǎn)把數(shù)據(jù)塊分配給N×M個(gè)Map函數(shù),每個(gè)MAP任務(wù)處理一個(gè)子數(shù)據(jù)塊;
步驟2.3:在Map函數(shù)中,首先,對(duì)子數(shù)據(jù)塊進(jìn)行聚類,獲得聚類中心ci(i=1,2,3,...,K),聚類中心數(shù)目K由壓縮因子α確定,K=floor(α*N),floor表示向下取整;然后,離散化聚類中心,以道路標(biāo)號(hào)(r)為鍵值構(gòu)造數(shù)據(jù)對(duì)象進(jìn)行分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值、聚類中心ci和中心點(diǎn)數(shù)目K、傳感器數(shù)據(jù)集合、數(shù)據(jù)元素和位置信息,所述鍵值為路段標(biāo)號(hào)r;
步驟2.4:在Reduce函數(shù)中,合并多個(gè)子數(shù)據(jù)塊的聚類中心,獲得特征值xl(l=1,2,3,...,K′),K′為特征值個(gè)數(shù),步驟為:
2.4.1)計(jì)算兩個(gè)聚類中心(ci、cj)之間的歐式距離lij,獲得兩個(gè)聚類中心之間的最小歐式距離lmin,lmin=min(|ci-cj|),其中i,j∈K且i≠j,|*|表示歐式距離;
2.4.2)特征值計(jì)算采用:xl=avg(c1,c2,...,ck),k為滿足合并條件的聚類中心個(gè)數(shù),當(dāng)多個(gè)聚類中心ck滿足合并條件lij<(1+α)*lmin時(shí),特征值為多個(gè)聚類中心的平均值,當(dāng)一個(gè)聚類中心ck與其他聚類中心的歐式距離都不滿足合并條件時(shí),特征值為它自身;
2.4.3)若K′<K,聚類過程結(jié)束;反之,調(diào)整壓縮因子α=α*1.5,擴(kuò)大壓縮因子繼續(xù)聚類,重新進(jìn)行步驟2.2到步驟2.4;
步驟2.5:將特征值xl寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)集到分布式文件系統(tǒng),完成數(shù)據(jù)清洗過程。
進(jìn)一步,所述清洗方法還包括以下步驟:
步驟3:更新和剔除異常數(shù)據(jù),步驟如下:
步驟3.1:根據(jù)道路標(biāo)號(hào)r分發(fā)數(shù)據(jù)集給子節(jié)點(diǎn);
步驟3.2:在Map函數(shù)中,首先讀取數(shù)據(jù)d,找出距離最小的聚類中心編號(hào),搜索特征值xl(l=1,2,3,...,K′),當(dāng)|xl-d|距離最小時(shí),將i賦值給m;然后,以聚類中心編號(hào)m為鍵值構(gòu)造對(duì)象進(jìn)行分發(fā),對(duì)象屬性包括聚類中心編號(hào)m、聚類中心差值|xm-d|、數(shù)據(jù)本身d、傳感器數(shù)據(jù)集合和位置信息;
步驟3.3:在Reduce函數(shù)中,若聚類中心差值(|xm-d|<α*|xm|),正常數(shù)據(jù)不處理;若聚類中心差值(|xm-d|>5α*|xm|),剔除數(shù)據(jù);若不符合這兩種情況,更新數(shù)據(jù),如下公式:d′=d-(d-xm)*α,最后,數(shù)據(jù)d′寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)到分布式文件系統(tǒng),清洗過程完成。
再進(jìn)一步,所述步驟1中,缺失數(shù)據(jù)補(bǔ)全的步驟如下:
步驟1.1:在Map函數(shù)中,首先,讀入歷史數(shù)據(jù),獲取數(shù)據(jù)元素的數(shù)值;然后,解析出數(shù)據(jù)產(chǎn)生的位置信息,獲得路段標(biāo)號(hào)r;最后,以r為鍵值構(gòu)造數(shù)據(jù)對(duì)象并分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值、傳感器數(shù)據(jù)集合、缺失信息、數(shù)據(jù)元素和位置信息;
步驟1.2:在Reduce函數(shù)中,首先,計(jì)算子數(shù)據(jù)塊各維的均值μ和標(biāo)準(zhǔn)差δ;選取(μ-δ,μ+δ)范圍的子數(shù)據(jù)進(jìn)行計(jì)算均值獲得μ2,填充缺失數(shù)據(jù);最后,寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)集τ到分布式文件系統(tǒng)。
本發(fā)明的有益效果主要表現(xiàn)在:本發(fā)明利用云計(jì)算平臺(tái)的并行計(jì)算能力來解決交通大數(shù)據(jù)清洗時(shí)的計(jì)算速度問題;以數(shù)據(jù)清洗為目標(biāo),以聚類方法為基礎(chǔ),提出了新的交通數(shù)據(jù)清洗思路和方法;該方法能快速聚類,挖掘交通數(shù)據(jù)相似性特征,實(shí)現(xiàn)對(duì)異常的交通數(shù)據(jù)的分布式處理,保障后續(xù)針對(duì)數(shù)據(jù)的各項(xiàng)應(yīng)用的準(zhǔn)確性和魯棒性。
附圖說明
圖1是一種基于云計(jì)算框架的交通大數(shù)據(jù)清洗方法的流程圖。
圖2是合并多個(gè)子數(shù)據(jù)塊的聚類中心示意圖
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。
參照?qǐng)D1和圖2,一種基于云計(jì)算平臺(tái)的交通大數(shù)據(jù)清洗方法,包括以下步驟:
步驟1:缺失數(shù)據(jù)補(bǔ)全
掃描整個(gè)數(shù)據(jù)源,若存在缺失數(shù)據(jù),根據(jù)相同路段數(shù)據(jù)所在維的均值填充。整個(gè)過程,需要根據(jù)數(shù)據(jù)產(chǎn)生的位置(數(shù)據(jù)采集的路段)進(jìn)行分發(fā),由不同的子節(jié)點(diǎn)并行處理。具體步驟如下:
步驟1.1:在Map函數(shù)中,首先,讀入歷史數(shù)據(jù),獲取數(shù)據(jù)元素的數(shù)值;然后,解析出數(shù)據(jù)產(chǎn)生的位置信息,獲得路段標(biāo)號(hào)(r);最后,以r為鍵值構(gòu)造數(shù)據(jù)對(duì)象并分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值、傳感器數(shù)據(jù)集合、缺失信息、數(shù)據(jù)元素和位置信息,所述鍵值為路段標(biāo)號(hào)r;
步驟1.2:在Reduce函數(shù)中,首先,計(jì)算子數(shù)據(jù)塊各維的均值(μ)和標(biāo)準(zhǔn)差(δ);選取(μ-δ,μ+δ)范圍的子數(shù)據(jù)進(jìn)行計(jì)算均值獲得μ2,填充缺失數(shù)據(jù);最后,寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)集(τ)到分布式文件系統(tǒng)。
步驟2:聚類獲取路段特征數(shù)據(jù)
將具有相似數(shù)據(jù)變化規(guī)律的數(shù)據(jù)聚成一類,獲得該路段數(shù)據(jù)的特征值(聚類中心)。為提高計(jì)算效率,每個(gè)聚類過程由不同節(jié)點(diǎn)完成。因?yàn)楣?jié)點(diǎn)不能直接通信,所以最后特征值的獲取由reduce步驟完成。具體步驟如下:
步驟2.1:根據(jù)路段標(biāo)號(hào)(r)對(duì)數(shù)據(jù)集(τ)進(jìn)行分割,獲得N個(gè)數(shù)據(jù)塊。然后,每個(gè)數(shù)據(jù)塊分割為M個(gè)子數(shù)據(jù)塊,獲得N×M個(gè)子數(shù)據(jù)塊,并分發(fā)給子節(jié)點(diǎn);
步驟2.2:子節(jié)點(diǎn)把數(shù)據(jù)塊分配給N×M個(gè)Map函數(shù),每個(gè)MAP任務(wù)處理一個(gè)子數(shù)據(jù)塊;
步驟2.3:在Map函數(shù)中,首先,對(duì)子數(shù)據(jù)塊進(jìn)行聚類(可選用Kmeans、層次聚類等能產(chǎn)生聚類中心的聚類方法),獲得聚類中心ci(i=1,2,3...,K)。聚類中心數(shù)目K由壓縮因子α(初始值為常數(shù),小于1,比如0.05)確定,K=floor(α*N),floor表示向下取整;然后,離散化聚類中心,以道路標(biāo)號(hào)(r)為鍵值構(gòu)造數(shù)據(jù)對(duì)象進(jìn)行分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值(r)、聚類中心(ci)和中心點(diǎn)數(shù)目(K)、傳感器數(shù)據(jù)集合、數(shù)據(jù)元素和位置信息;
步驟2.4:在Reduce函數(shù)中,合并多個(gè)子數(shù)據(jù)塊的聚類中心,獲得特征值xl(l=1,2,3,...,K′),K′為特征值個(gè)數(shù),步驟為:
2.4.1)計(jì)算兩個(gè)聚類中心(ci、cj)之間的歐式距離lij,獲得兩個(gè)聚類中心之間的最小歐式距離lmin,lmin=min(|ci-cj|),其中i,j∈K且i≠j,|*|表示歐式距離;
2.4.2)特征值計(jì)算采用:xl=avg(c1,c2,...,ck),k為滿足合并條件的聚類中心個(gè)數(shù),當(dāng)多個(gè)聚類中心ck滿足合并條件lij<(1+α)*lmin時(shí),特征值為多個(gè)聚類中心的平均值,當(dāng)一個(gè)聚類中心ck與其他聚類中心的歐式距離都不滿足合并條件時(shí),特征值為它自身。
2.4.3)若K′<K,聚類過程結(jié)束;反之,調(diào)整壓縮因子α=α*1.5,擴(kuò)大壓縮因子繼續(xù)聚類,重新進(jìn)行步驟2.2到步驟2.4。
步驟2.5:將特征值xl寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)集到分布式文件系統(tǒng)
步驟3:更新和剔除異常數(shù)據(jù)
新采集的需要清洗的數(shù)據(jù)被分發(fā)到各個(gè)子節(jié)點(diǎn),首先,進(jìn)行缺失數(shù)據(jù)補(bǔ)全。然后,查找異常數(shù)據(jù);最后,進(jìn)行異常數(shù)據(jù)的更新或剔除。具體步驟如下:
步驟3.1:根據(jù)道路標(biāo)號(hào)(r)分發(fā)數(shù)據(jù)集給子節(jié)點(diǎn);
步驟3.2:在Map函數(shù)中,首先讀取數(shù)據(jù)d,找出距離最小的聚類中心編號(hào),搜索特征值xl(l=1,2,3,...,K′,當(dāng)|xl-d|距離最小時(shí),將i賦值給m;然后,以聚類中心編號(hào)(m)為鍵值構(gòu)造對(duì)象進(jìn)行分發(fā),對(duì)象屬性包括聚類中心編號(hào)(m)、聚類中心差值(|xm-d|)、數(shù)據(jù)本身(d)、傳感器數(shù)據(jù)集合和位置信息
步驟3.3:在Reduce函數(shù)中,若聚類中心差值(|xm-d|<α*|xm|),正常數(shù)據(jù)不處理;若聚類中心差值(|xm-d|>5α*|xm|),剔除數(shù)據(jù);若不符合這兩種情況,更新數(shù)據(jù),如下公式:d′=d-(d-xm)*α。最后,數(shù)據(jù)d′寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)到分布式文件系統(tǒng),清洗過程完成。
本實(shí)施例的數(shù)據(jù)來自安裝浙江省杭州市天目山路和余杭塘路,紫金花路和莫干山路之間400多條路段的傳感器,或者行駛在這些路段的GPS浮動(dòng)車。傳感器包括浮動(dòng)車GPS、SCATS線圈、微波雷達(dá)和卡口視頻數(shù)據(jù)。四源數(shù)據(jù)只采用了速度或速率的結(jié)果,作為本實(shí)施例的輸入。數(shù)據(jù)采集時(shí)間為2013年7月,共30天數(shù)據(jù),原始數(shù)據(jù)總量共473.2GB。其中,前28天的數(shù)據(jù)用于聚類獲取路段特征數(shù)據(jù),后2天數(shù)據(jù)用于對(duì)方法效果的測試。在性能測試中,采用的是8臺(tái)物理計(jì)算機(jī)(16核,1.6GHz CPU)。
步驟101,原始數(shù)據(jù)清洗。在Map函數(shù)中,首先,讀入一行數(shù)據(jù),獲取數(shù)據(jù)元素的數(shù)值;然后,解析出數(shù)據(jù)產(chǎn)生的位置信息,獲得路段標(biāo)號(hào)(r);最后,以r為鍵值構(gòu)造數(shù)據(jù)對(duì)象并分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值(r)、傳感器數(shù)據(jù)集合、缺失信息和位置信息。以莫干山路-文二路-文一路為例,獲得路段標(biāo)號(hào)為267,以r為鍵值構(gòu)造數(shù)據(jù)對(duì)象并分發(fā)。
步驟102:在Reduce函數(shù)中,首先,計(jì)算子數(shù)據(jù)塊速度的均值(μ)、標(biāo)準(zhǔn)差(δ);然后,選取(μ-δ,μ+δ)范圍數(shù)據(jù)進(jìn)行均值計(jì)算獲得μ2,填充缺失數(shù)據(jù);最后,寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)到分布式文件系統(tǒng)。
步驟103:根據(jù)路段標(biāo)號(hào)(r)對(duì)數(shù)據(jù)集進(jìn)行分割,獲得30個(gè)數(shù)據(jù)塊。然后,每個(gè)數(shù)據(jù)塊分割為20個(gè)子數(shù)據(jù)塊,獲得30*20個(gè)子數(shù)據(jù)塊,并分發(fā)給子節(jié)點(diǎn)。子節(jié)點(diǎn)把數(shù)據(jù)塊分配給30*20個(gè)Map函數(shù),每個(gè)MAP任務(wù)處理一個(gè)子數(shù)據(jù)塊;這里的數(shù)據(jù)以一個(gè)數(shù)據(jù)塊為例。
步驟104:在Map函數(shù)中,首先,對(duì)子數(shù)據(jù)塊進(jìn)行聚類(實(shí)施過程中采用Kmeans),獲得初始值聚類中心。聚類中心數(shù)目K=80;然后,以道路標(biāo)號(hào)(r)為鍵值構(gòu)造數(shù)據(jù)對(duì)象進(jìn)行分發(fā),數(shù)據(jù)對(duì)象屬性包含鍵值(r)、聚類中心(ci)和中心點(diǎn)數(shù)目(K);
步驟105:在Reduce函數(shù)中,合并多個(gè)子塊的聚類中心(ci),獲得特征值xl(l=1,2,3,...,K′);
步驟106:在Map函數(shù)中,首先,計(jì)算每一行數(shù)據(jù)(d)和聚類中心的聚類,找出距離最小的聚類中心編號(hào)m;然后,以聚類中心編號(hào)m為鍵值構(gòu)造對(duì)象進(jìn)行分發(fā),對(duì)象屬性包括聚類中心編號(hào)(m)、聚類中心差值(|xm-d|)、數(shù)據(jù)本身(d)。
步驟107:在Reduce函數(shù)中,若聚類中心差值(|xm-d|<α*|xm|),正常數(shù)據(jù)不處理;若聚類中心差值(|xm-d|>5α*|xm|),剔除數(shù)據(jù);若不符合這兩種情況,更新數(shù)據(jù),如下公式:d′=d-(d-xm)*α。最后,數(shù)據(jù)d′寫入以路段標(biāo)號(hào)為行標(biāo)的數(shù)據(jù)到分布式文件系統(tǒng)。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。