标准化和归一化——笔记总结
标准化和归一化的区别
建模校赛选拔的时候,队友没太搞得清楚标准化和归一化,索性直接百度,一看有大坑。这里先放参考文献:
标准化和归一化什么区别? - 知乎 https://www.zhihu.com/question/20467170
数据标准化/归一化normalization -csdn https://blog.csdn.net/pipisorry/article/details/52247379
"标准化"和"归一化"这两个中文词要指代四种Feature scaling(特征缩放)方法
1、Rescaling (min-max normalization) 有时简称normalization(有点坑)
将数值范围缩放到(0,1),但没有改变数据分布
2、 Mean normalization
3、Standardization(Z-score normalization)
标准化,就是常说的z-score归一化,缩放到均值为0,方差/标准差为1
4、Scaling to unit length
机器学习中常用的对特征向量进行缩放的方法,使得整个向量的长度为1,通常是用向量除以其欧几里得距离。
一般平时认为的第一种叫,归一化;第三种叫,标准化。
使用特征缩放的作用是
- 使不同量纲的特征处于同一数值量级,减少方差大的特征的影响,也就是提升精度,使模型更准确。
- 加快学习算法的收敛速度。
这两种最常用方法使用场景
1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。
2、在不涉及距离度量、协方差计算、数据不符合正态分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
原因是使用第一种方法(线性变换后),其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。而在第二种归一化方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。
log函数转换
通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:
网上很多介绍都是x*=log10(x),其实是有问题的,这个结果并非一定落到[0,1]区间上,应该还要除以log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。
atan函数转换
用反正切函数也可以实现数据的归一化。
使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,而并非所有数据标准化的结果都映射到[0,1]区间上。
Decimal scaling小数定标标准化
这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。
将属性A的原始值x使用decimal scaling标准化到x’的计算方法是:
x’=x/(10^j)
其中,j是满足条件的最小整数。
例如 假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用每个值除以1000(即,j=3),这样,-986被规范化为-0.986。
86到917,A的最大绝对值为986,为使用小数定标标准化,我们用每个值除以1000(即,j=3),这样,-986被规范化为-0.986。
本文地址:https://blog.csdn.net/weixin_43868437/article/details/107318976