Python - 特徵縮放如何以及在哪裡應用?


它是資料預處理的一個步驟,應用於資料的自變數或特徵。它基本上有助於將資料規範化到特定範圍內。

為什麼要縮放?

大多數情況下,您的資料集將包含幅度、單位和範圍差異很大的特徵。但是,由於大多數機器學習演算法在其計算中使用兩個資料點之間的歐幾里得距離,因此這是一個問題。

如果置之不理,這些演算法只會考慮特徵的幅度,而忽略單位。結果在不同單位之間差異很大,例如 5kg 和 5000gms。

幅度較大的特徵在距離計算中的權重會遠大於幅度較小的特徵。

為了抑制這種影響,我們需要將所有特徵都提升到相同的幅度級別。這可以透過縮放來實現。

如何縮放特徵?

  • **標準化** - 標準化用其 Z 分數替換值。
  • $$x^{\prime}=\frac{x\:-\:\bar{x}}{\sigma}$$這將特徵重新分佈到其均值 μ = 0 和標準差 σ =1。sklearn.preprocessing.scale 幫助我們在 python 中實現標準化。
  • **均值歸一化** -
  • $$x^{\prime}=\frac{x\:-\:mean(x)}{\max(x)\:-\:\min(x)}$$

    此分佈的值介於**-1 和 1**之間,且 μ=0。**標準化**和**均值歸一化**可用於假設資料以零為中心的演算法,例如**主成分分析 (PCA)**。

  • 最小-最大縮放
  • $$x^{\prime}=\frac{x\:-\:\min(x)}{\max(x)\:-\:\min(x)}$$

    此縮放將值介於 0 和 1 之間。

  • **單位向量** -
  • $$x^{\prime}=\frac{x}{\lVert\:x\:\rVert}$$

    縮放是考慮到整個特徵向量長度為單位。**最小-最大縮放**和**單位向量**技術生成範圍 [0,1] 的值。在處理具有硬邊界的特徵時,這非常有用。例如,在處理影像資料時,顏色只能介於 0 到 255 之間。

何時縮放?

這裡要遵循的經驗法則是,任何計算距離或假設正態性的演算法,都應縮放其特徵。

一些特徵縮放起作用的演算法示例:

  • 使用歐幾里得距離測量的k近鄰演算法對幅度敏感,因此應縮放所有特徵以使其權重相等。

  • 在執行**主成分分析 (PCA)**時,縮放至關重要。PCA 試圖獲取方差最大的特徵,而方差對於幅度較大的特徵較高。這會使 PCA 偏向於幅度較大的特徵。

  • 我們可以透過縮放來加速**梯度下降**。這是因為 θ 在較小範圍內下降得很快,而在較大範圍內下降得緩慢,因此當變數非常不均勻時,它會無效地上下振盪到最優值。

  • 基於樹的模型不是基於距離的模型,可以處理不同範圍的特徵。因此,在對樹建模時不需要縮放。

  • 像**線性判別分析 (LDA)**、**樸素貝葉斯**這樣的演算法在設計上配備了處理此問題並相應地為特徵賦予權重的方法。在這些演算法中執行特徵縮放可能不會產生太大影響。

更新於:2020 年 8 月 6 日

194 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.