一、概述
在工程實踐中,我們得到的數據會存在有缺失值、重復值等,在使用之前需要進行數據預處理。數據預處理沒有標准的流程,通常針對不同的任務和數據集屬性的不同而不同。數據預處理的常用流程為:去除唯一屬性、處理缺失值、屬性編碼、數據標准化正則化、特征選擇、主成分分析。
二、數據預處理方法
1. 去除唯一屬性
唯一屬性通常是一些id屬性,這些屬性並不能刻畫樣本自身的分布規律,所以簡單地刪除這些屬性即可。
2. 處理缺失值
缺失值處理的三種方法:直接使用含有缺失值的特征;刪除含有缺失值的特征(該方法在包含缺失值的屬性含有大量缺失值而僅僅包含極少量有效值時是有效的);缺失值補全。
常見的缺失值補全方法:均值插補、同類均值插補、建模預測、高維映射、多重插補、極大似然估計、壓縮感知和矩陣補全。
(1)均值插補
如果樣本屬性的距離是可度量的,則使用該屬性有效值的平均值來插補缺失的值;
如果的距離是不可度量的,則使用該屬性有效值的眾數來插補缺失的值。如果使用眾數插補,出現數據傾斜會造成什么影響?
(2)同類均值插補
首先將樣本進行分類,然后以該類中樣本的均值來插補缺失值。
(3)建模預測
將缺失的屬性作為預測目標來預測,將數據集按照是否含有特定屬性的缺失值分為兩類,利用現有的機器學習算法對待預測數據集的缺失值進行預測。
該方法的根本的缺陷是如果其他屬性和缺失屬性無關,則預測的結果毫無意義;但是若預測結果相當准確,則說明這個缺失屬性是沒必要納入數據集中的;一般的情況是介於兩者之間。
(4)高維映射
將屬性映射到高維空間,采用獨熱碼編碼(one-hot)技術。將包含K個離散取值范圍的屬性值擴展為K+1個屬性值,若該屬性值缺失,則擴展后的第K+1個屬性值置為1。
這種做法是最精確的做法,保留了所有的信息,也未添加任何額外信息,若預處理時把所有的變量都這樣處理,會大大增加數據的維度。這樣做的好處是完整保留了原始數據的全部信息、不用考慮缺失值;缺點是計算量大大提升,且只有在樣本量非常大的時候效果才好。
暫時未理解?
(5)多重插補(MultipleImputation,MI)
多重插補認為待插補的值是隨機的,實踐上通常是估計出待插補的值,再加上不同的噪聲,形成多組可選插補值,根據某種選擇依據,選取最合適的插補值。
(6)壓縮感知和矩陣補全
(7)手動插補
插補處理只是將未知值補以我們的主觀估計值,不一定完全符合客觀事實。在許多情況下,根據對所在領域的理解,手動對缺失值進行插補的效果會更好。
3. 特征編碼
(1)特征二元化
特征二元化的過程是將數值型的屬性轉換為布爾值的屬性,設定一個閾值作為划分屬性值為0和1的分隔點。
(2)獨熱編碼(One-HotEncoding)
獨熱編碼采用N位狀態寄存器來對N個可能的取值進行編碼,每個狀態都由獨立的寄存器來表示,並且在任意時刻只有其中一位有效。
獨熱編碼的優點:能夠處理非數值屬性;在一定程度上擴充了特征;編碼后的屬性是稀疏的,存在大量的零元分量。
4. 數據標准化、正則化
數據標准化
數據標准化是將樣本的屬性縮放到某個指定的范圍。
數據標准化的原因:
某些算法要求樣本具有零均值和單位方差;
需要消除樣本不同屬性具有不同量級時的影響:①數量級的差異將導致量級較大的屬性占據主導地位;②數量級的差異將導致迭代收斂速度減慢;③依賴於樣本距離的算法對於數據的數量級非常敏感。
min-max標准化(歸一化):對於每個屬性,設minA和maxA分別為屬性A的最小值和最大值,將A的一個原始值x通過min-max標准化映射成在區間[0,1]中的值x',其公式為:新數據=(原數據 - 最小值)/(最大值 - 最小值)
z-score標准化(規范化):基於原始數據的均值(mean)和標准差(standarddeviation)進行數據的標准化。將A的原始值x使用z-score標准化到x'。z-score標准化方法適用於屬性A的最大值和最小值未知的情況,或有超出取值范圍的離群數據的情況。新數據=(原數據- 均值)/ 標准差
均值和標准差都是在樣本集上定義的,而不是在單個樣本上定義的。標准化是針對某個屬性的,需要用到所有樣本在該屬性上的值。
正則化
數據正則化是將樣本的某個范數(如L1范數)縮放到到位1,正則化的過程是針對單個樣本的,對於每個樣本將樣本縮放到單位范數。
設數據集。對樣本首先計算Lp范數:
正則化后的結果為:每個屬性值除以其Lp范數:
參考http://blog.csdn.net/pipisorry/article/details/52247379
5. 特征選擇(降維)
從給定的特征集合中選出相關特征子集的過程稱為特征選擇。
進行特征選擇的兩個主要原因是:
減輕維數災難問題;
降低學習任務的難度。
進行特征選擇必須確保不丟失重要特征。
常見的特征選擇類型分為三類:過濾式(filter)、包裹式(wrapper)、嵌入式(embedding)。
過濾式選擇:該方法先對數據集進行特征選擇,然后再訓練學習器。特征選擇過程與后續學習器無關。Relief是一種著名的過濾式特征選擇方法。
包裹式選擇:該方法直接把最終將要使用的學習器的性能作為特征子集的評價原則。其優點是直接針對特定學習器進行優化,因此通常包裹式特征選擇比過濾式特征選擇更好,缺點是由於特征選擇過程需要多次訓練學習器,故計算開銷要比過濾式特征選擇要大得多。
嵌入式選擇
常見的降維方法:SVD、PCA、LDA
SVD參考ttp://blog.csdn.net/u012380663/article/details/36629951
PCA參考http://blog.csdn.net/u014772862/article/details/52335970
LAD參考https://www.cnblogs.com/pinard/p/6244265.html
6. 稀疏表示和字典學習
字典學習:學習一個字典,通過該字典將樣本轉化為合適的稀疏表示形式。
稀疏編碼:獲取樣本的稀疏表達。
轉至http://blog.csdn.net/marsjhao/article/details/70213749,有修改