數據質量管理—3、數據修正(Data Correcting)

前面的兩篇文章——分析的前提—數據質量1和分析的前提—數據質量2分別介紹了通過Data Profiling的方法獲取數據的統計信息,並使用Data Auditing來評估數據是否存在質量問題,數據的質量問題可以通過完整性、準確性和一致性三個方面進行審覈。這篇文章介紹最後一塊內容——數據修正(Data Correcting)

數據審覈幫助我們發現數據中存在的問題,而這些問題有時候可以利用一些方法就行修正,從而提升數據的整體質量,數據修正就是爲了完成這個任務,可以從以下幾個方面進行修正:

填補缺失值

對於記錄缺失的問題,最簡單的辦法就是數據回補。一般而言統計指標數據缺失可以從原始數據中重新統計獲取,而原始數據缺失可以從抽取的數據源或者備份數據中回補。如果原始數據完全丟失,基本就回天無力了。

對於字段值的缺失,很多資料都會介紹使用一些統計學的方法進行修補,其實就是對缺失值的預測或者估計,一般會使用平均數、衆數、前後值取平均等方法,或者使用迴歸分析的方法擬合指標的變化趨勢後進行預測。這些方法在缺失值無法使用其他途徑找回或者重新統計計算,並且在缺失值有變化規律可循的前提下都是可取的,當某天的指標值丟失時可以通過這類方法根據前幾天的數據來預估該天的數值。但很多時候網站分析中如果底層的日誌存在缺失值,我們很難預測具體的缺失值,因爲訪問的細節幾乎是無跡可尋的,所以對於訪問記錄存在缺失值並且這些字段的缺失會明顯影響一些統計指標的計算時,最簡單的方法就是捨棄該記錄,但這種直接過濾掉缺失記錄的方法一些只會用於訪問日誌等不需要非常精確的數據上,如果是網站的運營、交易等這些需要保證完全計算準確的數據絕對是不能直接捨棄的,而且對於訪問日誌中缺失或者異常記錄的過濾也需要基於對這類數據的統計基礎上,一般的原則是不太重要的字段如果缺失或者異常的記錄佔比小於1%或者5‰的情況下可以選擇過濾這些記錄,如果佔比比較高,需要進一步排查日誌記錄是否存在問題。

刪除重複記錄

數據集裏面某些字段的值必然是唯一的,比如按天統計的指標值中的日期字段,用戶信息表的用戶ID等,這些需要保證唯一的規則可以對數據庫設置唯一約束,但我們在做ETL處理時,有時爲了保證數據加載全過程可以不因爲違反唯一約束而中斷(有時Load的過程需要較長的時間或處理成本,ETL需要有容錯能力以保證整個過程不被中斷)會先忽略重複記錄,待整個ETL過程結束後再對需要保證唯一的字段進行去重處理。

這些重複記錄可以比對Data Profiling中數據統計信息的唯一值個數和記錄總數是否一致進行審覈,而進行修正的最簡單辦法就是重複記錄僅保留一條,刪除其他記錄。這個需要根據現實情況,有時也可能使用把重複記錄的統計量相加的方法進行去重。

轉化不一致記錄

數據的轉化是數據倉庫抽取數據過程中最常見的處理,因爲數據倉庫“集成性”的特徵,需要把來自多個數據源的數據集中存入數據倉庫,而不同數據源對某些含義相同的字段的編碼規則會存在差異,比如用戶ID,雖然是相同的用戶,但可能A系統的ID是u1001,B系統是1001,C系統是100100,來源於這三套系統的用戶ID就需要統一,比如我們將A數據源的u前綴去除,C系統ID除100後統一成B系統的編碼方式一起導入數據庫;即使是來源於同一套日誌,也可能存在記錄的不一致,比如之前遇到較早發佈的產品版本記錄的日誌中移動操作系統是Android,而版本更新後記錄改成了android,新老版本的日誌打到了一起,於是也會涉及數據的轉化,但這種記錄的不一致性無疑會增加ETL的處理成本。

上面舉例的轉化規則是比較簡單的,在數據倉庫的ETL處理數據轉化時可能會遇到一些很BT的規則,這個時候最關鍵的還是對數據源記錄方式足夠的熟悉,這樣才能保證進入數據倉庫的數據是一致的。最好的做法就是數據倉庫的開發工程師與其他前臺系統的開發人員能事先約定一套統一的數據記錄和編碼的方式,這樣可以減少後期的協調溝通和轉化處理成本。

處理異常數據

異常數據大部分情況是很難修正的,比如字符編碼等問題引起的亂碼,字符被截斷,異常的數值等,這些異常數據如果沒有規律可循幾乎不可能被還原,只能將其直接過濾。

有些數據異常則可以被還原,比如原字符中參雜了一些其他的無用字符,可以使用取子串的方法,用trim函數可以去掉字符串前後的空格等;字符被截斷的情況如果可以使用截斷後字符推導出原完整字符串,那麼也可以被還原,比如移動操作系統的記錄一般包括Symbian、Android、iPhone、BlackBerry等,如果某些記錄的是And,那麼可以被還原成Android,因爲其他的移動操作系統被截斷不可能出現And這種記錄。數值記錄中存在異常大或者異常小的值是可以分析是否數值單位差異引起的,比如克和千克差了1000倍,美元和人民幣存在匯率的差異,時間記錄可能存在時區的差異,百分比用的是小於1的小數還是已經乘了100等等,這些數值的異常可以通過轉化進行處理,數值單位的差異也可以認爲是數據的不一致性,或者是某些數值被錯誤的放大或縮小,比如數值後面被多加了幾個0導致了數據的異常。

最後,總結一下數據可修正的前提:

  1. 數據質量的問題可以通過Data Auditing的過程被審覈出來;
  2. 數據的問題必須有跡可循,可以通過趨勢進行預測或者可以通過一些規則進行轉換還原。否則,對於異常數據只能直接進行刪除丟棄,但進行數據過濾之前必須評估異常記錄的比例,當佔比過高時需要重新審覈原始數據的記錄方式是否存在問題。

原文

http://webdataanalysis.net/data-collection-and-preprocessing/data-quality-3/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章