Victoria's workshop

导航

【转】常用数据标准化(归一化)的方法

源:为什么一些机器学习模型需要对数据进行归一化? - 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

posted on 2017-06-01 14:05  xiaojin693  阅读(10058)  评论(0编辑  收藏  举报