于琦
摘 要:隨著信息技術的發展,每天都會產生海量數據,我們正處于一個知識爆炸的大數據時代。大數據受到企業界、科技界、政府等各行各業的高度重視。面對龐大的數據集群,需要用數據挖掘的方法來從眾多數據中找到隱藏信息。無論在數據分析還是數據挖掘過程中,數據預處理都處于重要地位,占據數據挖掘過程總工作量的60%~80%,數據預處理過程決定著數據挖掘結果的準確性和有效性,而數據清理在數據挖掘中具有重要作用。本文針對各數據挖掘中數據格式不統一、數據清理過程不完善、冗余數據繁多及數據挖掘任務對數據類型的要求不同等問題,探討了數據清理的基本概念、作用、方法和其中幾個關鍵技術。
關鍵詞:數據挖掘;數據清理;數據預處理
中圖分類號:TP311.12 文獻標識碼:A 文章編號:1003-5168(2018)20-0021-03
Overview of Data Cleaning Techniques in Data Mining
YU Qi
Abstract: With the development of information technology, massive data will be generated every day. We are in the era of big data explosion. Big data is highly valued by businesses, science and technology, government and so on. Faced with huge data clusters, data mining is required to find hidden information from many data. In the process of data analysis and data mining, data preprocessing occupies an important position, occupying the 60%~80% of the total workload of data mining. Data preprocessing determines the accuracy and effectiveness of data mining results, and data cleaning plays an important role in data mining. In this paper, the basic concepts, functions, methods and several key technologies of data cleaning were discussed in view of the problems of different data formats, incomplete data cleaning process, numerous redundant data and different requirements for data types.
Keywords: data mining;data cleaning; data preprocessing
1 研究背景
數據挖掘技術在當前商務發展中逐漸受到企業的關注。尿片和啤酒這兩個商品看似不相關,但能通過數據挖掘找到其中的聯系。數據挖掘的例子較多,如音樂公司在老年雜志上為說唱音樂做廣告,信用卡公司在用戶還沒意識到信用卡被盜時就已經在懷疑某個信用卡被盜了。可見,數據挖掘被廣泛應用。數據挖掘是指從大量數據中提取或“挖掘”知識[1]。在數據挖掘中,關鍵就是處理數據,挖掘數據中隱含的重要信息。但是,在挖掘過程中,數據量太大,且有很多數據是不完整的、含噪聲的,這時,就要對數據進行預處理。數據預處理的結果直接影響數據挖掘的結果,若預處理效果差,最后得出的結論很可能是錯誤的。而數據預處理中最重要的是數據清理,數據清理所用的時間占據數據預處理的絕大部分,數據清理的結果直接關系到最后的結果。本文主要從數據空缺值、數據的噪聲、數據的不一致性和重復數據等方面研究數據清理,并提出數據清理方法。利用這些數據清理方法,可以有效提高數據挖掘的精度和性能。
2 數據清理
在現實世界中,數據源存在各種問題,有的數據不完整,有的數據有噪聲,有的數據存在不一致性,有的數據存在極大相似性,這些數據都不能直接作為挖掘的數據,需要對其進行數據清理。因此,數據清理解決的是數據質量問題,即通過發現和處理數據中的錯誤和不一致來提高數據質量。數據清理在數據預處理中花費的時間是最長的,同時也是最重要的一步。
數據清理主要包括3個步驟,即數據分析、數據檢測和數據修正。數據分析主要是指從數據中發現控制數據的一般規則,然后定義相應的數據清理規則,選擇合適的清理算法。數據檢測是根據之前定義好的規則及算法來檢測數據,最后對檢測后的數據進行修正[2-5]。數據清理原理見圖1。
解決數據沖突問題的方法取決于問題的形式、數據挖掘模型的需求,還有我們選擇什么樣的方法來分析問題[6]。因此,處理數據沖突、進行數據清理時,方法的選擇是關鍵。接下來主要介紹數據清理常見的幾種方法。
2.1 空缺值的處理
在數據庫中,經常會遇到空值的問題。產生空值的原因較多,例如,當注冊一個用戶時,有很多選項是選填的,只有用戶名和密碼等必填項是有數據的;又如,填寫者在填寫某些信息時認為沒有必要,也忽略了;由于記錄的內容不一致而被刪除。這些原因造成了空缺值的產生。
對于空缺值的處理,可采取的方法較多,要根據具體情況選擇合適的方法。處理空缺值的常用方法是忽略元祖,手動填寫缺失值,填充全局變量,使用屬性的均值或最可能的值填充空缺值。當缺少類標號時,使用忽略元祖的方法較好。當空缺值是一些非常重要的數據,但數據量不大時,可以采用人工填寫的方法。全局變量的方法不是很可靠,但方法簡單。均值填寫反映了數據的總體水平,不會對挖掘的結果產生較大影響。
2.2 噪聲
噪聲是被測量的變量的隨機誤差或方差[1]。對于一個變量的測量總會存在偏差,這些偏差就是噪聲。如果偏差較大,就是孤立點。一般情況下,主要使用平滑技術來處理方差。具體有以下幾種方法。
①分箱法。分箱法是指通過考察“鄰居”(周圍的值)來平滑存儲數據的值,即將數據平均分入幾個箱中,對每個箱子中的數值進行轉換,可以轉換為箱中所有數值的平均值、中值或者邊界值。轉換后,數值的變化范圍就相應縮小。事實上,這是數據離散化的一種方式。
②聚類法。聚類將類似的值組織成群或“聚類”,聚類集合之外的值被視為孤立點。通過聚類分析可以發現異常數據,相似或相鄰近的數據聚合在一起形成聚類集合,而那些位于這些聚類集合之外的數據對象,自然而然就被認為是異常數。
③回歸。可以通過讓數據適合一個函數(如回歸函數)來平滑數據。線性回歸和多線性回歸分析可以應用到噪聲的消除中[7]。
噪聲中最常見的是極端數據。極端數據對數據挖掘的最終結果影響較大,其會導致數據挖掘的結論出現錯誤。極端數據是指那些遠遠偏離正態分布的數據。由于數據量過大,因此,不宜采取人工處理的方式,要采取行之有效的方法。直接刪除這些極端數據也是不明智的,一般需要將這些數據標記出來,由挖掘者決定是刪除還是使用一定的值代替,一般是使用該列的平均值。這種方法的思想是要給數值確定一個界限,以人的年齡為例,人的年齡不可能是負數,同時人的壽命是有限的,根據這些條件確定年齡這個屬性的范圍,當輸入人員輸入19,而不小心多按了9時,就會提示錯誤。邊界值的使用能有效反映該列的極端數據,有利于對數據的清理。
2.3 數據的不一致性
導致數據不一致性的原因較多,例如,在數據輸入時的錯誤輸入,包括無意輸入錯誤和有意輸入錯誤;未及時更新過時的數據(用戶的手機號碼或者是居住地址等)。同時,編碼使用的不一致和數據表示的不一致也是導致數據不一致的原因。因此,來自多個數據源的數據對同一個事物表示不一致的現象較為常見,此時需要通過自動或者人工手動的方式進行校正,將數據標準化為相同格式的結構[4]。例如,日期的表示,有的系統會將日期表示為“2011/6/12”,而有的系統會存儲為“12/6/2011”,表示的意思是一樣的,但在數據挖掘過程中會出現問題,因此一致性在數據挖掘中較為重要。
2.4 相似重復記錄的清洗
清理相似重復數據的目的是消除冗余。對相似重復數據的清理,可以采用基本近鄰排序算法(Sorted-Neighborhood Method,SNM)[8]。在利用該方法的過程中,首先要將一個或多個關系表拼接成為一個含有N條記錄的數據集,然后采用基本近鄰方法。基本近鄰方法分為創建關鍵字、排序和合并這三步。
第一步是創建關鍵字。關鍵字的選擇要考慮項目應用的背景,基本鄰近排序算法的進度和關鍵字的選擇密切相關,因此,關鍵字的選取非常重要。
第二步是通過第一步選取的關鍵字來進行排序。
最后一步是合并在排序后的數據集上面滑動一個固定的窗口,數據集中的每一條記錄同固定窗口比較,最先進入窗口的記錄會最先滑出窗口。
一個窗口有W條記錄,每條新進入窗口的記錄都要和窗口的W-1條記錄進行比較。為了檢測重復記錄,然后最先進入窗口內的記錄滑出窗口,最后一條記錄的下一條記錄移入窗口,再把此W條記錄作為下一輪比較對象,直到記錄集的最后。由于基本近鄰算法采用的是滑動窗口技術,由此減少了比較的次數,能保證準確率。但是,該算法對關鍵字的依賴程度過大,因此,關鍵字的選取異常重要,如果選取的關鍵字錯誤或者無法顯示對象的特征,那么就會出現嚴重的后果;另外,窗口大小的選取也較為關鍵。
針對基本近鄰排序的不足,Hernander等人提出了多趟近鄰排序算法(Mlti-Pass Sorted-Neighborhood,MPN),該算法的思想是獨立地執行多趟近鄰排序算法,每次創建不同的排序關鍵字,并使用相對較小的滑動窗口。然后采用基于規則的知識庫來生成一個等價原理,作為合并記錄的判斷標準,將每趟掃描識別出的重復記錄合并為一組,在合并時,假定記錄的重復是具有傳遞性的,即計算其傳遞閉包[9]。多趟近鄰算法有效解決了基本鄰近算法的兩個主要問題,雖然仍存在其他問題,但對相似重復數據的清理效果較好。
除了SNM和MPN兩個算法外,Fuzzy Match/Merge算法也適用于解決重復數據問題,其是一種適合多種基于客戶應用的模糊匹配與合并的算法[10]。該算法的主要思想是對各個屬性的數據進行規范化處理,將處理后的數據兩兩之間進行比較,在比較的過程中,會采用模糊策略,然后將之前兩兩比較的結果進行合并。
3 結語
數據清理是數據挖掘技術中最重要的步驟,數據清理工作的質量,直接關系到數據挖掘效果。本文主要探討數據清理中常見的幾種方法,分析其優缺點。這些方法還有很多需要深入研究的地方,其運用仍不成熟,所以,數據挖掘中的數據清理還有許多方面值得研究。
參考文獻:
[1]Jiawei Han,Micheline Kamber.數據挖掘概念與技術[M].范明,孟小蜂,譯.北京:機械工業出版社,2007.
[2]Richard J.Roiger,Michael W.Geatz.數據挖掘教程[M].翁敬農,譯.北京:清華大學出版社,2003.
[3]鄭慶華,劉均,田峰,等.Web知識挖掘:理論、方法與應用[M].北京:科學出版社,2010.
[4]代昆玉,胡濱.基于數據倉庫的數據清理技術概述[J].貴州大學學報(自然科學版),2007(3):283-284.
[5]莊曉青,徐立臻,董逸生.數據清理及其在數據倉庫中的應用[J].計算機應用研究,2003(6):147-149.
[6]唐新余,陳海燕,李曉,等.數據清理中幾種解決數據沖突的方法[J].計算機應用研究,2004(12):209-211.
[7]菅志剛,金旭.數據挖掘中數據預處理的研究與實現[J].計算機應用研究,2004(7):117-118.
[8]許向陽,佘春紅.近似重復記錄的增量式識別算法[J].計算機工程與應用,2003(12):191-193.
[9]李堅,鄭寧.對基于MPN數據清洗算法的改進[J].計算機應用與軟件,2008(2):245-247.
[10]陳偉,丁秋林.可擴展數據清理軟件平臺的研究[J].電子科技大學學報,2006(1):100-103.