文/盧星
數(shù)據(jù)清洗技術(shù)是為了提高數(shù)據(jù)質(zhì)量而剔除數(shù)據(jù)中錯(cuò)誤記錄的一種技術(shù)手段,在實(shí)際應(yīng)用中通常與數(shù)據(jù)挖掘技術(shù)、數(shù)據(jù)倉(cāng)庫(kù)技術(shù)、數(shù)據(jù)整合技術(shù)結(jié)合應(yīng)用。數(shù)據(jù)清洗技術(shù)的基本原理為:在分析數(shù)據(jù)源特點(diǎn)的基礎(chǔ)上,找出數(shù)據(jù)質(zhì)量問(wèn)題原因,確定清洗要求,建立起清洗模型,應(yīng)用清洗算法、清洗策略和清洗方案對(duì)應(yīng)到數(shù)據(jù)識(shí)別與處理中,最終清洗出滿足質(zhì)量要求的數(shù)據(jù)。具體如1所示。數(shù)據(jù)清洗是數(shù)據(jù)分析、數(shù)據(jù)挖掘的前提,也是數(shù)據(jù)預(yù)處理的關(guān)鍵環(huán)節(jié),可保證數(shù)據(jù)質(zhì)量和數(shù)據(jù)分析的準(zhǔn)確性。在大數(shù)據(jù)環(huán)境下,數(shù)據(jù)清洗技術(shù)已經(jīng)被廣泛應(yīng)用于大健康、銀行、移動(dòng)通信、交通等領(lǐng)域,在一定程度上保證了數(shù)據(jù)質(zhì)量,為大數(shù)據(jù)決策提供了可靠依據(jù)。
基于函數(shù)依賴的數(shù)據(jù)清洗技術(shù),可解決數(shù)據(jù)異常、重復(fù)、錯(cuò)誤、缺失等問(wèn)題,能夠在數(shù)據(jù)預(yù)處理環(huán)節(jié)對(duì)臟數(shù)據(jù)進(jìn)行清洗,從數(shù)據(jù)源處減少噪聲數(shù)據(jù),提高數(shù)據(jù)清洗效率。該數(shù)據(jù)清洗技術(shù)可廣泛應(yīng)用于移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)分析等領(lǐng)域,具體應(yīng)用步驟如下:
2.1.1 建立數(shù)據(jù)庫(kù)
根據(jù)清洗特征建立數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中存儲(chǔ)有質(zhì)量問(wèn)題的待清洗數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化,生成原始數(shù)據(jù)庫(kù)。
2.1.2 數(shù)據(jù)篩選
對(duì)原始數(shù)據(jù)庫(kù)中噪聲數(shù)據(jù)進(jìn)行分析,利用語(yǔ)義關(guān)聯(lián)挖掘隱藏在字段間的關(guān)系,即字段間的函數(shù)依賴關(guān)系,進(jìn)而確定數(shù)據(jù)的待清洗屬性。
2.1.3 數(shù)據(jù)查找
根據(jù)字段間的函數(shù)依賴關(guān)系找出原始數(shù)據(jù)庫(kù)中存在差異的數(shù)據(jù),建立其高階張量屬性集。
2.1.4 數(shù)據(jù)清洗
在原始數(shù)據(jù)庫(kù)中找出可信度較低的字段,利用字段間的函數(shù)依賴關(guān)系清洗字段和數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行修復(fù)。
2.1.5 數(shù)據(jù)獲取
在數(shù)據(jù)庫(kù)中更新清洗后的數(shù)據(jù),生成目標(biāo)數(shù)據(jù)庫(kù)集,并對(duì)清洗過(guò)程進(jìn)行記錄,生成清洗日志。清洗日志主要包括原始數(shù)據(jù)、清洗時(shí)間、清洗操作、清洗后數(shù)據(jù)等信息,為日后數(shù)據(jù)處理和數(shù)據(jù)質(zhì)量分析提供記錄依據(jù)。
在大數(shù)據(jù)中,相似重復(fù)數(shù)據(jù)是數(shù)據(jù)清理的重點(diǎn),具體表現(xiàn)為多種形式的記錄描述目標(biāo)卻相同,或多條同樣記錄表達(dá)同樣含義,其產(chǎn)生的原因多種多樣,主要包括數(shù)據(jù)錄入拼寫(xiě)錯(cuò)誤、存儲(chǔ)類型不一致、縮寫(xiě)不同等。由于相似重復(fù)數(shù)據(jù)的識(shí)別難度較大,所以必須借助重復(fù)檢測(cè)算法進(jìn)行檢測(cè),以保證相似重復(fù)記錄數(shù)據(jù)的清洗效率,避免數(shù)據(jù)冗余。相似重復(fù)數(shù)據(jù)檢測(cè)是對(duì)字段和記錄是否存在重復(fù)性進(jìn)行檢測(cè),前者主要采用編輯距離算法,后者卻主要采用優(yōu)先列隊(duì)算法、排序鄰居算法、N-Gram聚類算法。
2.2.1 基于排列合并算法的數(shù)據(jù)清洗技術(shù)
基于排列合并算法的相似重復(fù)數(shù)據(jù)清洗流程如下:分析源數(shù)據(jù)庫(kù)的屬性段,確定屬性的關(guān)鍵值,根據(jù)關(guān)鍵值按照自上而下或自下而上的順序排列源數(shù)據(jù)庫(kù)中的數(shù)據(jù);對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行掃描,并將掃描后的數(shù)據(jù)與相鄰數(shù)據(jù)進(jìn)行比較,按照算法計(jì)算相鄰數(shù)據(jù)的相似度;系統(tǒng)預(yù)設(shè)閾值,根據(jù)閾值評(píng)價(jià)計(jì)算出來(lái)的相似度是否在規(guī)定范圍內(nèi),如果超過(guò)閾值,則說(shuō)明這些相鄰的數(shù)據(jù)或記錄屬于相似重復(fù)記錄,采用合并數(shù)據(jù)或刪除的方式處理數(shù)據(jù)。如果未超過(guò)閾值,則按照順序繼續(xù)掃描下面數(shù)據(jù);在數(shù)據(jù)全部檢測(cè)之后,輸出檢測(cè)后的數(shù)據(jù)。
2.2.2 基于N-Gram算法的數(shù)據(jù)清洗技術(shù)
該技術(shù)通過(guò)計(jì)算每條記錄的N-Gram值,對(duì)相似重復(fù)數(shù)據(jù)進(jìn)行排序。馬爾科夫假設(shè)下一詞出現(xiàn)的概率依賴于前一個(gè)或前幾個(gè)詞出現(xiàn)的概率,其數(shù)據(jù)模型表達(dá)式為P(S)=p(w1)p(w2|w1)p(w3|w2)…p(wi|wi-1)…p(wn|wn-1)
二元的Bigram認(rèn)為,每條語(yǔ)句中的詞有且僅有與其前面最相近的詞存在相關(guān),其概率數(shù)學(xué)模型表達(dá)式為:
P(S)=p(w1w2…wn)=p(w1)p(w2|w1)p(w3|w1w2)…p(wn|w1w2…wn-1) ≈ p(w1)p(w2|w1)p(w3|w2)…p(wn|wn-1)
三元的Trigram假設(shè)下一個(gè)詞僅與前兩個(gè)詞存在依賴關(guān)系,其概率數(shù)學(xué)模型表達(dá)式為:
P(S)≈ p(w1)p(w2|w1)p(w3|w1w2)…p(wn|wn-2)wn-1)
數(shù)據(jù)清洗過(guò)程如下:處理帶有標(biāo)識(shí)性含義的標(biāo)點(diǎn)或者無(wú)法識(shí)別的字符串;掃描整個(gè)數(shù)據(jù)庫(kù),建立起基于N-Gram算法的語(yǔ)料庫(kù);按照N-Gram算法對(duì)數(shù)據(jù)記錄進(jìn)行分割,計(jì)算重復(fù)矩陣;對(duì)待清洗數(shù)據(jù)記錄計(jì)算它們的N-Gram值;按照N-Gram排序待清洗數(shù)據(jù)記錄,計(jì)算記錄之間的相似度,根據(jù)相似度高低判斷記錄是否重復(fù)。
圖1:數(shù)據(jù)清洗流程示意圖
大數(shù)據(jù)時(shí)代下,在數(shù)據(jù)上報(bào)或接口調(diào)用時(shí)會(huì)存在大量不完整的數(shù)據(jù),嚴(yán)重影響著數(shù)據(jù)質(zhì)量。不完整數(shù)據(jù)主要包括屬性值錯(cuò)誤和空值,其中用于前者的檢測(cè)方法為關(guān)聯(lián)規(guī)則法、聚類方法、統(tǒng)計(jì)法,上述方法均通過(guò)總結(jié)規(guī)律對(duì)錯(cuò)誤值進(jìn)行查找,找到錯(cuò)誤值后予以修復(fù);后者的檢測(cè)方法以人工填寫(xiě)空缺值、屬性值為主,其空缺值包括最小值、最大值、中間值、平均值或概率統(tǒng)計(jì)函數(shù)值。在不完整數(shù)據(jù)清洗中,一般按照以下清洗流程:估計(jì)數(shù)據(jù)源的缺失值參數(shù),為數(shù)據(jù)清洗提供依據(jù);利用數(shù)據(jù)填充算法填充不完整數(shù)據(jù)的缺失值;填充后的數(shù)據(jù)為完整數(shù)據(jù),將完整數(shù)據(jù)輸出。
大數(shù)據(jù)環(huán)境下,數(shù)據(jù)源受多種因素的影響,違反完整性約束,造成大量不一致數(shù)據(jù)的產(chǎn)生。在數(shù)據(jù)清洗中,要利用不一致數(shù)據(jù)修復(fù)技術(shù)使不一致數(shù)據(jù)符合完整性約束,進(jìn)而保證數(shù)據(jù)質(zhì)量。數(shù)據(jù)修復(fù)流程如下:檢測(cè)數(shù)據(jù)源中的數(shù)據(jù)格式,對(duì)數(shù)據(jù)格式進(jìn)行預(yù)處理;檢測(cè)預(yù)處理數(shù)據(jù)后的數(shù)據(jù)是否符合完整性,如果不符合,則要修復(fù)數(shù)據(jù)。如果在數(shù)據(jù)修復(fù)之后依然存在著與數(shù)據(jù)完整性約束不一致的情況,則要再次修復(fù)數(shù)據(jù),直到數(shù)據(jù)符合要求;數(shù)據(jù)修復(fù)完成后,將其還原成原格式,為數(shù)據(jù)錄入系統(tǒng)打下基礎(chǔ)。
總而言之,數(shù)據(jù)量大、價(jià)值密度低是大數(shù)據(jù)的特點(diǎn),為了提高數(shù)據(jù)質(zhì)量,必須在數(shù)據(jù)預(yù)處理階段進(jìn)行數(shù)據(jù)清洗,采用不完整數(shù)據(jù)清洗技術(shù)、不一致數(shù)據(jù)修復(fù)技術(shù)、相似重復(fù)數(shù)據(jù)清洗技術(shù)等,修復(fù)缺失數(shù)據(jù)、不一致數(shù)據(jù)和異常數(shù)據(jù),合并或刪除相似重復(fù)數(shù)據(jù),進(jìn)而保證數(shù)據(jù)預(yù)處理質(zhì)量,提高數(shù)據(jù)利用效率。