數(shù)據(jù)標準化(Standardization)與 歸一化(Normalization)
在機器學習領(lǐng)域中,不同評價指標(即特征向量中的不同特征就是所述的不同評價指標)往往具有不同的量綱和量綱單位何荚,這樣的情況會影響到數(shù)據(jù)分析的結(jié)果煤率,為了消除指標之間的量綱影響,需要進行數(shù)據(jù)標準化處理蜕依,以解決數(shù)據(jù)指標之間的可比性。原始數(shù)據(jù)經(jīng)過數(shù)據(jù)標準化處理后琉雳,各指標處于同一數(shù)量級样眠,適合進行綜合對比評價。
一般涉及到梯度下降和距離的計算需要進行標準化或正則化翠肘。
數(shù)據(jù)的標準化(Standardization)是將數(shù)據(jù)按比例縮放檐束,使之落入一個小的特定區(qū)間。因而標準化的數(shù)據(jù)可正可負束倍。
歸一化(Normalization)其實就是標準化的一種方式被丧,只不過歸一化是將數(shù)據(jù)映射到了[0,1]這個區(qū)間中。
歸一化的目的就是使得預(yù)處理的數(shù)據(jù)被限定在一定的范圍內(nèi)(比如[0,1]或者[-1,1])绪妹,從而消除奇異樣本數(shù)據(jù)導(dǎo)致的不良影響甥桂。
線性歸一化(min-max normalization)
從公式中可看出,這種歸一化適合數(shù)值比較集中的情況邮旷,缺陷就是如果max和min不穩(wěn)定黄选,很容易使得歸一化結(jié)果不穩(wěn)定,使得后續(xù)的效果不穩(wěn)定婶肩。
# 使用scikit-learn函數(shù)
min_max_scaler = preprocessing.MinMaxScaler()
feature_scaled = min_max_scaler.fit_transform(feature)
# 使用numpy自定義函數(shù)
def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.min(x))/(np.max(x)-np.min(x))
return x_norm
標準差標準化 Z-Score Standardization
, μ為總體平均值办陷,X-μ為離均差,σ表示總體標準偏差
Z-Score即零-均值標準化律歼, 即先求出全部數(shù)據(jù)的均值和方差民镜,再進行計算。數(shù)據(jù)符合標準正態(tài)分布苗膝,均值為0殃恒,標準差為1。
sklearn.preprocessing.scale(X, axis=0, with_mean=True,with_std=True,copy=True)
"""
參數(shù)解釋:
X:數(shù)組或者矩陣
axis:int類型辱揭,初始值為0离唐,axis用來計算均值 means 和標準方差 standard deviations. 如果是0,則單獨的標準化每個特征(列)问窃,如果是1亥鬓,則標準化每個觀測樣本(行)。
with_mean: boolean類型域庇,默認為True嵌戈,表示將數(shù)據(jù)均值規(guī)范到0
with_std: boolean類型覆积,默認為True,表示將數(shù)據(jù)方差規(guī)范到1
"""
# 使用scikit-learn函數(shù)
standar_scaler = preprocessing.StandardScaler()
feature_scaled = standar_scaler.fit_transform(feature)
# 使用numpy自定義函數(shù)
def min_max_norm(x):
x = np.array(x)
x_norm = (x-np.mean(x))/np.std(x)
return x_norm
非線性歸一化
在數(shù)據(jù)分化較大的場景熟呛,有些數(shù)值大宽档,有些很小。通過一些數(shù)學函數(shù)庵朝,將原始值進行映射吗冤。該方法包括log、指數(shù)九府、反正切等椎瘟。需要根據(jù)數(shù)據(jù)分布的情況,決定非線性函數(shù)的曲線侄旬。
log函數(shù):
反正切函數(shù):
歸一化處理的好處
-
加快梯度下降的求解速度肺蔚,即提升模型的收斂速度
如上圖所示,兩個特征區(qū)間相差非常大時儡羔,如左圖中的x1[0-2000]和x2[1-5]宣羊,形成的等高線偏橢圓,迭代時很有可能走“之字型”路線(垂直長軸)笔链,從而導(dǎo)致需要迭代很多次才能收斂段只。
而右圖對兩個特征進行了歸一化,對應(yīng)的等高線就會變圓鉴扫,在梯度下降進行求解時能較快的收斂。 有可能提高模型的精度
一些分類器需要計算樣本之間的距離澈缺,如果一個特征的值域范圍非常大坪创,那么距離計算就會主要取決于這個特征,有時就會偏離實際情況姐赡。
正則化(Regularization)
用一組與原不適定問題相“鄰近”的適定問題的解莱预,去逼近原問題的解,這種方法稱為正則化方法项滑。
正則化的過程是將每個樣本縮放到單位范數(shù)(每個樣本的范數(shù)為1)依沮,如果后面要使用如二次型(點積)或者其它核方法計算兩個樣本之間的相似性這個方法會很有用。
【總結(jié)】
歸一化是為了消除不同數(shù)據(jù)之間的量綱枪狂,方便數(shù)據(jù)比較和共同處理危喉,比如在神經(jīng)網(wǎng)絡(luò)中,歸一化可以加快訓(xùn)練網(wǎng)絡(luò)的收斂性州疾;標準化是為了方便數(shù)據(jù)的下一步處理辜限,而進行的數(shù)據(jù)縮放等變換,并不是為了方便與其他數(shù)據(jù)一同處理或比較严蓖,比如數(shù)據(jù)經(jīng)過零-均值標準化后薄嫡,更利于使用標準正態(tài)分布的性質(zhì)氧急,進行處理;正則化而是利用先驗知識毫深,在處理過程中引入正則化因子(regulator)吩坝,增加引導(dǎo)約束的作用,比如在邏輯回歸中使用正則化哑蔫,可有效降低過擬合的現(xiàn)象钉寝。