據統計,在數據挖掘過程中,數據預處理工作量占到整個過程的60%-70%。在實際從數據源獲取的數據中,這些數據通常都是臟數據。所謂的臟數據就是包含以下幾種情況的數據:數據缺失(數據屬性值為空)、數據噪聲(數據值不合理)、數據不一致(數據前后矛盾)、數據冗余(數據量或者屬性數目超過數據分析的需求)、數據集不均衡(不同類型的數據量相差過大)、異常值(不在數據集標準范圍內的值)、數據重復(數據集中多次出現的數據)。
1、數據預處理方法
數據預處理方法可以大致分為四類:數據清理、數據集成、數據歸約和數據變換。
1.1數據清洗
企業從數據源獲取的數據一般是不完整的、有噪聲的和不一致的。數據清理主要針對數據數值上的各種異常情況的處理,數據清理常見的有以下:缺失值處理、噪聲值和離群處理、不一致性處理。通過填充缺失的值、光滑噪聲數據、識別刪除離群點并糾正數據的不一致性來清理數據。主要是達到如下目標:格式標準化,噪聲數據、無關數據和異常數據清除,處理遺漏數據、空缺值,錯誤糾正,重復數據的清除,識別刪除孤立點等。
1.1.1缺失值的處理
缺失值的處理方法,主要是基于數據的分布特性和數據的重要性采用不同的方法。主要分為以下幾種:
刪除:若數據缺失嚴重,覆蓋率較低,且重要性較低。可以只丟棄缺失項處的值,也可以丟棄包含缺失項的整條數據記錄,這得看該條數據記錄上其它的數據是否有價值,尤其是在數據樣本較少的情況下,需要權衡。
填充:包括中位數,隨機插值,多重差補法,熱平臺插補,拉格朗日插值,牛頓插值等模型填充;使用回歸、貝葉斯、隨機森林、決策樹等模型對缺失數據進行預測。目的是使用最可能的值填充空缺值。也可以將所有元組按照某些屬性分類,然后用同一類中屬性的平均值填充空缺值。例:一個公司職員平均工資收入為3000元,則使用該值替換工資中“基本工資”屬性中的空缺值。
1.1.2離群點處理
離群點指處于標準分布范圍之外的數據,也就是個別與數據總體特征差別較大的點。對于離群點的處理,應該首先判斷離群點數據量與是否有用,如果有相當一部分量與數據總體特征差別較大的點,那此時就要考慮這些點能不能被稱為離群點了。若是無用點則可以當做噪聲處理,若是有用的則保留。因此,相比于處理離群點,識別離群點是一個更重要的問題。識別離群點的方法有很多,比如基于統計學的方法、基于鄰近性的方法、基于聚類的方法、基于分類的方法等。
1.1.3噪聲處理
噪聲是一個測量變量中的隨機誤差或者方差,包括錯誤的值或偏離期望的孤立點值,對于噪聲數據有如下幾種處理方法:分箱去噪,聚類法識別孤立點,回歸去噪。
1.2數據集成
數據分析任務多半涉及數據集成。數據集成將多個數據源中的數據合并存放在一個一致的數據存儲,如數據倉庫中。這些源可能包括多個數據庫、數據方或一般文件。建立數據倉庫的過程實際上就是數據集成,是一個提供觀察這些數據的統一視圖的過程。
1.2.1實體識別問題
在數據集成時候,來自多個數據源的實體有時并不一定是匹配的,例如:如何才能確信一個數據庫中的people_id和另一個數據庫中的p_id值是同一個實體,通常,可以根據數據庫或者數據倉庫的元數據來避免模式集成中的錯誤。
1.2.2 冗余問題
數據集成通常會導致數據冗余,如同一屬性多次出現,統一屬性命名不一致等用相關性檢測冗余:數值型變量可計算相關系數矩陣,標稱型變量可計算卡方檢驗。
1.2.3 數據值的沖突和處理
對于數據中的同一實體,來自不同數據源的屬性值可能不同,這可能是因為表示、比例、或編碼、數據類型、單位不統一、字段長度不同。不同數據源,在統一合并時,保持規范化,去重。
1.3數據歸約
數據挖掘時往往數據量非常大,在少量數據上進行挖掘分析需要很長的時間,數據歸約通過如聚集、刪除冗余特征或聚類來降低數據的規模,規約之后的數據仍接近于保持原數據的完整性,但數據量相對小的多,這樣進行挖掘的性能和效率會得到很大的提高。并結果與歸約前結果相同或幾乎相同。數據歸約方法主要有:維規約、數量歸約、數據壓縮。
1.3.1維歸約
通過刪除不相關的屬性減少數據量并保證信息的損失最小,通常采用屬性子集選擇方法找出最小屬性集,使得數據類的概率分布盡可能的接近使用所有屬性的原分布
1.3.2數量歸約
通過選擇替代的、較小的數據表示形式來減少數據量。這些技術可以是有參的或者無參的。有參方法是使用一個模型來評估數據,只需存放參數,而不需要存放實際數據。有參的數值歸約技術有以下兩種:回歸和對數線性模型;無參的數值歸約技術有3種:直方圖,聚類,選樣。
1.3.3數據壓縮
有無損壓縮和有損壓縮。主要有損數據壓縮方法是小波變換和主要成分分析,小波變換對于稀疏或傾斜數據以及具有有序屬性的數據有很好的壓縮效果。
1.4數據變換
數據變換主要是找到數據的特征表示,通過平滑聚集,數據概化,規范化等方式將數據轉換成適用于數據挖掘的形式。常見的數據變換策略如下:
光滑:去掉噪聲,包括分箱、回歸和聚類。
屬性構造:由給定的屬性構造出新屬性并添加到數據集中。
聚集:對數據進行匯總或聚集。
規范化:把屬性數據按比例縮放,使落如一個特定的小區間,如[0.0, 1.0]。
離散化:將定量數據向定性數據轉化。比如年齡的原始值用區間標簽(0~10, 11~20)或者概念標簽(如youth)替換。