歸一化特徵

歸一化特徵

歸一化特徵是數據挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數據分析的結果,為了消除指標之間的量綱影響,需要進行數據標準化處理,以解決數據指標之間的可比性。原始數據經過數據標準化處理後,各指標處於同一數量級,適合進行綜合對比評價。

基本介紹

  • 中文名:歸一化特徵
  • 外文名:Normalized feature
背景,常用方法,Standardization,Min-Max Scaling,代碼實現,

背景

該問題的出現是因為我們沒有同等程度的看待各個特徵,即我們沒有將各個特徵量化到統一的區間。比如對房屋售價進行預測時,我們的特徵僅有房屋面積一項,但是,在實際生活中,臥室數目也一定程度上影響了房屋售價。下面,我們有這樣一組訓練樣本(圖一):
圖一圖一
注意到,房屋面積及臥室數量兩個特徵在數值上差異巨大,如果直接將該樣本送入訓練,則代價函式的輪廓會是“扁長的”,在找到最優解前,梯度下降的過程不僅是曲折的,也是非常耗時的(圖二):
圖二圖二

常用方法

Standardization

Standardization又稱為Z-score normalization,量化後的特徵將服從標準常態分配:
其中,u和
分別為對應特徵的均值和標準差。

Min-Max Scaling

Min-Max Scaling又稱為Min-Max normalization, 特徵量化的公式為:
量化後的特徵將分布在區間。
大多數機器學習算法中,會選擇Standardization來進行特徵縮放,但是,Min-Max Scaling也並非會被棄置一地。在數字圖像處理中,像素強度通常就會被量化到[0,1]區間,在一般的神經網路算法中,也會要求特徵被量化[0,1]區間。
進行了特徵縮放以後,代價函式的輪廓會是“偏圓”的,梯度下降過程更加筆直,收斂更快性能因此也得到提升(圖三):
圖三圖三

代碼實現

def standardize(X):      """特徵標準化處理      Args:         X: 樣本集     Returns:         標準後的樣本集     """      m, n = X.shape      # 歸一化每一個特徵      for j in range(n):          features = X[:,j]          meanVal = features.mean(axis=0)          std = features.std(axis=0)          if std != 0:              X[:, j] = (features-meanVal)/std          else              X[:, j] = 0      return X    def normalize(X):      """Min-Max normalization     sklearn.preprocess 的MaxMinScalar      Args:         X: 樣本集     Returns:         歸一化後的樣本集     """      m, n = X.shape      # 歸一化每一個特徵      for j in range(n):          features = X[:,j]          minVal = features.min(axis=0)          maxVal = features.max(axis=0)          diff = maxVal - minVal          if diff != 0:             X[:,j] = (features-minVal)/diff          else:             X[:,j] = 0      return X</span>  

相關詞條

熱門詞條

聯絡我們