专栏首页决策智能与机器学习工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd

工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd

1数据归一化

归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。

2数据归一化的目标

(1)把数变为(0,1)之间的小数

主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。

(2)把有量纲表达式变为无量纲表达式

归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。

另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。

3数据归一化的作用

数据归一化问题是数据挖掘中特征向量表达时的重要问题,当不同的特征成列在一起的时候,由于特征本身表达方式的原因而导致在绝对数值上的小数据被大数据“吃掉”的情况,这个时候我们需要做的就是对抽取出来的features vector进行归一化处理,以保证每个特征被分类器平等对待。

(1)提升模型的收敛速度

如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)

(2)提升模型的精度

归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

(3)深度学习中数据归一化可以防止模型梯度爆炸。

4 数据归一化主要方法

特征归一化常用的方法包含如下几种:

• 简单缩放

• 逐样本均值消减(也称为移除直流分量)

• 特征标准化(使数据集中所有特征都具有零均值和单位方差)

一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化。

• 归一化后加快了梯度下降求最优解的速度;

• 归一化有可能提高精度;

(1)简单缩放 | min-max标准化(Min-max normalization) | 离差标准化

在简单缩放中,我们的目的是通过对数据的每一个维度的值进行重新调节(这些维度可能是相互独立的),使得最终的数据向量落在 [0,1]或[ − 1,1] 的区间内(根据数据情况而定)。这对后续的处理十分重要,因为很多默认参数(如 PCA-白化中的 epsilon)都假定数据已被缩放到合理区间。 例子:在处理自然图像时,我们获得的像素值在 [0,255] 区间中,常用的处理是将这些像素值除以 255,使它们缩放到 [0,1] 中.

这种算法是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

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

max: 样本数据的最大值

min: 为样本数据的最小值

这种归一化方法比较适用在数值比较集中的情况。但是,如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定,实际使用中可以用经验常量值来替代max和min。而且当有新数据加入时,可能导致max和min的变化,需要重新定义。

在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。

(2)标准差标准化 | z-score 0均值标准化(zero-mean normalization)

经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

• x = (x - u)/σ

o u: 所有样本数据的均值

o σ: 为所有样本数据的标准差。

在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

(3)非线性归一化

经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

5数据归一化的实现代码

对二维数组进行线性归一化:

def max_min_normalization(data_value, data_col_max_values, data_col_min_values):
""" Data normalization using max value and min value
Args:
   data_value: The data to be normalized
   data_col_max_values: The maximum value of data's columns
   data_col_min_values: The minimum value of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
   for j in xrange(0, data_cols, 1):
       data_value[i][j] =
           (data_value[i][j] - data_col_min_values[j]) /
           (data_col_max_values[j] - data_col_min_values[j])

标准差归一化

def standard_deviation_normalization(data_value, data_col_means,
                                data_col_standard_deviation):
""" Data normalization using standard deviation
Args:
   data_value: The data to be normalized
   data_col_means: The means of data's columns
   data_col_standard_deviation: The variance of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
   for j in xrange(0, data_cols, 1):
       data_value[i][j] =
           (data_value[i][j] - data_col_means[j]) /
           data_col_standard_deviation[j]

非线性归一化(以lg为例)

def nonlinearity_normalization_lg(data_value_after_lg,
                             data_col_max_values_after_lg):
""" Data normalization using lg
Args:
   data_value_after_lg: The data to be normalized
   data_col_max_values_after_lg: The maximum value of data's columns
"""
data_shape = data_value_after_lg.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
   for j in xrange(0, data_cols, 1):
       data_value_after_lg[i][j] =
           data_value_after_lg[i][j] / data_col_max_values_after_lg[j]

本文分享自微信公众号 - 决策智能与机器学习(AIfreak),作者:冰水

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python基础知识图谱“小白篇” | 附宝典下载 | 算法基础(14)

    作为数据科学与程序之间的无缝连接桥梁,Pyhon已经毋庸置疑是必备利器,遍历一下算法工程师的JD中对编程语言的要求,就知道我说的是什么意思了。

    用户7623498
  • 【自动驾驶专题】|小白都会玩的自动驾驶算法

    今天,我们介绍一个可实现自动驾驶的简单算法。本算法是在Udacity的Self-Driving Car Simulator模拟器环境下开发,将摄像头的图像输入到...

    用户7623498
  • 用户体验、AI和ML「AI产品/工程落地」

    人工智能(AI)和机器学习(ML)现在都是热门话题,这是理所当然的,因为它们对重新定义商业的许多方面做出了重大贡献。然而,很多人仍然对人工智能和ML在提升客户体...

    用户7623498
  • 新基建下,智慧交通发展新规划:智慧隧道监控可视化系统

    随着当代经济的发展,交通环境日益紧张,加上山区地区的交通运输的需求,隧道的交通建设开发方兴未艾。隧道交通的规划越来越完备,而对于隧道内监控管理维护却显得有些不足...

    HT_hightopo
  • 微信公众号链接小程序HTML代码

    似水的流年
  • 新基建下,智慧交通发展新规划:智慧隧道监控可视化系统

    随着当代经济的发展,交通环境日益紧张,加上山区地区的交通运输的需求,隧道的交通建设开发方兴未艾。隧道交通的规划越来越完备,而对于隧道内监控管理维护却显得有些不足...

    HT for Web
  • WebGL 3D 工业隧道监控实战

    HT_hightopo
  • Python_冒泡排序

    从小到大的排序:(最前面的数和一步步和后面的数比较,如果大于则交换,如果不大于则继续循环)

    py3study
  • 稀疏矩阵及其实现

    李志伟
  • WordPress发布/更新文章、提交/审核评论自动清理VeryCloud缓存

    上一篇文章分享了WordPress 发布文章评论自动刷新腾讯云 CDN 的教程,而博客现在还用到了 VeryCloud 的 CDN,正好有朋友在文章后面留言说 ...

    张戈

扫码关注云+社区

领取腾讯云代金券