為什么一些機器學習模型需要對數據進行歸一化?

b77m 9年前發布 | 133K 次閱讀 機器學習

作者:zhanlijun

針對這個問題參考了wiki的解釋: http://en.wikipedia.org/wiki/Feature_scaling。歸一化后有兩個好處:1)歸一化后加快了梯度下降求最優解的速度;2)歸一化有可能提高精度”。

1 歸一化為什么能提高梯度下降法求解最優解的速度?

斯坦福機器學習視頻做了很好的解釋: https://class.coursera.org/ml-003/lecture/21

如下圖所示,藍色的圈圈圖代表的是兩個特征的等高線。其中左圖兩個特征X1和X2的區間相差非常大,X1區間是[0,2000],X2區間是 [1,5],其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走“之字型”路線(垂直等高線走),從而導致需要迭代很多次才能收斂;

而右圖對兩個原始特征進行了歸一化,其對應的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。

因此如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。

為什么一些機器學習模型需要對數據進行歸一化?

2 歸一化有可能提高精度

一些分類器需要計算樣本之間的距離(如歐氏距離),例如KNN。如果一個特征值域范圍非常大,那么距離計算就主要取決于這個特征,從而與實際情況相悖(比如這時實際情況是值域范圍小的特征更重要)。

3 歸一化的類型

1)線性歸一化

為什么一些機器學習模型需要對數據進行歸一化?

這種歸一化方法比較適用在數值比較集中的情況。這種方法有個缺陷,如果max和min不穩定,很容易使得歸一化結果不穩定,使得后續使用效果也不穩定。實際使用中可以用經驗常量來替代max和min。

2)標準差標準化

經過處理的數據符合標準正態分布,即均值為0,標準差為1,其轉化函數為:

為什么一些機器學習模型需要對數據進行歸一化?

其中μ為所有樣本數據的均值,σ為所有樣本數據的標準差。

3)非線性歸一化

經常用在數據分化比較大的場景,有些數值很大,有些很小。通過一些數學函數,將原始值進行映射。該方法包括 log、指數,正切等。需要根據數據分布的情況,決定非線性函數的曲線,比如log(V, 2)還是log(V, 10)等。

文章出處:http://www.cnblogs.com/LBSer/p/4440590.html

 本文由用戶 b77m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!