封富君,姚俊萍,李新社,馬俊春
(西安高新技術(shù)研究所,陜西 西安 710025)
大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗框架研究
封富君,姚俊萍,李新社,馬俊春
(西安高新技術(shù)研究所,陜西 西安 710025)
在大數(shù)據(jù)環(huán)境下會不可避免的存在一些臟數(shù)據(jù),嚴重的影響了數(shù)據(jù)質(zhì)量,而數(shù)據(jù)清洗是提高數(shù)據(jù)質(zhì)量的重要方法,對數(shù)據(jù)清洗框架的研究可以幫助大數(shù)據(jù)的系統(tǒng)決策。提出了一個大數(shù)據(jù)環(huán)境下數(shù)據(jù)清洗的一般框架,并對核心的數(shù)據(jù)清洗模塊中的三個子模塊進行詳細的分析,包括不完整數(shù)據(jù)清洗子模塊、不一致數(shù)據(jù)修復(fù)子模塊和相似重復(fù)記錄數(shù)據(jù)清洗子模塊,且討論了其清洗的具體流程。
大數(shù)據(jù);數(shù)據(jù)質(zhì)量;數(shù)據(jù)清洗;相似重復(fù)記錄
大數(shù)據(jù)環(huán)境呈現(xiàn)出“4V + 1C”的特點:數(shù)據(jù)量巨大(Volume)、數(shù)據(jù)類型繁多(Variety) 、價值密度低(Value)、處理速度快(Velocity) 和具有較強的復(fù)雜性(Complexity),原始大數(shù)據(jù)信息中混雜著許多不完整、錯誤和重復(fù)的“不清潔”數(shù)據(jù),導(dǎo)致大數(shù)據(jù)存在著不一致、不完整性、低價值密度、不可控和不可用的特性[1-2]。面對如此龐大的數(shù)據(jù)量,人們希望從海量數(shù)據(jù)中挖掘出有價值的信息或知識,為決策者提供參考。由于數(shù)據(jù)錄入錯誤、不同表示方法的數(shù)據(jù)源合并或遷移等原因,不可避免的使系統(tǒng)存在冗余數(shù)據(jù)、缺失數(shù)據(jù)、不確定數(shù)據(jù)和不一致數(shù)據(jù)等諸多情況,這樣的數(shù)據(jù)稱為“臟數(shù)據(jù)”,嚴重影響了數(shù)據(jù)利用的效率和決策質(zhì)量。因此,為使系統(tǒng)中的數(shù)據(jù)更加準確、一致,并能夠支持決策,數(shù)據(jù)清洗變得尤為重要,數(shù)據(jù)清洗的任務(wù)就是過濾或修改那些不符合要求的數(shù)據(jù),輸出符合系統(tǒng)要求的清潔數(shù)據(jù)。
大數(shù)據(jù)技術(shù)由傳統(tǒng)的數(shù)據(jù)技術(shù)發(fā)展而來,繼承了傳統(tǒng)數(shù)據(jù)技術(shù)的概念與分析方法[3-4],例如數(shù)據(jù)清洗、數(shù)據(jù)倉庫等。傳統(tǒng)的數(shù)據(jù)清洗技術(shù)可以提供高質(zhì)量的數(shù)據(jù),并提高了數(shù)據(jù)分析的效率和正確性。大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗同樣是大數(shù)據(jù)分析的基礎(chǔ),是整個大數(shù)據(jù)處理的起始階段,決定了大數(shù)據(jù)處理結(jié)果的數(shù)據(jù)質(zhì)量。本文對大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗技術(shù)進行分析,并提出一個一般性的數(shù)據(jù)清洗框架。
產(chǎn)生數(shù)據(jù)質(zhì)量問題的原因很多,例如:縮寫的濫用會造成數(shù)據(jù)的混亂;相似重復(fù)的數(shù)據(jù)記錄會增加數(shù)據(jù)庫的負荷,降低數(shù)據(jù)處理的效率;人為的失誤或系統(tǒng)的故障會造成缺失數(shù)據(jù)、不完整數(shù)據(jù)或異常數(shù)據(jù)等,這些原因都會導(dǎo)致“臟數(shù)據(jù)”的產(chǎn)生。數(shù)據(jù)清洗是將數(shù)據(jù)庫精簡以除去重復(fù)記錄,并使剩余部分轉(zhuǎn)換成符合標準的過程;狹義上的數(shù)據(jù)清洗特指在構(gòu)建數(shù)據(jù)倉庫和實現(xiàn)數(shù)據(jù)挖掘前對數(shù)據(jù)源進行處理,使數(shù)據(jù)實現(xiàn)準確性(accuracy)、完整性(compliteness)、一致性(consistency)、適時性(timeliness)、有效性(validity)以適應(yīng)后續(xù)操作的過程。從提高數(shù)據(jù)質(zhì)量的角度來說,凡是有助于提高數(shù)據(jù)質(zhì)量的數(shù)據(jù)處理過程,都可以認為是數(shù)據(jù)清洗。數(shù)據(jù)清洗是對數(shù)據(jù)進行處理以保證數(shù)據(jù)具有較好質(zhì)量的過程,即得到干凈數(shù)據(jù)的過程。
對數(shù)據(jù)清洗定義的理解需要注意以下問題[5]:
(1)數(shù)據(jù)清洗洗掉的是“數(shù)據(jù)錯誤”而不是“錯誤數(shù)據(jù)”,目的是要解決“臟數(shù)據(jù)”的問題,即不是將“臟數(shù)據(jù)”洗掉,而是將“臟數(shù)據(jù)”洗干凈。
(2)數(shù)據(jù)清洗主要解決的是實例層數(shù)據(jù)質(zhì)量問題,對一個給定的數(shù)據(jù)集,實例層數(shù)據(jù)質(zhì)量問題是有限的、可檢測的和可隔離的。
(3)數(shù)據(jù)清洗不能完全解決所有的數(shù)據(jù)質(zhì)量問題,即通過數(shù)據(jù)清洗提高數(shù)據(jù)質(zhì)量的程度是有限度的,如對缺失值的估計有不確定性。
因此,對數(shù)據(jù)清洗的正確理解應(yīng)該是“在盡可能不破壞有用信息的前提下,盡可能多地去除數(shù)據(jù)錯誤”,數(shù)據(jù)清洗可能損失有用信息,也可能產(chǎn)生新的數(shù)據(jù)質(zhì)量問題。
數(shù)據(jù)清洗原理是利用數(shù)據(jù)挖掘相關(guān)技術(shù), 按照設(shè)計好的清理規(guī)則或算法將未經(jīng)清洗的數(shù)據(jù),即臟數(shù)據(jù),轉(zhuǎn)化為滿足數(shù)據(jù)挖掘所需要的數(shù)據(jù),如圖 1所示。數(shù)據(jù)清洗的一般過程是:對收集到的信息進行數(shù)據(jù)分析得到“臟數(shù)據(jù)”;定義數(shù)據(jù)清洗規(guī)則和清洗算法,對數(shù)據(jù)進行手工清洗或自動清洗,直到處理后的數(shù)據(jù)滿足數(shù)據(jù)清洗的要求。
手工清洗的特點是速度慢,準確度高,一般適用于小規(guī)模的數(shù)據(jù)清洗,在較大規(guī)模的數(shù)據(jù)處理中,手工清洗的速度和準確性會明顯下降,通常采用自動清洗方式。自動清洗的優(yōu)點是清洗的完全自動化,但是需要根據(jù)特定的數(shù)據(jù)清洗算法和清洗方案,編寫數(shù)據(jù)清洗程序,使其自動執(zhí)行清洗過程。缺點是實現(xiàn)過程難度較大,后期維護困難。在大數(shù)據(jù)環(huán)境下,由于數(shù)據(jù)量的巨大,數(shù)據(jù)清洗通常采用自動清洗的方式來完成。
圖1 數(shù)據(jù)清洗原理Fig.1 Data cleaning principle
對數(shù)據(jù)清洗框架的研究也較多,文獻[6]將邏輯規(guī)范層和物理實現(xiàn)層分離,提出了一種描述性語言,可以在邏輯層上指定數(shù)據(jù)清洗過程所需采取的數(shù)據(jù)轉(zhuǎn)化操作,要求用戶的交互。文獻[7]實現(xiàn)了一個可擴展的數(shù)據(jù)清洗工具 AJAX,文獻[8]提出了數(shù)據(jù)清洗的一個交互式系統(tǒng)框架,它集成了數(shù)據(jù)轉(zhuǎn)化和差異檢測,具有良好的交互性。文獻[9]提出了一個粗粒度的、緊耦合的自動化數(shù)據(jù)清洗框架。
本文提出了一個大數(shù)據(jù)環(huán)境下數(shù)據(jù)清洗的一般性系統(tǒng)框架,如圖2所示。該框架分為三部分:外部的支持模塊、數(shù)據(jù)清洗模塊和內(nèi)部的數(shù)據(jù)庫模塊。其中外部的支持模塊主要包括系統(tǒng)日志、監(jiān)控系統(tǒng)和訪問接口;內(nèi)部的數(shù)據(jù)庫模塊主要包括在數(shù)據(jù)清洗過程中需要調(diào)用的數(shù)據(jù)庫,例如字典庫、算法庫和規(guī)則庫等。數(shù)據(jù)清洗模塊是數(shù)據(jù)清洗系統(tǒng)的主要模塊,數(shù)據(jù)清洗模塊根據(jù)制定的算法和規(guī)則在內(nèi)部數(shù)據(jù)庫中進行搜索和調(diào)用,并接受外部支持模塊的訪問和監(jiān)控。數(shù)據(jù)清洗模塊主要列出了在數(shù)據(jù)清洗過程中研究最多的不完整數(shù)據(jù)清洗、不一致數(shù)據(jù)清洗和重復(fù)數(shù)據(jù)清洗三個子模塊。
在復(fù)雜網(wǎng)絡(luò)環(huán)境下,當(dāng)數(shù)據(jù)上報、接口調(diào)用時會產(chǎn)生大量的缺失值,因此不完整數(shù)據(jù)是不可避免的現(xiàn)象,而不完整的數(shù)據(jù)對大數(shù)據(jù)環(huán)境下的決策具有一定的影響。缺失值主要包括屬性值錯誤和空值兩個方面。屬性錯誤值檢測主要包括括統(tǒng)計法、聚類方法以及關(guān)聯(lián)規(guī)則方法[10],這些方法都是以統(tǒng)計和總結(jié)規(guī)律的方式計算并查找錯誤值,進而修正錯誤數(shù)據(jù);而空值檢測主要采用人工填寫空缺值法手工檢測并填寫屬性值,也可以采用屬性的平均值、中間值、最大值、最小值或更為復(fù)雜的概率統(tǒng)計函數(shù)值填充空缺值法。不完整數(shù)據(jù)清洗子模塊流程如圖3所示。
圖2 數(shù)據(jù)清洗系統(tǒng)框架Fig.2 Data cleaning framework
主要過程為:
(1)對獲得的數(shù)據(jù)源進行缺失值的參數(shù)估計,為后續(xù)的數(shù)據(jù)處理提供所需數(shù)據(jù);
(2)根據(jù)數(shù)據(jù)填充算法對不完整數(shù)據(jù)進行缺失值的數(shù)據(jù)填充;
(3)輸出填充后的完整數(shù)據(jù)。
大數(shù)據(jù)環(huán)境下數(shù)據(jù)量的劇增使得獲得的數(shù)據(jù)源會由于各種原因違反數(shù)據(jù)定義的完整性約束,存在大量的不一致數(shù)據(jù)。不一致數(shù)據(jù)修復(fù)子模塊的功能就是將不一致的數(shù)據(jù)進行修復(fù),使得其符合數(shù)據(jù)的完整性約束,保持數(shù)據(jù)的一致性,其流程如圖4所示。
圖4 不一致數(shù)據(jù)修復(fù)流程Fig.4 Inconsistent data repairing process
不一致數(shù)據(jù)修復(fù)子模塊主要過程為:
(1)將數(shù)據(jù)源按照規(guī)定的數(shù)據(jù)格式進行檢測,并執(zhí)行預(yù)處理,方便后續(xù)的處理;
(2)對預(yù)處理后的數(shù)據(jù)進行數(shù)據(jù)不一致的檢測,如果與原始的數(shù)據(jù)完整性約束不一致,則進行數(shù)據(jù)修復(fù)的過程,得到修復(fù)后的數(shù)據(jù)。通常修復(fù)后的數(shù)據(jù)有可能帶來新的數(shù)據(jù)不一致,因此要將修復(fù)結(jié)果再次進行不一致的檢測與修復(fù),直到符合要求為止。
(3)最后將修復(fù)的數(shù)據(jù)結(jié)果還原為原格式,以方便其他系統(tǒng)的使用。
相似重復(fù)數(shù)據(jù)在“臟數(shù)據(jù)”中占的比重較大,其產(chǎn)生的原因較多,例如數(shù)據(jù)錄入時的拼寫錯誤,縮寫不同或存儲類型不同等,通常表現(xiàn)為多條記錄所表達的含義相同,或同一目標實體的記錄雖然在形式上有所不同,但其描述的目標卻相同。這些相似重復(fù)記錄的數(shù)據(jù)特征并不明顯,對數(shù)據(jù)識別和數(shù)據(jù)清洗造成了很大的難度。因此,對相似重復(fù)記錄數(shù)據(jù)進行清洗,可以提高數(shù)據(jù)庫的使用率,降低系統(tǒng)消耗,并提高數(shù)據(jù)質(zhì)量。
重復(fù)數(shù)據(jù)檢測主要分為基于字段和基于記錄的重復(fù)檢測?;谧侄蔚闹貜?fù)檢測算法主要包括編輯距離算法等?;谟涗浀闹貜?fù)檢測算法主要包括排序鄰居算法、優(yōu)先隊列算法、N-Gram 聚類算法[11]。重復(fù)數(shù)據(jù)清洗子模塊采用排序合并算法,如圖5所示。
重復(fù)數(shù)據(jù)清洗的主要過程為:
(1)通過對源數(shù)據(jù)庫屬性段的分析,找到屬性的關(guān)鍵值,并根據(jù)關(guān)鍵值對源數(shù)據(jù)庫中的數(shù)據(jù)記錄進行排序,可以選擇自上而下或者自下而上的順序來排序;
圖5 相似重復(fù)數(shù)據(jù)清洗流程Fig.5 Approximate duplicate data cleaning process
(2)按順序掃描數(shù)據(jù)庫中的每一條記錄,并將它與相鄰的記錄進行比較,進行記錄的相似度匹配計算;
(3)如果計算出的相似度數(shù)值大于系統(tǒng)設(shè)定的閾值,說明該記錄或連續(xù)的幾條記錄為相似重復(fù)記錄,則進行數(shù)據(jù)記錄的合并或刪除操作;否則,掃描下一條數(shù)據(jù)記錄,重復(fù)以上第2)和3)的步驟。
(4)當(dāng)所有數(shù)據(jù)記錄檢測完畢,輸出最后結(jié)果。
大數(shù)據(jù)環(huán)境下數(shù)據(jù)具有數(shù)據(jù)量大、價值密度低等的特點,由于拼寫錯誤、數(shù)據(jù)合并等原因?qū)е滦畔⒅邪恍┤笔?shù)據(jù)、異常數(shù)據(jù)和不一致數(shù)據(jù),這樣的數(shù)據(jù)稱為“臟數(shù)據(jù)”,嚴重影響了數(shù)據(jù)利用的效率和決策質(zhì)量,而數(shù)據(jù)清洗技術(shù)則可以提高數(shù)據(jù)質(zhì)量,使系統(tǒng)中的數(shù)據(jù)更加準確、一致,并能夠支持決策。數(shù)據(jù)清洗技術(shù)在各個領(lǐng)域中應(yīng)用較廣泛,例如:銀行、交通、水利[12]等。本文對數(shù)據(jù)清洗的定義和原理進行研究,提出大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗的一般性框架,詳細分析了不完整數(shù)據(jù)清洗子模塊、不一致數(shù)據(jù)修復(fù)子模塊和相似重復(fù)記錄數(shù)據(jù)清洗子模塊中的清洗流程,對相似重復(fù)記錄清洗算法效率的優(yōu)化是下一步的研究重點。
[1] 馬曉亭. 基于大數(shù)據(jù)決策分析需求的圖書館大數(shù)據(jù)清洗系統(tǒng)設(shè)計[J]. 現(xiàn)代情報, 2016, 36(9): 107-111.
[2] 馬凱航, 高永明, 吳止鍰. 大數(shù)據(jù)時代數(shù)據(jù)管理技術(shù)研究綜述[J]. 軟件, 2015, 36(10): 46-49.
[3] 王書夢, 吳曉松. 大數(shù)據(jù)環(huán)境下基于MapReduce 的網(wǎng)絡(luò)輿情熱點發(fā)現(xiàn)[J]. 軟件, 2015, 36(7): 108-113.
[4] S. Madden. From databases to big data[J]. IEEE Internet Computing, 2012: 4-6.
[5] 葉歐, 張璟, 李軍懷. 中文數(shù)據(jù)清洗研究綜述[J]. 計算機工程與應(yīng)用, 2012, 48(14): 121-129.
[6] Galharda H, Florescu D, Shasha D. Declarative Data Cleaning: Language, Model and Algorithms[C]. Proceedings of the 27thInternational Conference on the Very Large Data Bases,Roma: Morgan Kaufmann, 2001: 371-380.
[7] Galhardas H, Florescu D, Shasha D. AJAX: an Extensible Data Cleaning Tool [C]. Proceedings of the ACM SIGMOD International Conference on Management of Data, 2000:590-598.
[8] Raman V, Hellerstein J. Potter’s Wheel: an Interactive Data Cleaning Systems [C]. Proceedings of the 27thInternational Conference on the Very Large Data Bases, 2001: 381-390.
[9] 王芳瀟, 曹建軍, 汪挺. 一種通用數(shù)據(jù)清洗框架的研究與應(yīng)用[J]. 現(xiàn)代軍事通信, 2010, 18(1): 60-63.
[10] Maletic J, Marcus A. Data cleansing: beyond integrity analysis[J]. Division of Computer Science, 2000.
[11] 邱越峰, 田增平, 周傲英. 一種高效的檢測相似重復(fù)記錄的方法[J]. 計算機學(xué)報, 2001, 24(1): 69-75.
[12] 王海沛, 馮軍軍, 賈如春. 水利云下的數(shù)據(jù)清洗策略研究與實現(xiàn)[J]. 軟件, 2016, 37(10): 89-93.
Research on the Data Cleaning Framework in Big Data
FENG Fu-jun, YAO Jun-ping, LI Xin-she, MA Jun-chun
(Research Inst. of High-Tech, ShaanXi Xi'an, 710025, China)
Some dirty data exists inevitably under big data environment, and it seriously affects the data quality,while the technology of data cleaning is one of the most important mothes to improve data quality, and the researches on the data cleaning framework are helpful for big data decision. A general framework of data cleaning in big data is proposed, the core data cleaning module includes three submodules, which are imcompleted records cleaning, inconsistent data repairing and approximate duplicate records cleaning, and the processes of data cleaning are discussed specifically.
Big data; Data quality; Data cleaning; Approximate duplicate records
TP393
A
10.3969/j.issn.1003-6970.2017.12.037
本文著錄格式:封富君,姚俊萍,李新社,等. 大數(shù)據(jù)環(huán)境下的數(shù)據(jù)清洗框架研究[J]. 軟件,2017,38(12):193-196
封富君(1978-),女,講師,主要研究方向:信息安全、大數(shù)據(jù);姚俊萍(1978-),女,副教授,研究方向:信息安全、大數(shù)據(jù);李新社(1965-),男,副教授,研究方向:信息安全、大數(shù)據(jù);馬俊春(1983-),女,講師,研究方向:信息安全、大數(shù)據(jù)。