数据的中心化是指数据集中的各项数据减去数据集的均值。
例如有数据集1, 2, 3, 6, 3,其均值为3,那么中心化之后的数据集为1-3,2-3,3-3,6-3,3-3,即:-2,-1,0,3,0
数据中心化实际上是对数据进行一个平移的过程。
数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。
例如有数据集1, 2, 3, 6, 3,其均值为3,其标准差为1.87,那么标准化之后的数据集为(1-3)/1.87,(2-3)/1.87,(3-3)/1.87,(6-3)/1.87,(3-3)/1.87,即:-1.069,-0.535,0,1.604,0
数据中心化和标准化的意义是一样的,为了消除量纲对数据结构的影响。
在R语言中可以使用scale方法来对数据进行中心化和标准化:
> data=c(1, 2, 3, 6, 3)
> mean(data)
[1] 3
> center=data-mean(data)
> center
[1] -2 -1 0 3 0
> norm=center/sd(data)
> norm
[1] -1.0690450 -0.5345225 0.0000000 1.6035675 0.0000000
> scale(data,center=TRUE,scale=FALSE)
[,1]
[1,] -2
[2,] -1
[3,] 0
[4,] 3
[5,] 0
attr(,"scaled:center")
[1] 3
> scale(data,center=TRUE,scale=TRUE)
[,1]
[1,] -1.0690450
[2,] -0.5345225
[3,] 0.0000000
[4,] 1.6035675
[5,] 0.0000000
attr(,"scaled:center")
[1] 3
attr(,"scaled:scale")
[1] 1.870829
scale方法中的两个参数center和scale的解释:
1.center和scale默认为真,即T或者TRUE
2.center为真表示数据中心化
3.scale为真表示数据标准化
Z-score是最长用的标准化方法。也是SPSS中最常用的标准化方法
用公式表示为:z=(x-μ)/σ
其中z为标准分数;μ为平均数,σ为标准差。
对原始数据的线性变换,使结果落到[0,1]区间。其中max为样本数据的最大值,min为样本数据的最小值。
x* = (x-min) /(max-min)
这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
通过以10为底的log函数转换的方法同样可以实现归一下
x* = log10(x) / log10(max)
max为样本数据最大值,并且所有的数据都要大于等于1。
用反正切函数实现数据的归一化。
x*=atan(x)*2/pi
使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上。