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