机器学习数据处理之数据归一化、标准化
本文介绍三种归一化、标准化的方法。
1.min-max标准化(Min-max normalization)
对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
x∗=x−minmax−minx^*=\frac{x-min}{max-min}x∗=max−minx−min
- 注意事项
max,min 必须是固定的
2.z-score(标准差) 标准化
对原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。
经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
x∗=x−μσx^* = \frac{x - μ }{σ}x∗=σx−μ
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
3.nonlinearity(非线性) 归一化
非线性归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。
该方法包括 log,正切等,需要根据数据分布的情况,决定非线性函数的曲线:
-
对数函数转换方法
比如 y=ln(x)y = ln(x)y=ln(x),对应的归一化方法为:
x∗=ln(x)ln(max)x^*= \frac{ln(x)}{ln(max)}x∗=ln(max)ln(x)
其中 maxmaxmax 表示样本数据的最大值,x∗x^*x∗ 为标准化后值,xxx 为输入值,并且所有样本数据均要大于等于1. -
反正切函数转换方法
利用反正切函数可以实现数据的归一化,即
x∗=arctan(x)∗(2/pi)x^*= arctan(x)*(2/pi)x∗=arctan(x)∗(2/pi)
使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上. -
L2范数归一化方法
L2范数归一化就是特征向量中每个元素均除以向量的L2范数:
xi∗=xinorm(x)x_i^*= \frac{x_i}{norm(x)}xi∗=norm(x)xi
其中,向量x(x1,x2,...,xn)x(x_1,x_2,...,x_n)x(x1,x2,...,xn)的L2范数定义为:
norm(x)=x12+x22+...+x1nnorm(x)=\sqrt{x_1^2+x_2^2+...+x_1^n}norm(x)=x12+x22+...+x1n
特点:转换后的数据x∗x^*x∗平方和为1