(重慶交通大學(xué) 重慶 400074)
數(shù)據(jù)清洗是整個(gè)數(shù)據(jù)分析與挖掘過程中必不可少的一個(gè)環(huán)節(jié),其結(jié)果會(huì)直接影響到模型效果和最終的結(jié)論,據(jù)大數(shù)據(jù)分析與挖掘項(xiàng)目統(tǒng)計(jì),數(shù)據(jù)清洗通常會(huì)占據(jù)分析與挖掘過程的50%~80%的時(shí)間。
本文針對(duì)RFID冗余數(shù)據(jù),提出了一種處理冗余數(shù)據(jù)的方法,提高RFID數(shù)據(jù)的時(shí)序性和精確性。RFID冗余數(shù)據(jù)通常包括兩類:重復(fù)數(shù)據(jù)和相似數(shù)據(jù)。重復(fù)數(shù)據(jù)是指采集到的信息完全相同的數(shù)據(jù)。相似數(shù)據(jù)是指雖然數(shù)據(jù)有部分信息不同,但所指向的內(nèi)容是相同信息的數(shù)據(jù)。這兩種數(shù)據(jù)存在不僅僅占用存儲(chǔ)空間,造成數(shù)據(jù)庫負(fù)載越來越龐大,而且還會(huì)導(dǎo)致后期在處理數(shù)據(jù)挖掘方面,出現(xiàn)大幅度的偏差。因此,有必要對(duì)RFID冗余數(shù)據(jù)進(jìn)行判別與刪除,提高數(shù)據(jù)的質(zhì)量。
判斷RFID數(shù)據(jù)是否存在冗余,根據(jù)冗余RFID數(shù)據(jù)存在的特征,關(guān)鍵是判斷被檢測(cè)到車牌號(hào)碼、過車時(shí)間和RFID檢測(cè)基站。當(dāng)在采集到的RFID的數(shù)據(jù)中,車牌號(hào)碼、過車時(shí)間和RFID檢測(cè)基站完全相同,即可認(rèn)為這些數(shù)據(jù)為重復(fù)數(shù)據(jù),有必要對(duì)這些數(shù)據(jù)進(jìn)行刪除。而當(dāng)采集到RFID數(shù)據(jù)中車牌號(hào)碼和檢測(cè)基站相同,過車時(shí)間雖不相同,但過車時(shí)間相差較短。因?yàn)橥ǔM惠v車不可能在很短的時(shí)間內(nèi)(五分鐘內(nèi))兩次或者多次通過同一個(gè)檢測(cè)基站,而且RFID檢測(cè)基站在讀取數(shù)據(jù)時(shí)也需要花費(fèi)一定的時(shí)間,采集的數(shù)據(jù)必定會(huì)產(chǎn)生一定的時(shí)間差,則認(rèn)為這些數(shù)據(jù)為相似數(shù)據(jù)。因此相似數(shù)據(jù)也為冗余數(shù)據(jù),也有必要對(duì)其刪除。
本文在處理冗余數(shù)據(jù)時(shí),采用逐條記錄對(duì)比的方法,對(duì)RFID數(shù)據(jù)進(jìn)行逐條對(duì)比車牌號(hào)碼、過車時(shí)間和RFID檢測(cè)基站。采用Java程序編寫的代碼實(shí)現(xiàn)冗余數(shù)據(jù)的判別。主要是對(duì)數(shù)據(jù)記錄進(jìn)行按照以下步驟進(jìn)行邏輯判別:
(1)通過jdbc連接數(shù)據(jù)庫,將數(shù)據(jù)庫中的數(shù)據(jù)按照車牌號(hào)碼、RFID檢測(cè)站和過車時(shí)間字段順序進(jìn)行數(shù)據(jù)排序;
(2)讀取第一條數(shù)據(jù),獲取數(shù)據(jù)記錄中車牌號(hào)碼(VehicleID1)、RFID檢測(cè)站名稱(C_P_Name1)和(Time1);
(3)循環(huán)讀取下一條數(shù)據(jù),獲取數(shù)據(jù)記錄中的車牌號(hào)碼(VehicleID2)、RFID檢測(cè)站名稱(C_P_Name2)和(Time2);
(4)判斷車牌號(hào)碼VehicleID1是否等于VehicleID2、RFID檢測(cè)站名稱C_P_Name1是否等于C_P_Name2和過車時(shí)間Time1是否等于Time2,若三者全部相等,即為相同數(shù)據(jù)。若前兩者相等,對(duì)時(shí)間Time2與Time1時(shí)間作差,判斷兩者的時(shí)間差是否在5min時(shí)間內(nèi),若在5min時(shí)間內(nèi),可以認(rèn)為這兩條數(shù)據(jù)為相似數(shù)據(jù)。將相同數(shù)據(jù)和相似數(shù)據(jù)進(jìn)行輸出到兩個(gè)不同的表中。
(5)將車牌號(hào)碼、RFID檢測(cè)基站名稱和過車時(shí)間進(jìn)行替換,進(jìn)入(3)進(jìn)行循環(huán)。
通過以上邏輯過程對(duì)RFID交通數(shù)據(jù)進(jìn)行冗余判斷,可以獲取出數(shù)據(jù)記錄中的冗余數(shù)據(jù)。通過獲取每天的冗余數(shù)據(jù),統(tǒng)計(jì)每天的冗余數(shù)據(jù)量記為,采用下列公式計(jì)算每天檢測(cè)數(shù)據(jù)的冗余率:
(1)
ωi——冗余數(shù)據(jù)占有率;
ERundei——第i天的冗余數(shù)據(jù)記錄總條數(shù)。
Ni——第i天的記錄刪除錯(cuò)誤數(shù)據(jù)后的總條數(shù);
在把錯(cuò)誤數(shù)據(jù)刪除之后,再獲取數(shù)據(jù)記錄中的重復(fù)數(shù)據(jù),通過聯(lián)合車牌號(hào)碼、檢測(cè)點(diǎn)名稱和檢測(cè)時(shí)間判斷記錄中的數(shù)據(jù)是否存在重復(fù)。根據(jù)RFID檢測(cè)器的數(shù)據(jù)規(guī)律特性,相同車輛在同一地點(diǎn)相似時(shí)間(5min)段內(nèi)只會(huì)出現(xiàn)一條數(shù)據(jù)。本文首先對(duì)HDFS上每天的數(shù)據(jù)記錄按照車牌號(hào)碼、檢測(cè)點(diǎn)名稱和檢測(cè)到的時(shí)間進(jìn)行排序。在得到的排序結(jié)果后,判斷每一條數(shù)據(jù)中的車牌與下一條數(shù)據(jù)中的車牌是否相同。在相同的車牌號(hào)碼的情況下,再去判斷檢測(cè)點(diǎn)名稱是否相同。在檢測(cè)點(diǎn)名稱相同的情況下,判斷兩條記錄的時(shí)間差是否大于5min。在Hadoop平臺(tái)中通過Java編寫代碼一步步循環(huán)判斷,可以獲取每天記錄中冗余的數(shù)據(jù)。其實(shí)驗(yàn)過程通過編寫代碼實(shí)現(xiàn)。
通過判斷每天數(shù)據(jù)中的冗余數(shù)據(jù),計(jì)算出每天RFID檢測(cè)數(shù)據(jù)的冗余率,可以作出冗余數(shù)據(jù)占每天正確數(shù)據(jù)的比率變化趨勢(shì)圖,如圖1所示。

