数据标准化的方法与意义
含义
数据标准化和归一化存在区别
数据归一化是数据标准化的一种典型做法,即将数据统一映射到[0,1]区间上.
数据的标准化是指将数据按照比例缩放,使之落入一个特定的区间.
意义
求解需要
比如在SVM中处理分类问题是又是需要进行数据的归一化处理,不然会对准确率产生很大的影响,具体点说,比如避免出现因为数值过大导致c,g取值超过寻优范围除此之外,最明显的是在神经网络中的影响,主要有四个层面
- 有利于初始化的进行
- 避免给梯度数值的更新带来数值问题
- 有利于学习率数值的调整
- 搜索轨迹:加快寻找最优解速度
具体情况请参考:神经网络为什么要归一化:
http://blog.csdn.net/fontthrone/article/details/74064971
2. 加快寻找最优解(加快收敛速度)
没有归一化前,寻找最优解的过程:
归一化后的过程:
3. 无量纲化(业务上需求上的):
指去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或者量级的指标能够进行和加权.
比如身高与体重,房子数量与收入等.
4. 数值问题
不归一化的数值,比如浮点数可能会产生数值不相等的问题.
5. 数值范围减小对许多算法在纯粹的数值计算上都有一定加速作用(个人看法,虽然影响不大,但效果还是有的)
常用公式
- min-max标准化(Min-max normalization)
又名离差标准化,是对原始数据的线性转化,公式如下
含义: max : 样本最大值; min: 样本最小值;
问题: 当有新数据加入时需要重新进行数据归一化
2. z-score 标准化(zero-mean normalization)
又名标准差标准化,归一化后的数据呈正态分布,即均值为零,标准差为一公式如下:
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。与离差标准化的不同之处在于,离差标准化仅仅仅仅对原数据的的方差与均差进行了倍数缩减,而标准差标准化则使标准化的数据方差为一。这对许多的算法更加有利,但是其缺点在于假如原始数据没有呈高斯分布,标准化的数据分布效果并不好。
3. atan反正切函数标准化
公式如下:
问题: 数据必须大于零,大于零的函数将会被映射到[-1,0]上
atan函数图像如下:
4. log函数标准化
公式如下:
问题:
a . 数据必须大于等于一
b. 如果数值大于10**10(十的十次方),那么映射的数据将大于一
解决问题b 的方案,改变公式以类似于 ” min-max标准化的方式 “, 如下:
max: 样本最大值
通过 ” /log10(max) ” 值得方式,可以保证所有样本能够正确的映射到[0,1]空间,