特徵縮放(feature scaling)
阿新 • • 發佈:2018-12-10
機會永遠留給有準備的人,不積跬步,無以至千里,厚積而薄發,與大家共勉!加油!
博主最近在學習吳恩達的機器學習課程,將一些日常學習本人認為重要的地方在此記錄,與大家分享,如有錯誤,請大家不吝賜教! github:https://github.com/ScathonLin
在梯度下降演算法運用中,如果能保證不同特徵的取值在相同或者相近的範圍內,比如都處於0-1之間,那麼梯度下降演算法將會能很很快的收斂。
例如,一個含有兩個特徵的訓練樣本集,其中
number of bedrooms(1-5)
此時,X1 是遠遠大於X2的,所以此時對應的輪廓圖將很瘦很高,如下圖所示:
這樣造成的結果很可能就是,梯度在下降過程中走了很多的“彎路”,來回震盪,收斂速度很慢,解決辦法就是:特徵縮放 。
- 特徵縮放方法
對於上述例子,我們可以將特徵值進行如下轉換,即可將兩個特徵值範圍儘可能靠近,甚至相同:
這樣, 並且 ,這樣的話,最終的輪廓影象就很“圓”,
這樣,梯度下降演算法就會很快的收斂。
- 一般解決方案:均值歸一化
假設一個訓練集有m個樣本,n個屬性, 其中 代表第i個樣本的第j個屬性的值,代表所有樣本第j個屬性的值的平均值,代表所有樣本第j個屬性的最大值。下圖是教程視訊中的解釋。
注意,不要用因為。
也可以將上面的用這個式子來替換,其實就是將分母變成了max-min,