關于數(shù)據(jù)預處理我們有3個常用的符號,數(shù)據(jù)矩陣X,假設其尺寸是[N x D](N是數(shù)據(jù)樣本的數(shù)量,D是數(shù)據(jù)的維度)
1、均值減法(Mean subtraction)
均值減法是預處理最常用的形式。它對數(shù)據(jù)中每個獨立特征減去平均值,從幾何上可以理解為在每個維度上都將數(shù)據(jù)云的中心都遷移到原點。
在numpy中,該操作可以通過代碼X -= np.mean(X, axis=0)實現(xiàn)。
而對于圖像,更常用的是對所有像素都減去一個值,可以用X -= np.mean(X)實現(xiàn),也可以在3個顏色通道上分別操作。
歸一化(Normalization)
歸一化是指將數(shù)據(jù)的所有維度都歸一化,使其數(shù)值范圍都近似相等。
有兩種常用方法可以實現(xiàn)歸一化:
第一種是先對數(shù)據(jù)做零中心化(zero-centered)處理,然后每個維度都除以其標準差,實現(xiàn)代碼為X /= np.std(X, axis=0)。
第二種方法是對每個維度都做歸一化,使得每個維度的最大和最小值是1和-1。這個預處理操作只有在確信不同的輸入特征有不同的數(shù)值范圍(或計量單位)時才有意義,但要注意預處理操作的重要性幾乎等同于學習算法本身。在圖像處理中,由于像素的數(shù)值范圍幾乎是一致的(都在0-255之間),所以進行這個額外的預處理步驟并不是很必要。
PCA和白化(Whitening)
PCA和白化是另一種預處理形式。在這種處理中,先對數(shù)據(jù)進行零中心化處理,然后計算協(xié)方差矩陣,它展示了數(shù)據(jù)中的相關性結構。
白化(whitening)。白化操作的輸入是特征基準上的數(shù)據(jù),然后對每個維度除以其特征值來對數(shù)值范圍進行歸一化。該變換的幾何解釋是:如果數(shù)據(jù)服從多變量的高斯分布,那么經(jīng)過白化后,數(shù)據(jù)的分布將會是一個均值為零,且協(xié)方差相等的矩陣。該操作的代碼如下:
# 對數(shù)據(jù)進行白化操作:
# 除以特征值
Xwhite = Xrot / np.sqrt(S + 1e-5)