特徵縮放主要是爲了將獨立變量集或數據特徵向量的取值限定在一定的範圍內,通常發生在數據預處理階段。在機器學習算法中,特徵矩陣各個維度的取值通常是不一樣的,此時如果採用歐幾里得距離來衡量兩個特徵的距離,那麼最終的距離將嚴重取決於取值範圍跨度大的特徵維度,比如說在代表人屬性的特徵向量有兩個維度,分別是年齡和身高,其中年齡的取值範圍可以是[1, 100],身高的取值範圍是[0.4, 2.5](單位:米),那麼兩個特徵向量的距離將嚴重取決於年齡這個特徵,身高基本上對兩者的距離沒有太大的影響。
從以上示例中可以看出,年齡、身高等有量綱量對學習算法的性能有着重要的影響,因此對輸入特徵矩陣進行特徵縮放,將其轉化爲無量綱量是很多學習算法必要的操作,主要具有以下幾個特點:
- 縮放後的特徵矩陣,各個維度都具有相同的重要性。
- 可以加快梯度下降的收斂速度。
- 可以加快支持向量機的速度,但是會影響最終的結果。
由於翻譯的原因,在國內通常使用歸一化(Normalization)和標準化(Standardization)這兩個術語來表示特徵縮放這個操作,爲了避免中文術語上的混亂,將採用維基百科上的英文術語,包括以下四種方法:
- Rescaling (min-max normalization)
- Mean normalization
- Standardization (Z-score Normalization)
- Scaling to unit length
Rescaling (min-max normalization)
即通常所說的歸一化。該方法也稱爲最小-最大值縮放,是一種最簡單的縮放方法,主要功能是將特徵值縮放到區間[0, 1],其計算公式如下所示:
其中,表示原始值,表示該特徵維度的最小值,表示該特徵維度的最大值,表示縮放後的值。該方法具有更加泛化的形式,即將特徵值縮放到區間[a, b]之間,其計算公式如下所示:其中,表示縮放後的最大值,表示縮放後的最小值。
Mean normalization
其計算公式如下所示:
其中,表示特徵維度的均值。
Standardization (Z-score Normalization)
即通常所說的標準化。該方法的主要功能是將數據按比例縮放,使之落入一個小的特定區間,可以使得輸入數據的每個特徵維度都具有均值0、方差1的性質,被廣泛地應用於各種機器學習算法(如支持向量機、邏輯迴歸和人工神經網絡)中,其計算公式如下所示:
其中,表示特徵維度的均值,表示特徵向量的標準差。
Scaling to unit length
該方法主要將各個特徵值除以當前特徵維度的歐幾里得長度,被廣泛地應用於機器學習領域,其計算公式如下所示:
其中,表示當前維度的歐幾里得長度。在某些情況下(如Histogram features),可以使用範數來代替,特別是在後續步驟中採用Scalar Metric作爲距離度量方式。