天天看點

特征縮放(Feature Scaling)

特征縮放的幾種方法:

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

特征縮放(Feature Scaling)

(2)均值歸一化(mean normalization):将數值範圍縮放到 [-1, 1] 區間裡,且資料的均值變為0

特征縮放(Feature Scaling)

(3)标準化 / z值歸一化(standardization / z-score normalization):将數值縮放到0附近,且資料的分布變為均值為0,标準差為1的标準正态分布(先減去均值來對特征進行 中心化 mean centering 處理,再除以标準差進行縮放)

特征縮放(Feature Scaling)

(4)最大絕對值歸一化(max abs normalization ):也就是将數值變為機關長度(scaling to unit length),将數值範圍縮放到 [-1, 1] 區間裡

特征縮放(Feature Scaling)

(5)穩鍵标準化(robust standardization):先減去中位數,再除以四分位間距(interquartile range),因為不涉及極值,是以在資料裡有異常值的情況下表現比較穩健

特征縮放(Feature Scaling)

* 有一些時候,隻對資料進行中心化和縮放是不夠的,還需對資料進行白化(whitening)處理來消除特征間的線性相關性。

歸一化和标準化的差別:

歸一化(normalization):歸一化是将樣本的特征值轉換到同一量綱下,把資料映射到[0,1]或者[-1, 1]區間内。

标準化(standardization):标準化是将樣本的特征值轉換為标準值(z值),每個樣本點都對标準化産生影響。

為什麼要進行特征縮放?

1. 統一特征的權重&提升模型準确性

如果某個特征的取值範圍比其他特征大很多,那麼數值計算(比如說計算歐式距離)就受該特征的主要支配。但實際上并不一定是這個特征最重要,通常需要把每個特征看成同等重要。歸一化/标準化資料可以使不同次元的特征放在一起進行比較,可以大大提高模型的準确性。

2. 提升梯度下降法的收斂速度

在使用梯度下降法求解最優化問題時, 歸一化/标準化資料後可以加快梯度下降的求解速度。

特征縮放(Feature Scaling)

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

在需要使用距離來度量相似性的算法中,或者使用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

繼續閱讀