特徵縮放(Feature Scaling)

特徵縮放的幾種方法:

(1)最大最小值歸一化(min-max normalization)將數值範圍縮放到 [0, 1] 區間裏html

 

(2)均值歸一化(mean normalization)將數值範圍縮放到 [-1, 1] 區間裏,且數據的均值變爲0算法

 

(3)標準化 / z值歸一化(standardization / z-score normalization:將數值縮放到0附近,且數據的分佈變爲均值爲0,標準差爲1的標準正態分佈(先減去均值來對特徵進行 中心化 mean centering 處理,再除以標準差進行縮放)網絡

 

(4)最大絕對值歸一化(max abs normalization )也就是將數值變爲單位長度(scaling to unit length),將數值範圍縮放到 [-1, 1] 區間裏dom

 

(5)穩鍵標準化(robust standardization):先減去中位數,再除以四分位間距(interquartile range),由於不涉及極值,所以在數據裏有異常值的狀況下表現比較穩健機器學習

 

* 有一些時候,只對數據進行中心化和縮放是不夠的,還需對數據進行白化(whitening)處理來消除特徵間的線性相關性。學習

 

歸一化和標準化的區別:

歸一化(normalization):歸一化是將樣本的特徵值轉換到同一量綱下,把數據映射到[0,1]或者[-1, 1]區間內。優化

標準化(standardization):標準化是將樣本的特徵值轉換爲標準值(z值),每一個樣本點都對標準化產生影響。spa

 

爲何要進行特徵縮放?

1. 統一特徵的權重&提高模型準確性rest

若是某個特徵的取值範圍比其餘特徵大不少,那麼數值計算(好比說計算歐式距離)就受該特徵的主要支配。但實際上並不必定是這個特徵最重要,一般須要把每一個特徵當作同等重要。歸一化/標準化數據可使不一樣維度的特徵放在一塊兒進行比較,能夠大大提升模型的準確性。orm

 

2. 提高梯度降低法的收斂速度

在使用梯度降低法求解最優化問題時, 歸一化/標準化數據後能夠加快梯度降低的求解速度。

 

 

具體使用哪一種方法進行特徵縮放?

在須要使用距離來度量類似性的算法中,或者使用PCA技術進行降維的時候,一般使用標準化(standardization)均值歸一化(mean normalization)比較好,但若是數據分佈不是正態分佈或者標準差很是小,以及須要把數據固定在 [0, 1] 範圍內,那麼使用最大最小值歸一化(min-max normalization)比較好(min-max 經常使用於歸一化圖像的灰度值)。可是min-max比較容易受異常值的影響,若是數據集包含較多的異常值,能夠考慮使用穩鍵歸一化(robust normalization)。對於已經中心化的數據或稀疏數據的縮放,比較推薦使用最大絕對值歸一化(max abs normalization ),由於它會保住數據中的0元素,不會破壞數據的稀疏性(sparsity)。

 

哪些機器學習模型必須進行特徵縮放?

經過梯度降低法求解的模型須要進行特徵縮放,這包括線性迴歸(Linear Regression)、邏輯迴歸(Logistic Regression)、感知機(Perceptron)、支持向量機(SVM)、神經網絡(Neural Network)等模型。此外,近鄰法(KNN),K均值聚類(K-Means)等須要根據數據間的距離來劃分數據的算法也須要進行特徵縮放。主成分分析(PCA),線性判別分析(LDA)等須要計算特徵的方差的算法也會受到特徵縮放的影響。

 

決策樹(Decision Tree),隨機森林(Random Forest)等基於樹的模型不須要進行特徵縮放,由於特徵縮放不會改變樣本在特徵上的信息增益。

 

進行特徵縮放的注意事項:

須要先把數據拆分紅訓練集與驗證集,在訓練集上計算出須要的數值(如均值和標準值),對訓練集數據作標準化/歸一化處理(不要在整個數據集上作標準化/歸一化處理,由於這樣會 將驗證集的信息帶入到訓練集中,這是一個很是容易犯的錯誤),而後再用以前計算出的數據(如均值和標準值)對驗證集數據作相同的標準化/歸一化處理。

 

參考:http://sklearn.lzjqsdd.com/modules/preprocessing.html

           https://sebastianraschka.com/Articles/2014_about_feature_scaling.html

           https://scikit-learn.org/stable/modules/preprocessing.html#preprocessing-scaler

相關文章
相關標籤/搜索