機器學習中常見的標準化和歸一化方法

特徵工程是機器學習中非常重要的一個環節,業內有句話是這麼說的 “ 數據決定了機器學習的上限,而算法和模型是逼近這個上限 ”。可見數據是機器學習的關鍵所在,而特徵工程就是處理數據,因此特徵工程的做的好壞往往直接影響了最終的結果。而特徵工程裏非常重要的兩個步驟就是對特徵的歸一化和標準化。

一、歸一化、標準化、中心化的概念

1、歸一化

將數據映射到 [0,1] 或者 [-1, 1] 區間,一來可以方便計算,二來可以消除不同特徵量綱的影響,無量綱化可以直接純數值計算

2、標準化

標準化是將數據映射爲均值是0,標準差是1的正態分佈數據,該方法常用於SVM,LR,神經網絡等模型中。

3、中心化

中心化相比於標準化更簡單一些,只將數據映射到均值爲0的新數據中,無需滿足標準差爲1的條件。

歸一化和標準化的區別

  • 不同
    (1)、首先從兩者的定義上可以看出不一樣;
    (2)、其次歸一化後的值只受原樣本數據裏的極值影響,而標準化後映射的值受原數據裏每一個樣本的影響。
    (3)、標準化是對特徵矩陣裏的列數據做處理,通過 z-score 變換轉爲標準正態分佈數據,和整體樣本分佈相關。

  • 相同
    (1)、都是消除了量綱的影響
    (2)、都是一種線性變換,都是對向量 XX 按照比例壓縮再進行平移

二、爲什麼要歸一化/標準化

爲什麼要做歸一化和標準化,其實前面的內容也提到了一些,不重複贅述。其實歸一化和標準化本質上是一種線性變換,它並沒有改變數據的數值順序,因此不會使數據 “失效”。總的來說,歸一化/標準化的原因可以歸結如下幾點:
(1)、消除量綱的影響
例如身高體重都是影響某種疾病的可能因素,但不能直接對這倆因素加減,通過分別歸一化後轉爲無量綱的數值,即可進行數值運算。

(2)、避免數值問題
在訓練模型參數時,如果某個特徵的值特別大,那邊這個值對模型的影響可能就比較大,訓練出的模型參數會與實際情況有所偏差,歸一化/標準化後,數值會限定在某一個範圍內,避免了極值的影響。

(3)、某些模型的要求

  • 在使用梯度下降法求解參數的時候,如果特徵進行了歸一化/標準化,那麼在迭代求解的時候會加快收斂速度

在這裏插入圖片描述

  • 一些分類器需要計算樣本之間的距離(如歐氏距離),例如 KNN。如果一個特徵值域範圍非常大,那麼距離計算就主要取決於這個特徵,從而與實際情況相悖(比如這時實際情況是值域範圍小的特徵更重要)。

三、常見的歸一化/標準化方法

3.1 歸一化方法

3.1.1 Min-Max Normalization
x=xxminxmaxxminx' = \frac{x-x_{\min}}{x_{\max}-x_{\min}}

3.1.2 平均歸一化
x=xμxmaxxminx' = \frac{x-\mu}{x_{\max}-x_{\min}}

這兩種歸一化方法都有一個問題,就是當有新的數據加入時,極大極小值可能發生變化。

3.1.3 非線性歸一化

  • 對數函數轉換:y=log(x)y=\log(x)
  • 反正切函數轉換:y=atan(x)2/πy=atan(x)*2/\pi

這種方法通常用於數據分化較大的場景,有些數值很大,有些則很小,利用一些數學函數進行映射。

3.2 標準化方法

3.2.1 Z-score規範化
x=xμσx'=\frac{x-\mu}{\sigma}

3.3 中心化方法

x=xμx' = x-\mu

四、使用場景

那究竟什麼時候用歸一化?什麼時候用標準化?

  • 如果對輸出結果範圍有要求,用歸一化。
  • 如果數據較爲穩定,不存在極端的最大最小值,用歸一化。
  • 如果數據存在異常值和較多噪音,用標準化,可以間接通過中心化避免異常值和極端值的影響。

參考資料:
[1]. https://www.jianshu.com/p/95a8f035c86c
[2]. https://www.zhihu.com/question/20455227

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章