博客 聊聊常见的数据标准化方法

聊聊常见的数据标准化方法

   小美   发表于 2022-12-16 11:23  314  0

数据的归一化是数据预处理中重要的的一步,很多种方法都可以被称作数据的归一化,例如简单的去除小数位,而更高级归一化技术才能对我们训练有所帮助,例如 z-score 归一化。


所以本文总结了 7 种常见的数据标准化(归一化)的方法。


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/ba85b4392dc49bf805ed71a6748af71b..jpg


  1. Decimal place normalization

  2. Data type normalization

  3. Formatting normalization (date abbreviations, date order, & deliminators)

  4. Z-Score normalization

  5. Linear normalization (“Max-Min”)

  6. Clipping normalization

  7. Standard Deviation Normalization

Decimal place normalization,小数位归一化


小数位归一化发生在具有数字类型的数据表中。如果你使用过 Excel,你就会知道这是如何发生的。默认情况下,Excel 会保留小数点后两位数字,也可以设定小数的位数,并在整个表格中进行统一。


Data type normalization,数据类型归一化


另一种常见是对数据类型的归一化。在 Excel 或 SQL 查询数据库中构建数据表时,可能会发现自己查看的数字数据有时被识别为货币,有时被识别为文本,有时被识别为数字,有时被识别为逗号分割的字符串。


问题是这些数值数据对公式和各种分析处理的操作是不一样的。所以就需要将它们统一成相同的类型。


Formatting normalization,格式的归一化


最后一个简单的技术是格式的归一化。这对于字符串(文本)是很常见的,并且在印刷和打印上出现的更多。虽然这些问题不会对分析产生影响,但是他可能会分散我们的注意力和现实的效果,例如斜体、粗体或下划线或者字体与其他的文字显示不一样。


Z-Score normalization


当我们的数据在多个维度上存在显著的大小差的数值时怎么办?例如,如果一个维度的值从 10 到 100,而另一个维度的值从 100 到 100,000,则很难比较两者的相对变化。


对于这个问题,目前最好的解决方案就是归一化。在日常工作中,最常见的归一化类型是 Z-Score 。简单来说,Z-Score 将数据按比例缩放,使之落入一个特定区间。公式如下:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/bea2684d316541fb925ee04cc4431a3a..jpg


其中 X 是数据值,μ 是数据集的平均值,σ 是标准差。


Linear normalization (“Max-Min”)


线性归一化可以说是更容易且更灵活的归一化技术。 它通常被称为“max-min”归一化,它允许分析人员获取集合中最大 x 值和最小 x 值之间的差值,并建立一个基数。


这是一个很好的开始策略,实际上,线性归一化可以将数据点归一化为任何基数。下是线性归一化的公式:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/d141d0b528245fe46f97592a3a3d66b7..jpg


假设“x”值为 20,最大数字为 55,最小数字为 5。为了归一化这个数字,让我们从分母开始,结果为50 (55-5) 。现在用同样的想法计算分子:x - min=15 (20–5)。所以我们标准化的 x 或 x ' 是 15/50 = 0.3。


Clipping normalization,剪裁归一化


裁剪并不完全是一种归一化技术,他其实是在使用归一化技术之前或之后使用的一个操作。简而言之,裁剪包括为数据集建立最大值和最小值,并将异常值重新限定为这个新的最大值或最小值。


例如有一个由数字 [14, 12, 19, 11, 15, 17, 18, 95] 组成的数据集。数字 95 是一个很大的异常值。我们可以通过重新分配新的最大值将其从数据中剔除。由于删除95后,数据集的范围是 11-19,因此可以将最大值重新分配为 19。最小值也同理


需要注意的是,裁剪不会从数据集中删除点,它只是重新计算数据中的统计值。


Standard Deviation Normalization,标准差归一化


假设我们的数据有五行 ,他们的ID 为 A、B、C、D 和 E,每行包含 n 个不同的变量(列)。我们在下面的计算中使用记录 E 作为示例。其余行以相同方式进行标准化。


第 i 列中 E 行的 ei 的归一化值计算如下:


http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/1b5a85d8342d7a339d355d8ca6b0d4dc..jpg




http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/c2ee0325ca533f8ea840948a11144dea..jpg

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/f013f29b027fe7d68e3c7951dd101241..jpg


如果E行的所有值都是相同的,那么E的标准差(std(E))等于0,那么E行的所有值都设为0。


哪些算法需要归一化


1、涉及或隐含距离计算的算法,比如K-means、KNN、PCA、SVM等,一般需要进行归一化

2、梯度下降算法,梯度下降的收敛速度取决于:参数的初始位置到local minima的距离,以及学习率η的大小,其实还是距离的计算。

3、采用sigmoid等有饱和区的激活函数,如果输入分布范围很广,参数初始化时没有适配好,很容易直接陷入饱和区,导致梯度消失,所以才会出现各种BN,LN等算法。


哪些算法不需要归一化


与距离计算无关的概率模型不需要,比如Naive Bayes;


与距离计算无关的基于树的模型,比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。但是我们前几篇文章中说到了,使用Z-Score归一化会提高模型的准确率。其实归一化的作用就是由绝对变为了相对,所以可以说归一化对于树型模型不那么重要,是一个可选项或者说可以作为一个超参数在训练时进行选择。


免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!


想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack


0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群