歸一化與反歸一化

在數據挖掘或機器學習中,輸入的數據來自於不同的數據源,其取值範圍、量綱不同,這時候我們需要對這些數據進行歸一化或稱作標準化。標準化後,將有利於提高機器學習初始化速度、提高算法的收斂速度和精度,也可以消除特徵的量綱不同對模型的影響。

一、為什麼需要歸一化

歸一化指的是將數據按比例縮放,使之落入一個小的特定區間。主要有以下幾個原因:

1. 模型初始化速度

一旦確定好神經網絡的架構後,其權重參數需要初始化,如果權重參數初始化太小,則整個神經網絡的輸出太小,使得網絡學習過程非常緩慢,需要更長時間的學習才能收斂。如果權重參數初始化太大,則整個神經網絡的輸出太大,使得網絡也無法學到更多的知識。那麼我們可以通過歸一化輸入數據,用一組更合適的初始權重,默認初始化而不是0初始化,從而加快初始化速度。

2. 提高算法的收斂速度和精度

在神經網絡中,一般使用梯度下降算法進行反向傳播學習,而梯度下降算法需要計算梯度值來取得最佳av_min(最小值),如果收斂慢,不僅會耗費更多的計算時間,而且很容易陷入局部最小值中。歸一化可以縮小特徵間的差異,使得收斂速度更快,且不易陷入局部最小值。

3. 消除特徵的量綱不同對模型的影響

在數據挖掘或機器學習中,輸入的數據往往來自不同的數據源,其取值範圍和量綱也不一致。例如身高和體重不在一個量綱。這會對模型產生影響,體現在模型的預測效果不佳,不能充分表達數據的意義。歸一化則可以減少特徵間的影響,增加模型的魯棒性。

二、常用的歸一化方法

1. Min-max歸一化

Min-max歸一化是對原始數據進行線性變換,將數據映射到[0, 1]區間內,其函數可表示為:

x = (x - min) / (max - min) 

其中,x為每個數據的歸一化後的結果,min和max分別為特徵屬性中的最小值和最大值。

其中,一份簡單的python代碼實現樣例:

def min_max_scale(data):
    """Min-max scaling"""
    return (data - np.min(data)) / (np.max(data) - np.min(data))

2. Z-score標準化

Z-score標準化是將原始數據轉化為均值為0,標準差為1的分布。其函數可表示為:

x = (x - mean) / std

其中,x為每個數據的標準化結果,mean為特徵屬性中的均值,std為標準差。

其中,一份簡單的python代碼實現樣例:

def z_score_scale(data):
    """Z-score scaling"""
    return (data - np.mean(data)) / np.std(data)

三、反歸一化的實現

在訓練神經網絡時,我們需要將歸一化後的結果映射到原來的取值範圍內,這個過程稱為反歸一化。反歸一化可以用於提取真實結果,判斷神經網絡的預測效果。反歸一化的函數與歸一化是相反的。

1. 反Min-max歸一化

如果已知待反歸一化值$x’$、原本歸一化的最大值$max$和最小值$min$,則可以通過下式反推出$x$值:

x = x'* (max - min) + min

其中,一份簡單的python代碼實現樣例:

def inverse_min_max_scale(data, inverse_data):
    """Inverse Min-max scaling"""
    min, max = np.min(data), np.max(data)
    inv_data = inverse_data * (max - min) + min
    return inv_data

2. 反Z-score標準化

如果已知待反歸一化值$x’$、原本歸一化的均值$mean$和標準差$std$,則可以通過下式反推出$x$值:

x = x' * std + mean

其中,一份簡單的python代碼實現樣例:

def inverse_z_score_scale(data, inverse_data):
    """Inverse Z-score scaling"""
    mean, std = np.mean(data), np.std(data)
    inv_data = inverse_data * std + mean
    return inv_data

總結

歸一化與反歸一化在數據挖掘和機器學習中起着重要的作用。在歸一化方面,最常用的方法是Min-max歸一化和Z-score標準化;在反歸一化方面,只需要根據原本的歸一化計算方法,並將映射到[0, 1]或者均值為0,標準差為1的分布的結果再次還原回去即可。

原創文章,作者:VSZVB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371369.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VSZVB的頭像VSZVB
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

發表回復

登錄後才能評論