圖1 冗余數(shù)據(jù)占有率變化趨勢(shì)
通過對(duì)一個(gè)月冗余數(shù)據(jù)的占有率對(duì)比分析,可以看出冗余的數(shù)據(jù)在所占正確數(shù)據(jù)的比例比較小,約占1.40%。故在挖掘交通特性時(shí),為了提高數(shù)據(jù)的總體精確性,對(duì)冗余數(shù)據(jù)可以保留第一條后,將其他的記錄直接刪除。
經(jīng)過本文逐條數(shù)據(jù)篩選的方法對(duì)冗余數(shù)據(jù)進(jìn)行處理判斷,可以提高數(shù)據(jù)的精確性,本文在對(duì)RFID數(shù)據(jù)冗余判斷,可以提高1.4%的精度,同時(shí)對(duì)后期的數(shù)據(jù)挖掘精度也有了較大的提高。
【參考文獻(xiàn)】
[1]谷峪,李曉靜,呂雁飛.基于RFID應(yīng)用的綜合性數(shù)據(jù)清洗策略[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版).2009,30(1):34-37.
[2]王妍,石鑫,宋寶燕.基于偽事件的RFID數(shù)據(jù)清洗方法.計(jì)算機(jī)研究與發(fā)展[J].2009,46(suppl):270-274.
[3]周奕辛.數(shù)據(jù)清洗算法的研究與應(yīng)用[D].山東:青島大學(xué),2005.
[4]僧理.Hadoop的重復(fù)數(shù)據(jù)清理模型研究與實(shí)現(xiàn)[D].湖南:南華大學(xué),2010.