機器學習之數據歸一化問題


1.機器學習中,為何要經常對數據做歸一化:

1)歸一化后加快了梯度下降求最優解的速度;2)歸一化有可能提高精度。

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

如下圖所示,藍色的圈圈圖代表的是兩個特征的等高線。其中左圖兩個特征X1和X2的區間相差非常大,X1區間是[0,2000],X2區間是[1,5],
其所形成的等高線非常尖。當使用梯度下降法尋求最優解時,很有可能走“之字型”路線(垂直等高線走),從而導致需要迭代很多次才能收斂;
而右圖對兩個原始特征進行了歸一化,其對應的等高線顯得很圓,在梯度下降進行求解時能較快的收斂。
如果機器學習模型使用梯度下降法求最優解時,歸一化往往非常有必要,否則很難收斂甚至不能收斂。

 

2)歸一化有可能提高精度

     

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

2.歸一化的類型

 

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

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

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

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

 

 

 

3.哪些機器學習不需要做歸一化處理:

概率模型不需要歸一化,因為它們不關心變量的值,而是關心變量的分布和變量之間的條件概率,如決策樹、rf。
而像adaboost、svm、lr、KNN、KMeans之類的最優化問題就需要歸一化。

4.樹形結構為什么不需要進行歸一化:

 

數值縮放,不影響分裂點位置。因為第一步都是按照特征值進行排序的,排序的順序不變,那么所屬的分支以及分裂點就不會有不同。
對於線性模型,比如說LR,我有兩個特征,一個是(0,1)的,一個是(0,10000)的,這樣運用梯度下降時候,損失等高線是一個橢圓的形狀,
這樣我想迭代到最優點,就需要很多次迭代,但是如果進行了歸一化,那么等高線就是圓形的,那么SGD就會往原點迭代,需要的迭代次數較少。 另外,注意樹模型是不能進行梯度下降的,因為樹模型是階躍的,階躍點是不可導的,並且求導沒意義,
所以樹模型(回歸樹)尋找最優點事通過尋找最優分裂點完成的。

 

 

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM