【轉】常用數據標准化(歸一化)的方法


源:為什么一些機器學習模型需要對數據進行歸一化? - zhanlijun - 博客園

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

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

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

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

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

 

 

源地址:http://blog.sina.com.cn/s/blog_8808cae20102vg53.html


1 什么是數據標准化(Normalization

將數據按比例縮放,使之落入一個小的特定區間。在某些比較評價的指標處理中經常會用到,去除數據的單位限制,將其轉化為無量綱的純數值便於不同單位或量級的指標能夠進行比較和加權

2 有哪些常用方法呢?

方法一:規范化方法(離差標准化)

對原始數據的線性變換,使結果映射到[0,1]區間。

這種方法有一個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。

 

 


 方法二:正規化方法

 

 

  • 這種方法基於原始數據的均值(mean)和標准差(standard deviation)進行數據的標准化。將A的原始值x使用z-score標准化到x’。
  • z-score標准化方法適用於屬性A的最大值和最小值未知的情況,或有超出取值范圍的離群數據的情況。
    標准化后的變量值圍繞0上下波動,大於0說明高於平均水平,小於0說明低於平均水平。

方法三:歸一化方法

 

 

方法四: log函數轉換

通過以10為底的log函數轉換的方法同樣可以實現歸一下,具體方法如下: 看了下網上很多介紹都是x*=log10(x),其實是有問題的,這個結果並非一定落到[0,1]區間上,應該還要除以log10(max),max為樣本數據最大值,並且所有的數據都要大於等於1。

方法五: atan函數轉換

用反正切函數也可以實現數據的歸一化: 使用這個方法需要注意的是如果想映射的區間為[0,1],則數據都應該大於等於0,小於0的數據將被映射到[-1,0]區間上。y=atan(x)*2/PI


免責聲明!

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



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