机器学习数据处理之数据归一化、标准化
本文介绍三种归一化、标准化的方法。
1.min-max标准化(Min-max normalization)
对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
x
∗
=
x
−
m
i
n
m
a
x
−
m
i
n
x^*=\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 = l n ( x ) y = ln(x) y=ln(x),对应的归一化方法为:
x ∗ = l n ( x ) l n ( m a x ) x^*= \frac{ln(x)}{ln(max)} x∗=ln(max)ln(x)
其中 m a x max max 表示样本数据的最大值, x ∗ x^* x∗ 为标准化后值, x x x 为输入值,并且所有样本数据均要大于等于1. -
反正切函数转换方法
利用反正切函数可以实现数据的归一化,即
x ∗ = a r c t a n ( x ) ∗ ( 2 / p i ) x^*= arctan(x)*(2/pi) x∗=arctan(x)∗(2/pi)
使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上. -
L2范数归一化方法
L2范数归一化就是特征向量中每个元素均除以向量的L2范数:
x i ∗ = x i n o r m ( x ) x_i^*= \frac{x_i}{norm(x)} xi∗=norm(x)xi
其中,向量 x ( x 1 , x 2 , . . . , x n ) x(x_1,x_2,...,x_n) x(x1,x2,...,xn)的L2范数定义为:
n o r m ( x ) = x 1 2 + x 2 2 + . . . + x 1 n norm(x)=\sqrt{x_1^2+x_2^2+...+x_1^n} norm(x)=x12+x22+...+x1n
特点:转换后的数据 x ∗ x^* x∗平方和为1