Sklearn之資料預處理——StandardScaler歸一化

Lu_mi發表於2020-10-18

為什麼要進行歸一化?

機器學習模型被網際網路行業廣泛應用,一般做機器學習應用的時候大部分時間是花費在特徵處理上,其中很關鍵的一步就是對特徵資料進行歸一化,為什麼要歸一化呢?

維基百科給出的解釋:

  1. 歸一化後加快了梯度下降求最優解的速度;

如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。

  1. 歸一化有可能提高精度;

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

我的理解:

  1. 去掉量綱,使得各指標之間具有可比性
  2. 將資料先知道一定區間內,使得運算便捷

下面再以房價預測的例子來說明一下歸一化的作用。以預測房價為例,自變數為房間數(x1)、面積大小(x2),因變數為房價。那麼可以得到的公式為:
y=θ1x1+θ2x2
y=θ1x1+θ2x2
其中,x1代表房間數,θ1代表x1變數前面的係數;x2代表面積,θ2代表x2變數前面的係數。
下面兩張圖(損失函式的等高線)代表資料是否歸一化的最優解尋解過程:
未歸一化:在這裡插入圖片描述
歸一化之後:在這裡插入圖片描述
在尋找最優解的過程,當資料沒有歸一化的時候,面積數的範圍可以從01000,房間數的範圍一般為010,可以看出面積數的取值範圍遠大於房間數。也就導致了等高面為長橢圓形,非常尖,因為變數前的係數大小相差很大,當使用梯度下降法尋求最優解時,很有可能走“之字型”路線(垂直等高線走)。
而資料歸一化後,損失函式變數前面的係數差距已不大,影像的等高面近似圓形,在梯度下降進行求解時能較快的收斂。因此如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。

哪些機器學習演算法不需要(需要)做歸一化?

概率模型(樹形模型)不需要歸一化,因為它們不關心變數的值,而是關心變數的分佈和變數之間的條件概率,如決策樹、RF。而像Adaboost、SVM、LR、Knn、KMeans之類的最優化問題就需要歸一化。

下面列舉一下常用的歸一化方法以及各種方法的使用場景。

1.線性函式歸一化

線性函式將原始資料線性化的方法轉換到[0, 1]的範圍。計算公式如下:
在這裡插入圖片描述
在不涉及距離度量、協方差計算、資料不符合正太分佈的時候,使用該方法比較好

2.零均值標準化

零均值歸一化方法將原始資料集歸一化為均值為0、方差1的資料集([0, 1]範圍)。計算公式如下:在這裡插入圖片描述
在分類、聚類演算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維、涉及到正態分佈的時候使用該方法較好。

3.非線性歸一化

(1)對數變換
在實際工程中,經常會有類似點選次數/瀏覽次數的特徵,這類特徵是長尾分佈的,可以將其用對數函式進行壓縮。特別的,在特徵相除時,可以用對數壓縮之後的特徵相減得到。對數規範化的常見形式是:在這裡插入圖片描述
(2)三角函式
三角函式的值在[0, 1]之間,如果有需要,可以用三角函式進行變換。

(3)sigmoid函式
sigmoid函式,也稱S型函式,可以對資料進行有效的壓縮。特別的,S型函式在邏輯迴歸中起著決定性作用。

相關文章