數據的歸一化處理


 

 

 

數據的標准化(normalization)和歸一化

數據的標准化

  數據的標准化(normalization)是將數據按比例縮放,使之落入一個小的特定區間。在某些比較和評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值,便於不同單位或量級的指標能夠進行比較和加權。

 目前數據標准化方法:直線型方法(如極值法、標准差法)、折線型方法(如三折線法)、曲線型方法(如半正態性分布)。不同的標准化方法,對系統的評價結果會產生不同的影響,然而不幸的是,在數據標准化方法的選擇上,還沒有通用的法則可以遵循。

歸一化

數據標准化中最典型的就是數據的歸一化處理,即將數據統一映射到[0,1]區間上。
歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在0-1之間是統計的概率分布,歸一化在-1--+1之間是統計的坐標分布。歸一化有同一、統一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要同一,神經網絡是以樣本在事件中的統計分別幾率來進行訓練(概率計算)和預測的,且sigmoid函數的取值是0到1之間的,網絡最后一個節點的輸出也是如此,所以經常要對樣本的輸出歸一化處理。歸一化是統一在0-1之間的統計概率分布,當所有樣本的輸入信號都為正值時,與第一隱含層神經元相連的權值只能同時增加或減小,從而導致學習速度很慢。另外在數據中常存在奇異樣本數據,奇異樣本數據存在所引起的網絡訓練時間增加,並可能引起網絡無法收斂。為了避免出現這種情況及后面數據處理的方便,加快網絡學習速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近於0或與其均方差相比很小。

  

歸一化的目標

1 把數變為(0,1)之間的小數
2 把有量綱表達式變為無量綱表達式

歸一化的好處

1. 提升模型的收斂速度

2.提升模型的精度

 

常見的數據歸一化方法

最常用的是 min-max標准化 和 z-score 標准化。

min-max標准化

是對原始數據的線性變換,使結果落到[0,1]區間,轉換函數如下:

其中max為樣本數據的最大值,min為樣本數據的最小值。

def Normalization(x):
    return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

如果想要將數據映射到[-1,1],則將公式換成:

x* = x* * 2 -1

或者進行一個近似

x* = (x - x_mean)/(x_max - x_min), x_mean表示數據的均值。

def Normalization2(x):
    return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]

這種方法有一個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。

ps: 將數據歸一化到[a,b]區間范圍的方法:

(1)首先找到原本樣本數據X的最小值Min及最大值Max
(2)計算系數:k=(b-a)/(Max-Min)
(3)得到歸一化到[a,b]區間的數據:Y=a+k(X-Min)  或者 Y=b+k(X-Max)

即一個線性變換,在坐標上就是求直線方程,先求出系數,代入一個點對應的值(x的最大/最小就對應y的最大/最小)就ok了。

z-score 標准化(zero-mean normalization)

參考:

https://blog.csdn.net/Orange_Spotty_Cat/article/details/80312154

https://blog.csdn.net/pipisorry/article/details/52247379

log函數轉換

通過以10為底的log函數轉換的方法同樣可以實現歸一下,具體方法如下:

使用注意:max為樣本數據最大值,並且所有的數據都要大於等於1。

atan函數轉換

通過反正切函數也可以實現數據的歸一化:

使用這個方法需要注意的是如果想映射的區間為[0,1],則數據都應該大於等於0,小於0的數據將被映射到[-1,0]區間上,而並非所有數據標准化的結果都映射到[0,1]區間上。

 


免責聲明!

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



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