一、歸一化的定義
歸一化是指將某個變量的取值範圍縮放到0~1或者-1~1之間,以便於不同變量之間的比較和權重的劃分。
它是數據的預處理方法之一,常用於機器學習中。機器學習算法通常基於樣本之間的距離計算模型,而歸一化可以有效地消除不同變量之間的量綱和範圍差異,使得每個變量對距離計算的影響權重相等,從而提高模型的精度和穩定性。
二、歸一化的方法
常用的歸一化方法有最小-最大歸一化、z-score標準化、小數定標標準化等。
1、最小-最大歸一化
最小-最大歸一化是指將數據中的每個元素按照下面的公式進行縮放:
X' = (X - Xmin) / (Xmax - Xmin)
其中,X’是歸一化後的值,X是原始值,Xmin是所有樣本中的最小值,Xmax是所有樣本中的最大值。
2、z-score標準化
z-score標準化是一種簡單的標準化方法,可以將數據均值為0,標準差為1。其公式如下:
X' = (X - μ) / σ
其中,X’是歸一化後的值,X是原始值,μ是所有樣本的均值,σ是所有樣本的標準差。然而,這種方法有可能受到異常值的影響,導致數據的分布失真。
3、小數定標標準化
小數定標標準化是一種將數據縮小到[-1,1)的方法,其公式如下:
X' = X / 10^j
其中,X’是歸一化後的值,X是原始值,j是使得所有樣本都小於1,且精度滿足要求的最小正整數。由於該方法會使得數據精度降低,因此在對精度要求較高的情況下不適用。
三、歸一化在機器學習中的應用
在機器學習中,歸一化的作用十分重要。
1、提高模型精度
當訓練數據的不同特徵之間的尺度差距過大時,會導致梯度下降的過程變慢,收斂速度變慢,模型容易陷入局部最優解。如果對數據進行歸一化後,可以避免這種情況的發生,提高了模型的精度。
2、提高模型穩定性
當訓練數據的不同特徵之間的尺度差距過大時,模型容易受到某些特徵的影響過大,導致泛化能力不足,可能出現過擬合的情況。歸一化可以平衡各個特徵之間的影響,提高模型的穩定性。
3、加速模型訓練
當數據進行歸一化後,可以使得模型訓練的速度更快,迭代次數減少。因為歸一化後的數據更容易收斂,而且每次迭代的步幅更精確,使得學習率的選擇更加簡單。
四、示例代碼
1、最小-最大歸一化代碼示例
import numpy as np def min_max_scaler(X): X = np.array(X) Xmin = np.min(X, axis=0) Xmax = np.max(X, axis=0) X_norm = (X - Xmin) / (Xmax - Xmin) return X_norm
2、z-score標準化代碼示例
import numpy as np def zero_mean_scaler(X): X = np.array(X) μ = np.mean(X, axis=0) σ = np.std(X, axis=0) X_norm = (X - μ) / σ return X_norm
3、小數定標標準化代碼示例
import numpy as np def decimal_scaler(X): X = np.array(X) j = np.ceil(np.log10(np.max(X))) X_norm = X / (10 ** j) return X_norm
以上代碼示例僅供參考,具體實現方式因不同情況而異,可以根據具體需求進行調整。
原創文章,作者:OTAGO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368360.html