原文地址:http://www.sohu.com/a/124676606_598701
相关文章阅读:http://blog.csdn.net/zbc1090549839/article/details/44103801
知乎相关问题:标准化和归一化什么区别?
数据归一化是为了将不同表征的数据规约到相同的尺度内,常见的尺度范围有[-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] 之间。
特点:根据数据值的分布情况来进行分布概率的归一化。
需求:原始数据至少近似呈现正态分布。