數據歸一化


什么~為什么~哪些

一、為何需要歸一化

 不同的評價指標往往具有不同的量綱(例如:對於評價房價來說量綱指:面積、房價數、樓層等;對於預測某個人患病率來說量綱指:身高、體重等)

 這樣的情況會影響到數據分析的結果,為了消除指標之間量綱的影響,需要進行數據標准化處理,以解決數據指標之間的可比性。原始數據經過數據標准化處理后,各指標處於同一數量級,適合進行綜合對比評價

  (1)歸一化后加快了梯度下降求最優解的速度

  (2)歸一化有可能提高精度(歸一化是讓不同維度之間的特征在數值上有一定的比較性)


二、例子講解

 假定為了預測房子價格,自變量為面積,房間數兩個,因變量為房價,那么可以得到的公式為:\(y = \theta_1x_1 + \theta_2x_2\),其中x1代表房間數,x2代表面積,首先給出兩張圖代表數據是否均一化的最優解尋解過程

 未歸一化:

 歸一化之后:

 

 尋找最優解也就是尋找使得損失函數值最小的theta1、theta2。上述兩幅圖代表的是損失函數的等高線。當數據沒有歸一化的時候,面積數的范圍可以從0-1000,房間數的范圍一般為0-10,可以看出面積數的取值范圍遠大於房間數

 形成的影響就是在形成損失函數的時候,數據沒有歸一化的表達式可以為:\(J = (3\theta_1 + 600\theta_2 - y)^2\),造成圖像的等高線為類似的橢圓形狀,最優解的尋優過程如下圖所示:

 而數據歸一化后,損失函數的表達式可以表示為:\(J = (0.5\theta_1 + 0.55\theta_2 - y)^2\),其中變量的前面系數都在【0-1】范圍之間,則圖像的等高線為類似的圓形形狀,最優解的尋優過程如下圖所示:

 

  從上面可以看出,數據歸一化后,最優解的尋優過程明顯會變得平緩,更容易正確的收斂到最優解
 
三、兩種常用的歸一化方法:

 1)min-max標准化(Min-Max Normalization)(線性函數歸一化):

    •  定義:也稱為離差標准化,是對原始數據的線性變換,使得結果映射到0-1之間
    •  本質:把數變為【0,1】之間的小數
    •  轉換函數:\((X - Min)/(Max - Min)\)
  其中:Max為樣本數據的最大值,Min為樣本數據的最小值。缺陷:當有新數據加入時,可導致Max和Min的變化,需要重新定義
 
 2) 0均值標准化(Z-score standardlization)
    •  定義:這種方法給與原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。經過處理的數據符合標准正態分布,即均值為0,標准差為1
    •  本質:把有量綱表達式變成無量綱表達式
    •  轉換函數:\((X - \mu)/\delta\)

 其中,\(\mu\)為所有樣本數據的均值。\(\delta\)為所有樣本數據的標准差

 

四、sklearn模塊中的歸一化

 數據正規化(data normalization)是將數據的每個樣本(向量)變換為單位范數的向量,各樣本之間是相互獨立的.其實際上,是對向量中的每個分量值除以正規化因子.常用的正規化因子有 L1, L2 和 Max

 

import numpy as np
from sklearn.preprocessing import normalize

x = np.array([[1, 2, 3, 4], [3,4,5,6], [5,6,7,8]], dtype='float32')
print("Before normalization:\n ", x, '\n')

options = ['l1', 'l2', 'max']
for opt in options:
    norm_x = normalize(x, axis=0,  norm=opt)
    print("After %s normalization:\n" % opt.capitalize(), norm_x, '\n')

  結果如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM