走向人工智能 —— 数据预处理之归一化

数据归一化是为了将不同表征的数据规约到相同的尺度内,常见的尺度范围有[-1, 1],[0, 1]。对于神经网络、支持向量机(SVM),在数据预处理中使用归一化是必不可少的。当然,对于一些模型,归一化也不是必需的,例如决策树。

数据归一化方法:

一、线性归一化(LinearNormalization):

f(x) = (x - min) / (max - min)

其中,min和max分别代表x所属区间的最小值和最大值。

特点:数据被均匀地归一到0~1之间;

需求:目标值的上界和下界是明确知晓的,例如上图中,我们假设了目标值的最小值为0,最大值为1。

这种归一化方式是我们最常见的,在大多数问题中都可以使用,例如在图像识别中,将图像的灰度值0~255归整到0~1内。

二、Sigmod归一化(SigmodNormalization):

f(x) = 1 / (1 + exp(-ax+b))

假设a=0.1,b=5,其图像为

这种归一化方式,当我们对数据分布的中间地带需要着重分析,而对两端数据并不是很敏感时,可以使用,具体的a和b根据问题去调整,其中a影响的是上图中蓝色曲线的陡峭程度,b影响的是曲线的平移。

假设我们需要预测人们幸福感的高低,选择的影响因素有年龄、学历、收入高低等。数据样本中,绝大多数分布在年收入5w-40w,但是也有极端的在0.5w的极低收入和1000w的极高收入,并且我们还发现,在7w-15w这个区间内,人们的幸福感对收入的高低非常敏感。当然在一些简单处理中,可以设定一个区间范围,例如[1w, 100w],然后将小于1w的当作1w,将高于100w的当作100w,但是这种处理是相对简单粗暴的,为了不消除极端数据的效果,以及充分考虑中间敏感区间,我们可以使用Sigmod归一化方式,能够有效地扩大中间数据的差异性。

与该思想类似的还有反正切函数归一化:

f(x) = atan(ax-b) / PI

其中,PI为圆周率3.14159…

特点:数据按“敏感性的平均化”被归一到0~1之间;

需求:目标值的上界和下界不需要明确知晓,并且对两端数据值不敏感,而对中间部分的数据值敏感。

三、Z-score归一化(Z-scoreNormalization):

f(x) = (x - q) / s

其中,q是原始数据x的均值,s是原始数据的标准差。归一化的数据符合正态分布,并且其均值为0,标准为1。

Z-score表示原始数据偏离均值的距离长短,而该距离度量的标准是标准方差。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果并不好。Z-score的数据分布如下图所示:

对于较大数量的数据而言,将会有68.26%的数据归一化到[-1, 1]之间,95.44%的数据归一化到[-2., 2]之间99%的数据归一到[-3, 3]之间。

特点:根据数据值的分布情况来进行分布概率的归一化。

需求:原始数据至少近似呈现正态分布。返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。