一、数据标准化的意义:

1、数据的量纲不同;数量级差别很大

经过标准化处理后,原始数据转化为无量纲化指标测评值,各指标值处于同一数量级别,可进行综合测评分析。

如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。

2、避免数值问题:太大的数会引发数值问题。

3、平衡各特征的贡献

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。

如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

4、一些模型求解的需要:加快了梯度下降求最优解的速度

二、方法

归一化:

1)把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。

常用方法:

(1)Min-Max Normalization
   x' = (x - X_min) / (X_max - X_min)

(2)平均归一化
   x' = (x - μ) / (MaxValue - MinValue)
  (1)和(2)有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

(3)非线性归一化
  1)对数函数转换:y = log10(x)
  2)反余切函数转换:y = atan(x) * 2 / π
  (3)经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

标准化:

在机器学习中,我们可能要处理不同种类的资料,例如,音讯和图片上的像素值,这些资料可能是高维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均)、标准差变为1,这个方法被广泛的使用在许多机器学习算法中(例如:支持向量机、逻辑回归和类神经网络)。

常用方法:

Z-score规范化(标准差标准化 / 零均值标准化)
  x' = (x - μ)/σ
处理后的数据符合标准正态分布,即均值为0,标准差为1

中心化:

平均值为0,对标准差无要求

常用方法:
  x' = x - μ

归一化和标准化的区别:

归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

标准化和中心化的区别:

标准化是原始分数减去平均数然后除以标准差,中心化是原始分数减去平均数。 所以一般流程为先中心化再标准化。

无量纲:我的理解就是通过某种方法能去掉实际过程中的单位,从而简化计算

使用经验,什么时候用归一化?什么时候用标准化?
  (1)如果对输出结果范围有要求,用归一化。
  (2)如果数据较为稳定,不存在极端的最大最小值,用归一化。
  (3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

必须用到归一化和标准化的场景:

(1)SVM
  不同的模型对特征的分布假设是不一样的。比如SVM 用高斯核的时候,所有维度共用一个方差,这不就假设特征分布是圆的么,输入椭圆的就坑了人家,所以简单的归一化都还不够好,来杯白化才有劲。比如用树的时候就是各个维度各算各的切分点,没所谓。

(2)KNN
  需要度量距离的模型,一般在特征值差距较大时,都会进行归一化/标准化。不然会出现“大数吃小数”。

(3)神经网络
   初始化:在初始化时我们希望每个神经元初始化成有效的状态,tansig(tanh)函数在[-1.7, 1.7]范围内有较好的非线性,所以我们希望函数的输入和神经元的初始化都能在合理的范围内使得每个神经元在初始时是有效的。(如果权值初始化在[-1,1]且输入没有归一化且过大,会使得神经元饱和)
  梯度:以输入-隐层-输出这样的三层BP为例,我们知道对于输入-隐层权值的梯度有2ew(1-a^2)*x的形式(e是誤差,w是隐层到输出层的权重,a是隐层神经元的值,x是输入),若果输出层的数量级很大,会引起e的数量级很大,同理,w为了将隐层(数量级为1)映身到输出层,w也会很大,再加上x也很大的话,从梯度公式可以看出,三者相乘,梯度就非常大了。这时会给梯度的更新带来数值问题。
    学习率:由(2)中,知道梯度非常大,学习率就必须非常小,因此,学习率(学习率初始值)的选择需要参考输入的范围,不如直接将数据归一化,这样学习率就不必再根据数据范围作调整。 隐层到输出层的权值梯度可以写成 2ea,而输入层到隐层的权值梯度为 2ew(1-a^2)x ,受 x 和 w 的影响,各个梯度的数量级不相同,因此,它们需要的学习率数量级也就不相同。对w1适合的学习率,可能相对于w2来说会太小,若果使用适合w1的学习率,会导致在w2方向上步进非常慢,会消耗非常多的时间,而使用适合w2的学习率,对w1来说又太大,搜索不到适合w1的解。如果使用固定学习率,而数据没归一化,则后果可想而知。

(4)PCA

直观解释

参考:

归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered) 
 https://www.jianshu.com/p/95a8f035c86c
数据标准化 Data Normalizationhttps://blog.csdn.net/sunlilan/article/details/71512223
标准化和归一化什么区别? - 知乎:https://www.zhihu.com/question/20467170
R--数据标准化、归一化、中心化处理:https://zhuanlan.zhihu.com/p/33727799
特征工程中的[归一化]有什么作用? - 知乎:https://www.zhihu.com/question/20455227
神经网络为什么要归一化:http://nnetinfo.com/nninfo/showText.jsp?id=37

