胡文瑜,應康輝*
(1.福建工程學院 計算機科學與數(shù)學學院,福建 福州 350118;2.福建省大數(shù)據(jù)挖掘與應用技術(shù)重點實驗室,福建 福州 350118)
隨著信息技術(shù)的高速發(fā)展,生成、收集和存儲大型數(shù)據(jù)集變得越來越容易。雖然通過大數(shù)據(jù)分析可獲得有價值的信息與智慧見解,但這是建立在數(shù)據(jù)可用性或臟數(shù)據(jù)被充分清洗的基礎上。影響數(shù)據(jù)可用性的因素包括:不一致值、重復值、空值和拼寫問題等。數(shù)據(jù)清洗是清洗數(shù)據(jù)中存在的錯誤和不一致等問題來提高數(shù)據(jù)質(zhì)量[1]。數(shù)據(jù)質(zhì)量問題分為數(shù)據(jù)模式和實例數(shù)據(jù),數(shù)據(jù)清洗也分為模式層清洗和實例層清洗。模式層的清洗主要是完整性約束、異構(gòu)模式設計和結(jié)構(gòu)沖突,需要通過程序自動發(fā)現(xiàn)或者人工實現(xiàn)清洗。實例層的清洗主要對屬性值和重復記錄進行清洗[2]。數(shù)據(jù)集中的屬性和重復記錄問題是臟數(shù)據(jù)的主要構(gòu)成,均屬于實例層數(shù)據(jù)清洗目標,所以對實例層數(shù)據(jù)清洗技術(shù)的研究是有意義和價值的。
數(shù)據(jù)清洗主要在數(shù)據(jù)倉庫、數(shù)據(jù)庫知識發(fā)現(xiàn)和決策支持這三個領(lǐng)域研究。數(shù)據(jù)倉庫領(lǐng)域中,數(shù)據(jù)清洗是構(gòu)建數(shù)據(jù)倉庫的第一步。作為數(shù)據(jù)清洗中重要的組成部分,實例層數(shù)據(jù)清洗顯得更加重要。實例層數(shù)據(jù)清洗有以下兩個方面研究:(1)屬性錯誤檢測與消除:文獻[3]采用統(tǒng)計方法來檢測數(shù)值型屬性;聚類方法來尋找出字段級檢查不出的孤立點;分箱方法用于清洗異常數(shù)據(jù)。文獻[4]對關(guān)系中的數(shù)據(jù)進行插入、刪除等操作來消除數(shù)據(jù)冗余問題。(2)重復記錄檢測與消除:采用基于語義和字面的檢測方法來檢測重復記錄;優(yōu)先隊列、近鄰排序等方法消除重復記錄[5-6]。表1介紹了一些國內(nèi)外研究方法。圖1描述了實例層數(shù)據(jù)清洗算法分類。
表1 現(xiàn)有的一些國內(nèi)外實例層數(shù)據(jù)清洗方法
圖1 實例層數(shù)據(jù)清洗算法分類
自動檢測屬性錯誤方法減少了人工操作且效率高,具體的方法有基于統(tǒng)計的方法[12]、聚類方法[13]和關(guān)聯(lián)規(guī)則方法[14]。表2對上述三種方法進行了比較。
表2 自動檢測屬性錯誤方法的比較
屬性錯誤清洗包括3個方面:(1)清洗空缺值:采用忽略元組、全局變量、屬性的平均值和中間值等統(tǒng)計值來填充空缺值[15]。(2)清洗噪聲數(shù)據(jù):采用分箱法,“箱的深度”表示不同的箱里有相同個數(shù)的數(shù)據(jù),“箱的寬度”表示每個箱中數(shù)值的取值區(qū)間為常數(shù),把屬性值分配到等深或等寬的“箱”中,用箱中屬性值的平均值來替換“箱”中的屬性值[16]。(3)清洗不一致數(shù)據(jù):采用條件函數(shù)依賴、標準函數(shù)庫和匯總分解函數(shù)來清洗。例如屬性之間的關(guān)系采用函數(shù)依賴來清洗不一致數(shù)據(jù)。表3是關(guān)于屬性錯誤清洗方法的比較。
表3 屬性錯誤清洗方法的比較
檢測重復記錄的方法有:基本的字段匹配方法[17]、Smith-Waterman算法、R-S-W算法、編輯距離方法[18]、基于N-gram的字符串匹配算法、中文字段匹配算法和余弦相似度函數(shù)[19]、基于統(tǒng)計的詞語相似度算法、基于語義資源的算法。
基本的字段匹配方法是把兩個分詞串中順序匹配的分詞個數(shù)除以所有分詞個數(shù)的平均值,計算出匹配度。如表4中兩條記錄中的地址字段值,字段匹配度=k/((|A|+|B|)/2)=0.85,|A|和|B|分別為A,B中分詞的個數(shù)。
表4 重復記錄例子
文獻[19]提出改進后的Smith-Waterman算法(R-S-W),該算法對拼寫錯誤和字符串的順序以及縮寫有著深入研究,卻無法應用在中文。文獻[20]提出基于N-gram的字符串匹配算法,對兩個字符串中n個字符進行排序組合及比較兩個字符串的極限閾值,從而得出兩個字符串是否相同。文獻[21]采用改進編輯距離方法來計算中文句子的相似度。文獻[22]提出了基于PMI-IR算法,該方法是搜索引擎來獲取數(shù)據(jù)并采用點互信息作為詞語相似度計算的指標。文獻[22]提出一種基于知網(wǎng)、面向語義的詞匯語義相似度計算方法,該方法通過概念切分解決知網(wǎng)中未登錄的語義相似度問題。表5是關(guān)于常用重復記錄檢測算法的比較。
表5 常用重復記錄檢測算法的比較
消除重復記錄的算法有:優(yōu)先隊列算法[23]、近鄰排序算法(SNM)、多趟近鄰排序(MPN)、優(yōu)化的多趟近鄰排序算法(OMPN)[24]。優(yōu)先隊列法是由Monge提出,首先數(shù)據(jù)集會根據(jù)關(guān)鍵詞進行排序,再對排序后的順序依次掃描數(shù)據(jù)集。Hernandez[24]提出近鄰排序法,該方法通過關(guān)鍵字進行排序,采用固定大小的滑動窗口在排序后的數(shù)據(jù)集上滑動并重復檢測窗口,減少記錄的比較次數(shù)。文獻[13]提出多趟近鄰排序法。該方法要求在排序的數(shù)據(jù)集上使用近鄰排序方法,但使用的是不同的關(guān)鍵詞和較少的窗口,而且還要對MPN算法的結(jié)果求傳統(tǒng)閉包。文獻[25]改進了近鄰排序算法,通過比較相似度與閾值來調(diào)整窗口值的大小,并加入有效權(quán)值來減少字段缺失的影響。文獻[25]中OMPN算法對MPN算法在選取排序關(guān)鍵字時過于依賴專家經(jīng)驗的缺陷進行了改進。衡量三種近鄰排序算法的標準是召回率、誤識別率和精確度。表6是上述各種算法的比較。
表6 常用重復記錄清洗算法比較
上面分別對實例層數(shù)據(jù)清洗中屬性錯誤、重復記錄各自對應的方法進行比較和分析,屬性錯誤檢測中主要針對結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),還需要對非結(jié)構(gòu)化數(shù)據(jù)進行研究。屬性錯誤清洗中分箱和回歸的方法都相對簡單,容易解決,但準確性不高。重復記錄檢測中的算法都比較簡單直觀,但是中英文和語義的關(guān)系不能兩者都實現(xiàn),下一步還需要實現(xiàn)中英文和語義的結(jié)合。重復記錄清洗中近鄰排序、多趟近鄰排序和優(yōu)化的多趟近鄰排序都是基于窗口大小和排序關(guān)鍵字來判別,而優(yōu)先隊列只是運用關(guān)鍵字排序來判定,效果沒有排序算法的好。
數(shù)據(jù)清洗可以和其他領(lǐng)域進行結(jié)合,獲得更好的應用發(fā)展。例如,數(shù)據(jù)清洗中重復記錄技術(shù)或方法應用于電氣工程領(lǐng)域的數(shù)據(jù)匯聚與數(shù)據(jù)清洗中。隨著數(shù)字電廠的不斷建設、大數(shù)據(jù)平臺的逐步完善和智能設備的進一步推廣,電力系統(tǒng)數(shù)據(jù)量急劇增長,需要展開大量的數(shù)據(jù)分析,然而電力數(shù)據(jù)在采集、匯聚過程中會出現(xiàn)數(shù)據(jù)質(zhì)量問題,造成數(shù)據(jù)融合困難,這就需要結(jié)合數(shù)據(jù)清洗方法,對電力數(shù)據(jù)進行實時校驗和清洗,提高數(shù)據(jù)的可用性[26]。下面介紹了數(shù)據(jù)清洗的一些應用領(lǐng)域,表7對實例層數(shù)據(jù)清洗與其他領(lǐng)域的結(jié)合情況進行了闡述。
醫(yī)療領(lǐng)域數(shù)據(jù)是需要進行數(shù)據(jù)清洗的一個領(lǐng)域,尤其在醫(yī)療體檢數(shù)據(jù)方面,由于醫(yī)療體檢中心只對受檢者提供當次的體檢報告,缺乏對受檢者歷史數(shù)據(jù)的分析,導致醫(yī)療機構(gòu)體檢數(shù)據(jù)庫中存在基本信息缺失、體檢項目名稱不同、體檢指標參考值范圍不同的問題[27],因此需要對上述出現(xiàn)的問題進行數(shù)據(jù)清洗,從而保證數(shù)據(jù)的干凈。林予松等人[28]提出基于分詞和權(quán)重的字段匹配算法,解決了體檢數(shù)據(jù)不一致的問題,但還需要綜合考慮部分重心詞前移和算法準確性不高的情況。此外醫(yī)療體檢中數(shù)據(jù)容易出現(xiàn)唯一標志碼缺失問題,是數(shù)據(jù)清洗的主要障礙之一。
隨著電力系統(tǒng)信息化程度的提高和智能電網(wǎng)的加速建設,用戶電力數(shù)據(jù)量呈指數(shù)型增長狀態(tài),但是電力數(shù)據(jù)量的增長而導致電力數(shù)據(jù)也出現(xiàn)諸多問題。文獻[29]將電力數(shù)據(jù)看成時間序列,用ARIMA擬合并迭代檢驗的方法修復缺失數(shù)據(jù),但是該方法利用的信息較少,且不適合修復缺失點連續(xù)分布的情況。文獻[30]通過訓練RBF神經(jīng)網(wǎng)絡作為狀態(tài)轉(zhuǎn)移方程,再利用卡爾曼濾波方法對數(shù)據(jù)進行濾波并修復,但是該方法計算量較大,在細節(jié)上把握不夠精確。田英杰等人[31]提出函數(shù)型數(shù)據(jù)分析對錯誤和缺失數(shù)據(jù)進行修正和補全。通過函數(shù)估計方法,將原有觀測個體的離散數(shù)據(jù)映射到一個新的函數(shù)空間,將數(shù)據(jù)中缺失的成分利用相似的方法修復缺失數(shù)據(jù),但是該方法利用的信息較少,且不適合修復缺失點連續(xù)分布的情況。隨著用戶電力數(shù)據(jù)量逐步的增長,使得該領(lǐng)域數(shù)據(jù)清洗的任務變得更加困難和富有挑戰(zhàn)性。
交通數(shù)據(jù)的采集和處理技術(shù)是智能交通系統(tǒng)的關(guān)鍵性技術(shù),無線電和計算機技術(shù)的蓬勃發(fā)展使得RFID檢測技術(shù)作為一種新型檢測技術(shù)廣泛應用于道路交通數(shù)據(jù)采集。由于RFID檢測設備故障、通信系統(tǒng)故障及環(huán)境等異常原因,采集到的交通數(shù)據(jù)存在冗余、遺漏、錯誤和不精確的現(xiàn)象,將導致產(chǎn)生不穩(wěn)定因素,影響交通狀態(tài)估計、預測及評價,進一步影響交通管理和公眾出行信息服務的質(zhì)量。文獻[32]提出一種基于最大頻繁模式因子的高位孤立點挖掘算法,能解決孤立點挖掘算法中存在的不容易獲取完全頻繁模式和時間復雜度高等問題,并且可以減少占用內(nèi)存,提高運行效率。為了減少數(shù)據(jù)的錯誤和冗余,對交通數(shù)據(jù)的數(shù)據(jù)清洗得更全面和準確。
表7 實例層數(shù)據(jù)清洗的領(lǐng)域應用情況
實例層數(shù)據(jù)清洗在某些特定領(lǐng)域的數(shù)據(jù)質(zhì)量工程中有許多應用需求和應用研究,這些應用研究針對的是特定行業(yè)背景的數(shù)據(jù)清洗任務,但存在著技術(shù)局限和不足。文獻[36]采用四分位法和K-means算法消除異常值,由于K-means算法是一種聚類算法,可能會導致正常數(shù)據(jù)的錯誤刪除,此外K值的選擇比較復雜,對數(shù)據(jù)清洗的處理結(jié)果有不利影響。文獻[37]采用基于密度的局部離群因子算法將足夠高密度的區(qū)域劃分為簇,可以有效地檢測出散亂的離群點,但不適用于高密度的堆積離群點。文獻[38]是根據(jù)異常值的位置分布來檢測異常值,它不需要數(shù)據(jù)樣本訓練而且是普遍適用的。但是對大量堆積離群值的檢測和清除還需要改進,對風速功率曲線離群點的空間分布和形狀研究還待深入。文獻[39]分析了風力渦輪機中風電異常值的分布特征和分類,并提出了一種基于變點分組和四分位算法的聯(lián)合數(shù)據(jù)清理算法。該方法識別風電曲線的疊加異常值和散亂離群值,清洗效果好,效率高,通用性強,可以處理影響數(shù)據(jù)完整性的異常數(shù)據(jù),但是沒有考慮數(shù)據(jù)校正和數(shù)據(jù)插值來提高數(shù)據(jù)質(zhì)量,沒有根據(jù)實際情況來進行數(shù)據(jù)修正。文獻[40]的方法可以通過文本的重要關(guān)鍵詞在一定程度上體現(xiàn)文本的主題,而且統(tǒng)計詞頻處理相對簡單。但詞頻類算法只統(tǒng)計詞語出現(xiàn)的次數(shù),卻忽略了關(guān)鍵詞所在文檔結(jié)構(gòu)上的位置情況和上下文關(guān)鍵詞的關(guān)聯(lián)信息。文獻[41]提出結(jié)合眾包數(shù)據(jù)庫的集成機器學習算法,將人類標簽的準確性與機器學習分類器的速度與成本效益相結(jié)合,該方法可以提取半結(jié)構(gòu)數(shù)據(jù)中的有效信息,在一定程度上可以更正數(shù)據(jù)中存在的缺陷,但是對半結(jié)構(gòu)化數(shù)據(jù)進行規(guī)格化還是無能為力。文獻[42]提出非結(jié)構(gòu)化數(shù)據(jù)融合方法,該方法降低數(shù)據(jù)噪聲的干擾,提取剩余數(shù)據(jù),整合相關(guān)的數(shù)據(jù),但是由于非結(jié)構(gòu)化數(shù)據(jù)本身的特點,多源數(shù)據(jù)融合分析有很大的難度。
通過研究發(fā)現(xiàn),實例層數(shù)據(jù)清洗是一個相對成熟但又期待有更多突破和創(chuàng)新的領(lǐng)域,技術(shù)發(fā)展的空間還很大,包括:
(1)數(shù)據(jù)相似度檢測的對象主要是數(shù)據(jù)庫中的短文本,對長文本的數(shù)據(jù)沒有進行充分研究,主要是長文本語言本身的復雜性和文本中的詞表結(jié)構(gòu)數(shù)據(jù)有很強的依賴性。
(2)目前的研究成果主要適用于結(jié)構(gòu)化數(shù)據(jù),然而待處理的半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的規(guī)模遠遠大于結(jié)構(gòu)化數(shù)據(jù)。半結(jié)構(gòu)化數(shù)據(jù)處理難度大且非結(jié)構(gòu)化數(shù)據(jù)格式多樣、缺乏實效性、數(shù)據(jù)含義比較隱性不容易察覺。
(3)實例層數(shù)據(jù)清洗的算法目前人工參與度較高,不適合大規(guī)模數(shù)據(jù)的清洗。因此需要普適性好、通用性強、計算機能自動識別的實例層數(shù)據(jù)清洗算法。
(4)通用的數(shù)據(jù)清洗算法在專用數(shù)據(jù)集上都需要結(jié)合領(lǐng)域知識,因此需要逐步建立起電氣工程、光電技術(shù)等特定領(lǐng)域的數(shù)據(jù)清洗標準規(guī)則庫。
就現(xiàn)階段的數(shù)據(jù)清洗研究工作取得的成績和存在的問題而言,未來可以通過以下幾個方面對數(shù)據(jù)清洗進行研究:
(1)長文本的相似度檢測:隨著文本信息的增多,長文本的檢測變得越來越需要,例如論文查重、新聞、大規(guī)模網(wǎng)頁去重等,采用基于語義信息的相似度檢測算法來去除長文本中多余的內(nèi)容,并且能夠解決文本中同義詞替換以及一詞多義的問題,但是對可利用的信息數(shù)量與質(zhì)量的要求比較高。因此可以結(jié)合已有的語義網(wǎng)、深度學習算法和半監(jiān)督學習算法來提高數(shù)據(jù)質(zhì)量。
(2)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的處理:目前數(shù)據(jù)結(jié)構(gòu)多種多樣,不只是結(jié)構(gòu)化數(shù)據(jù)的情況,非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)現(xiàn)在變得越來越多。采用基于正則表達式的屬性集識別方法來識別半結(jié)構(gòu)化數(shù)據(jù)中的屬性集,并進行規(guī)則化操作。其實可以將主動學習優(yōu)化成果應用在基于正則表達式的屬性集識別方法中,通過該方法加強機器的學習能力,進一步縮減人工參與。非結(jié)構(gòu)化數(shù)據(jù)采用非結(jié)構(gòu)化數(shù)據(jù)分析與決策系統(tǒng)能快速分析出來且發(fā)現(xiàn)其中隱藏的價值。可以結(jié)合Hadoop和機器學習方法來處理非結(jié)構(gòu)化數(shù)據(jù)中低容錯率以及識別活動數(shù)據(jù)的情況。
(3)自動識別的數(shù)據(jù)清洗算法:自動的Web頁面清洗方法可以對相同或相似布局特征的海量Web頁面進行自行清洗,保存有價值的文本和內(nèi)容。采用樹編輯距離的方法對Web頁面結(jié)構(gòu)進行分類,可以更好地提高Web頁面清洗的準確率。
(4)特定領(lǐng)域的數(shù)據(jù)清洗標準庫:目前提出的基于編程語言的反射技術(shù)和python腳本的銀行領(lǐng)域數(shù)據(jù)清洗規(guī)則庫,有效降低了數(shù)據(jù)清洗的復雜度。再結(jié)合基于分級規(guī)則庫的方法來構(gòu)建規(guī)則庫的邏輯關(guān)系,可以更好地減少數(shù)據(jù)清洗出錯率。
綜上所述,需要找到能適用于大數(shù)據(jù)、流數(shù)據(jù)、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)集的實例層數(shù)據(jù)清洗解決方案,能在現(xiàn)有實例層數(shù)據(jù)清洗技術(shù)上找到時空效率高且通用性好的自動化數(shù)據(jù)錯誤檢測和錯誤糾正算法,能根據(jù)應用領(lǐng)域和數(shù)據(jù)集特點自動的選擇合適的實例層數(shù)據(jù)清洗技術(shù),允許用戶在通用數(shù)據(jù)清洗技術(shù)上定制特定應用領(lǐng)域(比如電氣工程領(lǐng)域)的專用數(shù)據(jù)清洗規(guī)則。傳統(tǒng)的實例層數(shù)據(jù)清洗技術(shù)仍有研究和發(fā)展空間,期待著技術(shù)創(chuàng)新、應用創(chuàng)新和突破性進展。