讀書筆記 -- 001_數據預處理_數據清理

1、概述

實際的數據庫極易受噪聲、缺失值和不一致數據的侵擾,因爲數據庫太大,並且多半來自多個異種數據源。低質量的數據將會導致低質量的挖掘結果。有大量的數據預處理技術:
- - 數據清理:可以用來清楚數據中的噪聲,糾正不一致。
- - 數據集成:將數據由多個數據源合併成一個一致的數據存儲,如數據倉庫。
- - 數據歸約:可以通過如聚集、刪除冗餘特徵或聚類來降低數據的規模。
- - 數據變換:(例如,規範化)可以用來把數據壓縮到較小的區間,如0.0到1.0。

這可以提高設計距離度量的挖掘算法的準確率和效率。這些技術不是排斥的,可以一起使用。

1.1、數據質量 數據如果能滿足其應用的要求,那麼它是高質量的。數據質量涉及許多因素,包括:準確率、完整性、一致性、時效性、可信性和可解釋性。

2、數據清理

現實世界的數據一般是不完整的、有噪聲的和不一致的。數據清理例程試圖填充缺失的值、光滑噪聲並識別離羣點、糾正數據中的不一致。

2.1、缺失值

如何處理缺失的屬性?我們來看看下面的方法:
1- - - 忽略元組:當缺少類標號時通常這樣做(假設挖掘任務設計分類)。除非元組有多個屬性缺少值,否則更改方法不是很有效。當每個屬性缺失值的百分比變化很大時,他的性能特別差。採用忽略元組,你不能使用該元組的剩餘屬性值。這些數據可能對手頭的任務是有用的。
2- - - 人工填寫缺失值:一般來說,該方法很費事,並且當數據集很大、缺失很多值時該方法可能行不通。
3- - - 使用一個全局填充缺失值:將缺失的屬性值用同一個常量(如:“Unknow”或-∞)替換。如果確實的值都如“Unknow”替換,則挖掘程序可能誤認爲他們形成了一個有趣的概念,因爲他們都具有相同的值 – “Unknow”。因此,儘管該方法簡單,但是並不十分可靠。
4- - - 使用屬性的中心度量(如均值或中位數)填充缺失值:對於正常的(對稱的)數據分佈而言,可以使用均值,而傾斜數據分佈應該使用中位數。
5- - - 使用與給定元組屬同一類的所有樣本的屬性均值或中位數:
6- - - 使用最可靠的值填充缺失值:可以用迴歸、貝葉斯形式化方法的基於推理的工具或決策樹歸納確定。

方法3~方法6使數據有偏,可能填入的數據不準確。然而,方法6是最流行的策略。與其他方法(可能方法2除外)相比,它使用已有數據的大部分信息來預測缺失值。

需要注意的是,在某些情況下,缺失值並不意味着數據有錯誤。理想情況下,每個屬性都應當有一個或多個空值條件的規則。這些規則可以說明是否允許空值,並且/或者說明這樣的空值應該如何處理或轉換。如果在業務處理的稍後步驟提供值,字段也可能故意留下空白。因此,儘管在得到數據後,我們可以盡我們所能來清理數據,但好的數據庫和數據輸入設計將有助於在第一現場把缺失值或者錯誤的數量降至最低。

2.2、噪聲數據
噪聲(noise)是被測量的變量的隨機誤差或方差。我們可以使用基本的數據統計描述技術(例如,盒圖或者散點圖)和數據可視化方法來識別可能代表噪聲的離羣點。

1- - - 分箱(bining):分箱方法通過考察數據的“近鄰”(即周圍的值)來光滑有序的數據值。這些有序的值被分佈到一些“捅”或箱中。由於分箱方法考察近鄰的值,因此它進行局部的光滑。
這裏寫圖片描述

如上圖所示,數據首先排序並被劃分到大小爲3的等頻的箱中。對於用箱均值光滑,箱中每一個值都被替換爲箱中的均值。類似的,可以使用用箱中位數光滑或者用箱邊界光滑等等。

