機器學習中的歸一化方法

在這裏主要討論兩種歸一化方法:html

一、線性函數歸一化(Min-Max scaling)

線性函數將原始數據線性化的方法轉換到[0 1]的範圍,歸一化公式以下:python

該方法實現對原始數據的等比例縮放,其中Xnorm爲歸一化後的數據,X爲原始數據,Xmax、Xmin分別爲原始數據集的最大值和最小值。算法

python實現:preprocessing.MinMaxScaler函數

二、0均值標準化(Z-score standardization)

0均值歸一化方法將原始數據集歸一化爲均值爲0、方差1的數據集,歸一化公式以下:3d

其中,μ、σ分別爲原始數據集的均值和方法。該種歸一化方式要求原始數據的分佈能夠近似爲高斯分佈,不然歸一化的效果會變得很糟糕。orm

python實現:preprocessing.StandardScalerpreprocessing.robust_scalehtm

兩種歸一化的應用場景:
一、在分類、聚類算法中,須要使用距離來度量類似性的時候、或者使用PCA技術進行降維的時候,第二種方法(Z-score standardization)表現更好。
二、在不涉及距離度量、協方差計算、數據不符合正太分佈的時候,可使用第一種方法或其餘歸一化方法。好比圖像處理中,將RGB圖像轉換爲灰度圖像後將其值限定在[0 255]的範圍。blog

爲何在距離度量計算類似性、PCA中使用第二種方法(Z-score standardization)會更好呢?咱們進行了如下的推導分析:ci

歸一化方法對方差、協方差的影響:假設數據爲2個維度(X、Y),首先看0均值對方差、協方差的影響:
先使用第二種方法進行計算,咱們先不作方差歸一化,只作0均值化,變換後數據爲get

新數據的協方差爲

因爲 

所以

而原始數據協方差爲

所以 

作方差歸一化後:

方差歸一化後的協方差爲:

使用第一種方法進行計算,爲方便分析,咱們只對X維進行線性函數變換

計算協方差

能夠看到,使用第一種方法(線性變換後),其協方差產生了倍數值的縮放,所以這種方式沒法消除量綱對方差、協方差的影響,對PCA分析影響巨大;同時,因爲量綱的存在,使用不一樣的量綱、距離的計算結果會不一樣。
而在第二種歸一化方式中,新的數據因爲對方差進行了歸一化,這時候每一個維度的量綱其實已經等價了,每一個維度都服從均值爲0、方差1的正態分佈,在計算距離的時候,每一個維度都是去量綱化的,避免了不一樣量綱的選取對距離計算產生的巨大影響。

總結來講,在算法、後續計算中涉及距離度量(聚類分析)或者協方差分析(PCA、LDA等)的,同時數據分佈能夠近似爲狀態分佈,應當使用0均值的歸一化方法。其餘應用中更具須要選用合適的歸一化方法。

相關文章
相關標籤/搜索