歸一化與標準化

做者:無影隨想 
時間:2016年1月。 
出處:https://zhaokv.com/machine_learning/2016/01/normalization-and-standardization.html
聲明:版權全部,轉載請註明出處html

在機器學習和數據挖掘中,常常會聽到兩個名詞:歸一化(Normalization)與標準化(Standardization)。它們具體是什麼?帶來什麼益處?具體怎麼用?本文來具體討論這些問題。機器學習

1、是什麼

1. 歸一化

經常使用的方法是經過對原始數據進行線性變換把數據映射到[0,1]之間,變換函數爲:函數

$x'=\frac{x-\min}{\max-\min}$學習

其中$\min$是樣本中最小值,$\max$是樣本中最大值,注意在數據流場景下最大值與最小值是變化的。另外,最大值與最小值很是容易受異常點影響,因此這種方法魯棒性較差,只適合傳統精確小數據場景。大數據

2. 標準化

經常使用的方法是z-score標準化,通過處理後的數據均值爲0,標準差爲1,處理方法是:component

$x'=\frac{x-\mu}{\sigma}$orm

其中$\mu$是樣本的均值,$\sigma$是樣本的標準差,它們能夠經過現有樣本進行估計。在已有樣本足夠多的狀況下比較穩定,適合現代嘈雜大數據場景。htm

2、帶來什麼

歸一化的依據很是簡單,不一樣變量每每量綱不一樣,歸一化能夠消除量綱對最終結果的影響,使不一樣變量具備可比性。好比兩我的體重差10KG,身高差0.02M,在衡量兩我的的差異時體重的差距會把身高的差距徹底掩蓋,歸一化以後就不會有這樣的問題。ip

標準化的原理比較複雜,它表示的是原始值與均值之間差多少個標準差,是一個相對值,因此也有去除量綱的功效。同時,它還帶來兩個附加的好處:均值爲0,標準差爲1。ci

均值爲0有什麼好處呢?它可使數據以0爲中心左右分佈(這不是廢話嘛),而數據以0爲中心左右分佈會帶來不少便利。好比在去中心化的數據上作SVD分解等價於在原始數據上作PCA;機器學習中不少函數如SigmoidTanhSoftmax等都以0爲中心左右分佈(不必定對稱)。

標準差爲1有什麼好處呢?這個更復雜一些。對於$x_i$與$x_{i'}$兩點間距離,每每表示爲

$D(x_i,x_{i'})=\sum\limits_{j=1}^pw_j\cdot d_j(x_{ij},x_{i'j});\sum\limits_{j=1}^pw_j=1$

其中$d_j(x_{ij},x_{i'j})$是屬性$j$兩個點之間的距離,$w_j$是該屬性間距離在總距離中的權重,注意設$w_j=1,\forall j$並不能實現每一個屬性對最後的結果貢獻度相同。對於給定的數據集,全部點對間距離的平均值是個定值,即

$\bar{D}=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^ND(x_i,x_{i'})=\sum\limits_{j=1}^pw_j\cdot \bar{d}_j$

是個常數,其中

$\bar{d}_j=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^Nd_j(x_{ij}, x_{x'j})$

可見第$j$個變量對最終總體平均距離的影響是$w_j\cdot \bar{d}_j$,因此設$w_j\sim 1/\bar{d}_j$可使全部屬性對全數據集平均距離的貢獻相同。如今設$d_j$爲歐式距離(或稱爲二範數)的平方,它是最經常使用的距離衡量方法之一,則有

$\bar{d_j}=\frac{1}{N^2}\sum\limits_{i=1}^N\sum\limits_{i'=1}^N(x_{ij}-x_{i'j})^2=2\cdot var_j$

其中$var_j$是$Var(X_j)$的樣本估計,也就是說每一個變量的重要程度正比於這個變量在這個數據集上的方差。若是咱們讓每一維變量的標準差都爲1(即方差都爲1),每維變量在計算距離的時候重要程度相同。

3、怎麼用

在涉及到計算點與點之間的距離時,使用歸一化或標準化都會對最後的結果有所提高,甚至會有質的區別。那在歸一化與標準化之間應該如何選擇呢?根據上一節咱們看到,若是把全部維度的變量一視同仁,在最後計算距離中發揮相同的做用應該選擇標準化,若是想保留原始數據中由標準差所反映的潛在權重關係應該選擇歸一化。另外,標準化更適合現代嘈雜大數據場景。

相關文章
相關標籤/搜索