数据预处理之标准化(Standardization)、归一化(Normalization)、中心化/零均值化(Zero-centered)相关推荐

  1. 归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)...

    博主学习的源头,感谢!https://www.jianshu.com/p/95a8f035c86c 归一化 (Normalization).标准化 (Standardization)和中心化/零均值化 ...

  2. 矩阵归一化、标准化、中心化/零均值化

    import numpy as npX = np.random.randint(0,5,[4,4]).astype(float)print(X)X-=np.mean(X,axis=0)X/=np.st ...

  3. 深度学习数据预处理——批标准化(Batch Normalization)

    数据预处理最常见的方法就是中心化和标准化,中心化相当于修正数据的中心位置,实现方法非常简单,就是在每个特征维度上减去对应的均值,最后得到 0 均值的特征.标准化也非常简单,在数据变成 0 均值之后,为 ...

  4. 数据预处理|关于标准化和归一化的一切

    数据预处理是最令数据科学家头秃的工作 之前在知乎看过一个问题你为什么离开数据科学行业?一位知友est答曰:数据清洗10小时,拟合2分钟,如此重复996. 这条回答下面的评论更是精彩,居然真的会眼瞎.. ...

  5. 均值归一化_数据预处理:标准化和归一化

    网上很多关于标准化和归一化的文章,不少是误人子弟的存在.这篇文字希望给大家讲清讲透这两个概念. 一.标准化(standardization) 公式一般为:(X-mean)/std,其中mean是平均值 ...

  6. 归一化 (Normalization)、标准化 (Standardization)和中心/零均值化 (Zero-centered)

    目录 一.概念 1.归一化(Normalization): 2.标准化(Standardization): 3.中心化/零均值化(zero-centered): 二.联系和差异: 三.标准化和归一化的 ...

  7. matlab 均值中心化,数据预处理之中心化(零均值化)与标准化(归一化)

    在机器学习回归问题,以及训练神经网络过程中,通常需要对原始数据进行中心化(零均值化)与标准化(归一化)处理. 背景 在数据挖掘数据处理过程中,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响 ...

  8. 数据预处理之归一化/标准化/正则化/零均值化

    数据预处理之归一化/标准化/正则化/零均值化 一.标准化(Standardization) 二.归一化(Normalization) 三,中心化/零均值化 (Zero-centered) 四.正则化 ...

  9. 数据预处理之中心化(零均值化)与标准化(归一化)

    数据预处理之中心化(零均值化)与标准化(归一化) 目的: 通过中心化和标准化处理,最终得到均值为0,标准差为1的服从标准正态分布的数据.可以取消由于量纲不同.自身变异或者数值相差较大所引起的误差. 原 ...

最新文章

  1. 分布式数据库灵活存储机制与应用实践
  2. python官网 中文版 新闻-新闻主页 - python兵者 - 博客园
  3. 蓝牙耳机和蓝牙鼠标相互干扰_TWS蓝牙耳机哪个牌子好?主流无线蓝牙耳机推荐...
  4. Triangular Sums http://acm.nyist.net/JudgeOnline/problem.php?pid=122
  5. 数字光端机和模拟视频光端机的六个不同点
  6. java名片_javaweb名片管理系统
  7. TCP/IP中的传输层协议TCP、UDP
  8. mysql 变量赋值 in_MySQL 存储过程传参数实现where id in(1,2,3,...)实例效果
  9. IDEA 查看源码快捷键
  10. C++奥赛一本通排序题解
  11. MYISAM表的.frm、MYI损坏,丢失的修复方法
  12. python库之pyserial用法,pyserial和serial的区别
  13. 关于腾讯云服务器备案全流程 内容
  14. 中国数字乳房断层合成(DBT)设备市场趋势报告、技术动态创新及市场预测
  15. 八、基于FPGA的以太网协议介绍(二)
  16. 将.pyc反编译成.py
  17. word2003如何删除页眉?
  18. 微信公众号 二维码场景统计 场景二维码
  19. 数据预处理的步骤和方法
  20. IDEA Maven 依赖分析插件Maven Helper

热门文章

  1. 那些不经意间想留下的英文
  2. 职场中的行为: 渔,鱼,摸鱼
  3. win10 设置默认输入法为英文,ctrl +shift切换中文
  4. Java工程师学习路线
  5. QT中QMap使用实例详解
  6. python最适合做什么-Python简直是万能的,这5大主要用途你一定要知道!
  7. read和readFully的区别! .
  8. mysql log bin 分析_MySQL bin-log分析方法
  9. ggplot2中ggsave报错:can‘t add ggsave to a ggplot object
  10. php 进程通信系列 (一) 命名管道