2020-04-21 21:52:11
問題描述:為什么需要對數值類型的特征做歸一化。
問題求解:
為了消除數據特征之間的量綱影響,我們需要對特征進行歸一化處理,使得不同指標之間具有可比性。
舉例來說,比如分析一個人的身高,體重對健康的影響,一個人的身高范圍在1m~2m之間,一個人的體重范圍在50kg~100kg之間,如果不做歸一化處理,那么必然范圍更大的體重對結果的影響會更加明顯。為了得到更精准的結果,需要對數值進行歸一化,使得各個指標的數據在同一數量級,方便比較分析。
對數值類型的特征做歸一化可以將所有的特征都統一到一個大致相同的數值 區間內。最常用的方法主要有以下兩種。
- 線性函數歸一化(Min-Max Scaling)
它對原始數據進行線性變換,使結果映射到[0, 1]的范圍,實現對原始數據的等比縮放。歸一化公式如下:
Xnorm = (X - Xmin) / (Xmax - Xmin)
- 零均值歸一化(Z-Score Normalization)
它會將原始數據映射到均值為 0、標准差為1的分布上。具體來說,假設原始特征的均值為μ、標准差為σ,那么 歸一化公式定義為:
z = (x - u) / v
另外,對數據做歸一化還有利於梯度下降時模型的收斂。
假設有兩種數值型特征,x1的取值范圍為 [0, 10],x2的取值 范圍為[0, 3],於是可以構造一個目標函數符合圖(a)中的等值圖。 在學習速率相同的情況下,x1的更新速度會大於x2,需要較多的迭代才能找到 最優解。如果將x1和x2歸一化到相同的數值區間后,優化目標的等值圖會變成圖(b)中的圓形,x1和x2的更新速度變得更為一致,容易更快地通過梯度下降找到最優解。