探討"特徵縮放"

緒論

一、本文首先基於線性迴歸(Linear Regression)回答下列三個問題:
1 特徵縮放的想法(idea)
2 特徵縮放的好處以及適用情況
3 使用特徵縮放、不使用特徵縮放求出參數(theta)之間的對應關係,以及如何從代數變化、python編程角度說明如何將前者求解出的參數轉化成後者求解出參數。

二、進而基於除線性迴歸的其他機器學習算法,回答下列三個問題:
1.爲什麼要進行特徵縮放
2.哪些機器學習模型必須進行特徵縮放
3.特徵縮放的注意事項。
特徵縮放(Feature Scaling)

三、最後給出特徵縮放的5種方法:
1.最大最小值歸一化(min-max normalization)
2.均值歸一化(mean normalization)
3.標準化/z值歸一化(standardization/z-score normalization)
4.最大絕對值歸一化(max abs normalization)
5.穩健標準化(robust standardization)

一、

1. 特徵縮放的想法:讓每一種特徵都處於一個相類似的範圍,一般大約在[-1, 1]區間範圍內。
爲什麼有“大約”,因爲下列情況都是可取的:
x0=1x_0 = 1 (顯然可取)
0x130≤x_1≤3(可取,和[-1,1]範圍較接近)
2x20.5-2≤x_2≤0.5 (可取,和[-1,1]範圍較接近)
100x3100-100≤x_3≤100不可取,比[-1,1]範圍大得多)
0.0001x40.0001-0.0001≤x_4≤0.0001不可取,比[-1,1]範圍小得多)
3x53-3≤x_5≤3 (可取,和[-1,1]範圍較接近)
1/3x61/3-1/3≤x_6≤1/3 (可取,和[-1,1]範圍較接近)

2.特徵縮放適用情況以及好處
正規方程法(Normal Equation)的方法不需要進行特徵縮放。
梯度下降法(Gradient Descent)的方法在不同特徵的所處範圍相差很大時,需要進行特徵縮放。特徵縮放可以減小梯度下降的迭代次數。如下圖所示,左邊的圖對應不同特徵的範圍相差很大卻爲進行特徵縮放,此時函數的等值線圖是一個個扁形的橢圓組合而成;右邊的圖對應進行特徵縮放後的等值線圖,圖是一個個圓組合而成的。如圖所示,後者收斂到局部最優解的迭代次數比前者的更少。
圖1
**3.**使用特徵縮放、不使用特徵縮放求出參數(theta)之間的對應關係,以及如何從代數變化、python編程角度說明如何將前者求解出的參數轉化成後者求解出參數。
首先,解釋使用特徵縮放、不使用特徵縮放求出參數(theta)之間的對應關係。
圖2
進而展示python實現如何將前者求解出的參數轉化成後者求解出參數。

def theta_transform(theta, means, stds):
    temp = theta[1:] * means[0:-1] / stds[0:-1]
    theta[0] = (theta[0] -  np.sum(temp)) * stds[-1] + means[-1]
    theta[1:] = theta[1:] * stds[-1] / stds[0:-1]
    return theta
theta = theta_transform(theta1, means, stds)

二、

1.爲什麼要進行特徵縮放
因爲要統一特徵權重&提升模型準確性。
如果某個特徵的取值範圍比其他特徵大很多,那麼數值計算(比如說計算歐式距離)就受到該特徵主要支配。但實際上並不一定是這個特徵最重要,通常需要把每個特徵看成同等重要。歸一化(normalization)/標準化(standardization)數據可以使不同維度的特徵放在一起進行比較,可以大大提高模型準確性。

2.哪些機器學習模型必須進行特徵縮放
通過梯度下降法求解的模型需要進行特徵縮放。這包括線性迴歸、邏輯迴歸(logistic regression )、感知機(Perception)、支持向量機(SVM)、神經網絡(Neural Network)。
此外,近鄰法(KNN),K均值聚類(K-Means)等需要根據數據間的距離來劃分數據的算法也需要特徵縮放。主成分分析(PCA)、線性判別分析(LDA)等需要計算特徵的方差的算法會受特徵縮放的影響。
決策樹(Decision Tree),隨機森林(Random Forest)等基於樹的模型不需要進行特徵縮放,因爲特徵縮放不會改變樣本在特徵上的信息增益。

3.特徵縮放的注意事項。
先把數據拆分成訓練集和驗證集,在訓練集上計算出需要的數值(如均值和標準值),對訓練集數據做標準化/歸一化處理(不要在整個數據集上做標準化/歸一化處理,因爲這樣會將驗證集的信息帶入到訓練集中,這是一個非常容易犯的錯誤),然後再用之前計算出的數據(如均值和標準值)對驗證集數據做相同標準化/歸一化處理。

三、特徵縮放的幾種方法:

(1)最大最小值歸一化(min-max normalization):將數值範圍放到[0,1]區間裏
圖3(2)均值歸一化(mean normalization):將數值範圍縮放到[-1,1]區間裏,且數據的均值變爲0。
圖4(3)標準化/z值歸一化(standardization/z-score normalization):將數值縮放到0附近,且數據的分佈變爲均值爲0,標準差爲1的標準正態分佈(先減去均值來對特徵進行 中心化 mean centering處理,在處理標準差進行縮放)
圖5(4)最大絕對值歸一化(max abs normalization):也就是將數值變爲單位長度(scaling to unit length),將數值範圍縮放到[-1,1]區間裏。
圖6(5)穩健標準化(robust standardization):先減去中位數,再除以四分位間距(interquartile range),因爲不涉及極值,因此在數據裏有異常值的情況下表現比較穩健。
在這裏插入圖片描述

最後

關於“歸一化和標準化的區別”、“選用哪種方法進行特徵縮放”,請見https://www.cnblogs.com/HuZihu/p/9761161.html

參考:
[1]https://www.zhihu.com/question/275019388/answer/1063963309 知乎回答(清波 回答)
[2]https://www.cnblogs.com/HuZihu/p/9761161.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章