特征縮放的幾種方法:
(1)最大最小值歸一化(min-max normalization):將數值范圍縮放到 [0, 1] 區間里

(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] 區間里

(5)穩鍵標准化(robust standardization):先減去中位數,再除以四分位間距(interquartile range),因為不涉及極值,因此在數據里有異常值的情況下表現比較穩健
* 有一些時候,只對數據進行中心化和縮放是不夠的,還需對數據進行白化(whitening)處理來消除特征間的線性相關性。
歸一化和標准化的區別:
歸一化(normalization):歸一化是將樣本的特征值轉換到同一量綱下,把數據映射到[0,1]或者[-1, 1]區間內。
標准化(standardization):標准化是將樣本的特征值轉換為標准值(z值),每個樣本點都對標准化產生影響。
為什么要進行特征縮放?
1. 統一特征的權重&提升模型准確性
如果某個特征的取值范圍比其他特征大很多,那么數值計算(比如說計算歐式距離)就受該特征的主要支配。但實際上並不一定是這個特征最重要,通常需要把每個特征看成同等重要。歸一化/標准化數據可以使不同維度的特征放在一起進行比較,可以大大提高模型的准確性。
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