爲何一些機器學習模型須要對數據進行歸一化?

爲何一些機器學習模型須要對數據進行歸一化?

http://www.cnblogs.com/LBSer/p/4440590.htmlhtml

    機器學習模型被互聯網行業普遍應用,如排序(參見:排序學習實踐)、推薦、反做弊、定位(參見:基於樸素貝葉斯的定位算法)等。通常作機器學習應用的時候大部分時間是花費在特徵處理上,其中很關鍵的一步就是對特徵數據進行歸一化,爲何要歸一化呢?不少同窗並未搞清楚,維基百科給出的解釋:1)歸一化後加快了梯度降低求最優解的速度;2)歸一化有可能提升精度。下面我簡單擴展解釋下這兩點。算法

1 歸一化爲何能提升梯度降低法求解最優解的速度?

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

      以下圖所示,藍色的圈圈圖表明的是兩個特徵的等高線。其中左圖兩個特徵X1和X2的區間相差很是大,X1區間是[0,2000],X2區間是[1,5],其所造成的等高線很是尖。當使用梯度降低法尋求最優解時,頗有可能走「之字型」路線(垂直等高線走),從而致使須要迭代不少次才能收斂;函數

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

      所以若是機器學習模型使用梯度降低法求最優解時,歸一化每每很是有必要,不然很難收斂甚至不能收斂。學習

2 歸一化有可能提升精度

     一些分類器須要計算樣本之間的距離(如歐氏距離),例如KNN。若是一個特徵值域範圍很是大,那麼距離計算就主要取決於這個特徵,從而與實際狀況相悖(好比這時實際狀況是值域範圍小的特徵更重要)。url

3 歸一化的類型

1)線性歸一化

x' = \frac{x - \text{min}(x)}{\text{max}(x)-\text{min}(x)}

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

2)標準差標準化

  通過處理的數據符合標準正態分佈,即均值爲0,標準差爲1,其轉化函數爲:視頻

  其中μ爲全部樣本數據的均值,σ爲全部樣本數據的標準差。htm

3)非線性歸一化

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

相關文章
相關標籤/搜索