2- - - 迴歸(regression):可以用一個函數擬合數據來光滑數據。這種技術稱之爲迴歸。線性迴歸涉及找出擬合兩個屬性(或變量)的“最佳”直線,使得一個屬性可以用來預測另一個。多元線性迴歸是線性迴歸的擴充,其中涉及的屬性多餘兩個,並且數據擬合到一個多維曲面。

3- - - 離羣點分析(outlier analysis):可以通過如聚類來檢測離羣點。聚類將類似的值組織成羣或“簇”。直觀地,落在簇集合之外的值被視爲離羣點。
這裏寫圖片描述

2.3、數據清理作爲一個過程

數據清理過程第一步是偏差檢測(discrepancy detection)。導致偏差的因素可能有多種,包括具有很多可選字段的設計糟糕的輸入表單、人爲的輸入錯誤、有意的錯誤(例如,不願意泄露個人隱私),以及數據退化(例如,過時的地址)。偏差也可能源於不一致的數據表示和編碼的不一致使用。記錄數據的設備的錯誤和系統錯誤是另一種偏差源。當數據(不適當地)用於不同於當初的目的時,也可能出現錯誤。數據集成也可能導致不一致(例如,當給定的屬性在不同的數據庫中具有不同的名稱時)。

那麼,如何進行偏差檢測呢?首先,我們明確一個概念,”關於數據的數據“稱作元數據。例如,每個屬性的數據類型是定義域是什麼?每個屬性可接受的值是什麼?對於把握數據趨勢和識別異常,數據的基本統計描述是有用的。例如,找出均值、中位數和衆數。數據是對稱的還是傾斜的?值域是什麼?所有的值都在期望的區間內嗎?每個屬性的標準差是多少?遠離給定屬性均值超過兩個標準差的值可能標記爲可能的離羣點。屬性之間存在已知的依賴嗎?在這一步,可以編寫程序或使用稍後我們討論到的工具。由此,你可能發現噪聲、離羣點和需要考察的不尋常的值。

1- - - 編碼格式:警惕編碼使用的不一致和數據表示的不一致問題(例如,日期“2015/12/08”和”08/12/2015”);
2- - - 字段過載:開發者將新屬性的定義擠進已經定義的屬性的未使用(位)部分(例如,使用一個屬性未使用的位,該屬性取值已經使用了32位中的31位)。

1- - - :唯一性規則:給定屬性的每個值都必須不同於該屬性的其他值。
2- - - :連續性規則:屬性的最低值和最高值之間沒有缺失的值,並且所有的值還必須是唯一的(例如,檢驗數).
3- - - :空值規則:說明空白、問號、特殊符號或指示空值條件的其他串的使用(例如,一個給定屬性的值何處不能用),以及如何處理這樣的值。

1- - - 數據清洗工具(data scrubbing tools):使用簡單的領域知識(郵政地址知識和拼寫檢查),檢查並糾正數據中的錯誤。在清理多個數據源的數據時,這些工具依賴分析和模糊匹配技術。
2- - - 數據審計工具(data auditing tools):通過分析數據發現規則和聯繫,並檢測違反這些條件的數據來發現偏差。
3- - - 數據遷移工具(data migration tools):允許說明簡單的變換,如將串”gender”用“sex”替換。
4- - -ETL(extraction/transformation/loading,提取/變換/裝入)工具:允許用戶通過圖形用戶界面說明變換。
通常,這些工具只支持有限的變換,因此我們可能需要爲數據清理過程的這一步編寫定製的程序。

偏差檢測和數據變換(糾正偏差) 迭代執行這兩步過程。通常,需要多次迭代才能使用戶滿意。

新的數據清理方法強調加強交互性。例如,Potter’s Wheel是一種公開的數據清理工具,它集成了偏差檢測和數據變換。

發佈了30 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章