1、归一化定义



归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。归一化的原因是什么那?



2、归一化原因



把不同来源的数据统一到一个参考系下,这样比较起来才有意义。



简单的举个例子:一张表有两个变量,一个是体重kg,一个是身高cm。假设一般情况下体重这个变量均值为60(kg),身高均值为170(cm)。1,这两个变量对应的单位不一样,同样是100,对于身高来说很矮,但对于体重来说已经是超重了。另外,单位越小,数值越大,对结果的影响也越大,譬如170cm=1700mm。 简单讲,归一化的目的是可以用数值来直接进行比较,如果不归一化由于变量特性不同,同样加10,代表的意义不一样。



二是,保正程序运行时收敛加快,大部分模型归一化后收敛速度会加快。例如,下面的例子,房间数和面积数不在一个量纲上,面积数值太小,房间数太大,成椭圆状,按照梯度收敛速度会慢,理想的是数据类似圆圈的形状,经过有限几个步骤则收敛了。




特征标准化python 特征标准化的含义_特征标准化python

特征标准化python 特征标准化的含义_数据_02



三是,要注意的是,有的模型在归一化之后会影响效果,有的模型则不会。对于归一化是否影响模型效果,主要看模型是否具有伸缩不变性。



有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则 必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。
有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如标准的logistic regression 和linear regression(加正则项后,正则项可能不具备伸缩不变性),简单的树模型(各个节点各算个的切分点)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型, 最好也进行数据标准化。但SVM则必须进行归一化。 同的模型对特征的分布假设是不一样的。比如SVM 用高斯核的时候,所有维度共用一个方差,这不就假设特征分布是圆的么,输入椭圆的就坑了人家。


首先,对于gradient descent算法来说,learning rate的大小对其收敛速度至关重要。如果feature的scale不同,理论上不同的feature就需要设置不同的learning rate,但是gradient descent只有一个learning rate,这就导致不同feature的收敛效果不同,从而影响总体的收敛效果。所以在求解模型之前归一化不同feature的scale,可以有效提高gradient descent的收敛速度。

除此之外,如果feature的scale相差很大,则会出现scale越大的feature,对模型的影响越大。比如对于multivariate regression, 极端情况下, 有一个特征的值特别特别大,其他特征的值都特别特别小,那么cost function就被这个特别大的特征主导,甚至退化为univariate。即feature scale相差很大,线性回归模型得优化结果也会受到影响。


也需要注意的是,各维分别做归一化会丢失各维方差这一信息,但各维之间的相关系数可以保留

三、标准化方法


没有一种数据标准化的方法,放在每一个问题,放在每一个模型,都能提高算法精度和加速算法的收敛速度。
是否应该做数据标准化,用哪种标准化的方法,更多的是源于一种经验和尝试。
如果你长期做某个行业的某几类数据挖掘需求,自然知道选用哪种算法好,用什么标准化方法更优。这需要时间的积累,需要对数据挖掘的热情来支撑。
当然,也可以先做个较为合理的抽样(更倾向于分层抽样),比较不做数据标准化和做了数据标准化的效果,比较不同数据标准化方法之间的效果。毕竟数据总是多种多样,如果企业BI做得好,数据质量本身就高了,那其实可以偷一下懒的。反之,就多下功夫做好数据与处理,把数据打磨好了再放进模型里。方法有如下:


1、线性函数转换,表达式如下:
  y=(x-MinValue)/(MaxValue-MinValue)
  说明:x、y分别为转换前、后的值,MaxValue、MinValue分 别为样本的最大值和最小值。
  2、对数函数转换,表达式如下:
  y=log10(x)
  说明:以10为底的对数函数转换。
  3、反余切函数转换,表达式如下:
  y=atan(x)*2/PI
  4、式(1)将输入值换算为[-1,1]区间的值,在输出层用式(2)换算回初始值,其中 和分别表示训练样本集中负荷的最大值和最小值。
  在统计学中,归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在-1--+1之间是统计的坐标分布。

方法很多,min-max,z-score,p范数等


参考:
http://www.zhihu.com/question/37129350/answer/70640800 http://www.zhihu.com/question/30038463/answer/50491149

http://www.zhihu.com/question/30038463/answer/74894932


https://www.zhihu.com/question/20455227/answer/25237171