數據清洗背景
數據質量一般由準確性、完整性、一致性、時效性、可信性以及可解釋性等特征來描述,根據 Rahm 等人在 2000 年對數據質量基于單數據源還是多數據源以及問題出在模式層還是實例層的標準進行分類,將數據質量問題分為單數據源模式層問題、單數據源實例層問題、多數據源模式層問題和多數據源實例層問題這4大類。
現實生活中的數據極易受到噪聲、缺失值和不一致數據的侵擾,數據集成可能也會產生數據不一致的情況。數據清洗就是識別并且(可能)修復這些“臟數據”的過程,如果一個數據庫數據規范工作做得好會給數據清洗工作減少許多麻煩。
對于數據清洗工作的研究基本上是基于相似重復記錄的識別與剔除方法展開的。
并且以召回率和準確率作為算法的評價指標,現有的清洗技術大都是孤立使用的。
不同的清洗算法作為黑盒子以順序執行或以交錯方式執行,而這種方法沒有考慮不同清洗類型規則之間的交互簡化了問題的復雜性,但這種簡化可能會影響最終修復的質量,因此需要把數據清洗放在上下文中結合端到端質量執行機制進行整體清洗。
隨著大數據時代的到來,現在已經有不少有關大數據清洗系統的研究,不僅有對于數據一致性以及實體匹配的研究,也有基于MapReduce的數據清洗系統的優化研究。
數據清洗基本方法
從微觀層面來看,數據清洗的對象分為模式層數據清洗和實例層數據清洗,數據清洗識別并修復的“臟數據”主要有錯誤數據、不完整的數據以及相似重復的數據,根據“臟數據”分類,數據清洗也可以分為 3 類:屬性錯誤清洗、不完整數據清洗以及相似重復記錄的清洗。
3.2.1 屬性錯誤清洗
數據庫中很多數據違反最初定義的完整性約束,存在大量不一致的、有沖突的數據和噪聲數據。我們應該識別出這些錯誤數據,然后進行錯誤清洗。
(1)屬性錯誤檢測
屬性錯誤檢測有基于定量的方法和基于定性的方法。
? 定量的誤差檢測一般在離群點檢測的基礎上采用統計方法來識別異常行為和誤差,離群點檢測是找出與其他觀察結果偏離太多的點,Aggarwal 將關于離群點檢測方法又分為 6 種類型:極值分析、聚類模型、基于距離的模型、基于密度的模型、概率模型、信息理論模型,并對這幾種模型進行了詳盡的介紹;
? 定性的誤差檢測一般依賴于描述性方法指定一個合法的數據實例的模式或約束,因此確定違反這些模式或者約束的就是錯誤數據。
圖 4 描述了定性誤差檢測技術在 3 個不同方面的不同分類下面我們對圖中提出的3 個問題進行分析。
? ?首先.錯誤類型是指要檢測什么。定性誤差檢測技術可以根據捕捉到的錯誤類型來進行分類,目前大量的工作都是使用完整性約束來捕獲數據庫應該遵守的數據質量規則,雖然重復值也違反了完整性約束,但是重復值的識別與清洗是數據清洗的一個核心;
其次,自動化檢測根據人類的參與與否以及參與步驟來對定性誤差檢測技術進行分類,大部分的檢測過程都是全自動化的,個別技術涉及到人類參與;
最后,,商業智能層是指在哪里檢測,錯誤可以發生在數據治理的任何階段,大部分的檢測都是針對原始數據庫,但是有些錯誤只能在數據治理后獲得更多的語義和業務邏輯才能檢測出來。
不僅可以使用統計方法來對屬性錯誤進行檢測,使用一些商業工具也可以進行異常檢測,如數據清洗工具以及數據審計工具等。Potters Wheel是一種公開的數據清洗工具,不僅支持異常檢測,還支持后面數據不一致清洗所用到的數據變換功能。
(2)屬性錯誤清洗
屬性錯誤清洗包括噪聲數據以及不一致的數據清洗。
噪聲數據的清洗也叫光滑噪聲技術,主要方法有分箱以及回歸等方法,分箱方法是通過周圍鄰近的值來光滑有序的數據值但是只是局部光滑,回歸方法是使用回歸函數擬合數據來光滑噪聲;
不一致數據的清洗在某些情況下可以參照其他材料使用人工進行修改,可以借助知識工程工具來找到違反限制的數據。
3.2.2不完整數據清洗
在實際應用中,數據缺失是一種不可避免的現象,有很多情況下會造成數據值的缺失,例如填寫某些表格時需要填寫配偶信息,那沒有結婚的人就無法填寫此字段,或者在業務處理的稍后步驟提供值,字段也可能缺失。處理缺失值目前有以下幾種方法:
忽略元組:一般情況下,當此元組缺少多個屬性值時常采用此方法,否則該方法不是很有效,當忽略了此條元組之后,元組內剩下的有值的屬性也不能被采用,這些數據可能是有用的;
人工填寫缺失值:這種方法最大的缺點就是需要大量的時間和人力,數據清理技術需要做到最少的人工干預,并且在數據集很大、缺失很多屬性值時,這種方法行不通;
全局變量填充缺失值:使用同一個常量來填充屬性的缺失值,這種方法雖然使用起來較為簡單,但是有時不可靠,例如,用統一的常量“NULL”來填寫缺失值,在后續的數據挖掘中,可能會認為它們形成了一個有趣的概念;
中心度量填充缺失值:使用屬性的中心度量來填充缺失值,中心度量是指數據分布的“中間”值;
使用最可能的值填充:相當于數值預測的概念,回歸分析是數值預測最常用的統計學方法,此外也可以使用貝葉斯形式化方法的基于推理的工具或決策樹歸納確定缺失值。
3.2.3相似重復記錄清洗
相似重復記錄識別
消除相似重復記錄,首先應該識別出相同或不同數據集中的兩個實體是否指向同一實體,這個過程也叫實體對齊或實體匹配。文本相似度度量是實體對齊的最基礎方法,大致分為 4 種:基于字符的、基于單詞的、混合型和基于語義的。
隨著知識表示學習在各個領域的發展,一些研究人員提出了基于表示學習的實體匹配算法,但均是以 TransE 系列模型為基礎構建的。TransEl4首次提出基于翻譯的方法。將關系解釋為實體的低維向量之間的翻譯操作,隨之涌現出一些擴展的典型算法,下面對這些算法進行簡單介紹。
1.MTransE 算法:基于轉移的方法解決多語言知識圖譜中的實體對齊。首先使用 TransE 對單個的知識圖譜進行表示學習;接著學習不同空間的線性變換來進行實體對齊,轉移方法有基于距離的軸校準、翻譯向量、線性變換這 3 種。該知識模型簡單復用 TasE,對于提高實體對齊的精度仍存在很大局限;
2.JAPE 算法:是針對跨語言實體對齊的聯合屬性保護模型,利用屬性及文字描述信息來增強實體表示學習,分為結構表示、屬性表示。IPTransE 算法使用聯合表示的迭代對齊,即使用迭代的方式不斷更新實體匹配。該方法分為 3 部分:知識表示、聯合表示、迭代對齊,但這兩種算法都是基于先驗實體匹配,將不同知識圖譜中的實體和關系嵌入到統一的向量空間,然后將匹配過程轉換成向量表示間距離的過程;
3.SEEA 算法分為兩部分:屬性三元組學習、關系三元組學習。該模型能夠自學習,不需要對齊種子的輸入,每次迭代根據前面迭代過程所得到的表示模型,計算實體向量間的余弦相似度,并選取前B對添加到關系三元組中更新本次表示模型,直到收斂。收斂條件:無法選取前β對實體對。
實體對齊方法不僅應用于數據清洗過程中,對后續的數據集成以及數據挖掘也起到重要的作用。除此之外也有很多重復檢測的工具可以使用:如Febrl系統、TAILOR工具、WHIRL系統、BigMatch等。
相似重復記錄清洗
相似重復記錄的清洗一般都采用先排序再合并的思想,代表算法有優先隊列算法、近鄰排序算法、多趟近鄰排序算法。
優先隊列算法比較復雜,先將表中所有記錄進行排序后,排好的記錄被優先隊列進行順序掃描并動態地將它們聚類,減少記錄比較的次數,匹配效率得以提高,該算法還可以很好地適應數據規模的變化。
近鄰排序算法是相似重復記錄清洗的經典算法,采用滑動窗口機制進行相似重復記錄的匹配,每次只對進入窗口的 w 條記錄進行比較,只需要比較 w*N 次,提高了匹配的效率。但是它有兩個很大的缺點:首先是該算法的優劣對排序關鍵字的依賴性很大,如果排序關鍵字選擇得不好,相似的兩條記錄一直沒有出現在滑動窗口上就無法識別相似重復記錄,導致很多條相似重復記錄得不到清洗;其次是滑動窗口的值 w也很難把控,w值太大可能會產生沒必要的比較次數,w 值太小又可能會遺漏重復記錄的匹配。
多趟近鄰排序算法是針對近鄰排序算法進行改進的算法,它是進行多次近鄰排序算法每次選取的滑動窗口值可以不同,且每次匹配的相似記錄采用傳遞閉包,雖然可以減少很多遺漏記錄,但也會產生誤識別的情況,這兩個算法的滑動窗口值和屬性值的權重都是固定的,所以也有一些專家提出基于可變的滑動窗口值和不同權重的屬性值來進行相似重復記錄的清洗。
以上算法都有一些缺陷,如都要進行排序,多次的外部排序會引起輸入/輸出代價過大;其次由于字符位置敏感性,排序時相似重復的記錄不一定排在鄰近的位置,對算法的準確性有影響。
本文引用軟件學報吳信東,董丙冰,楊威《數據治理技術》,有刪減,有改動,如有侵權,請聯系刪除。