数值数据:标准化

在通过统计和可视化技术分析数据后 您应该采用某种方式来转换数据,以帮助您的模型训练更多 。目标 归一化是将 具有相似的规模。例如,请考虑以下两个 功能:

  • 特征 X 的范围介于 154 到 24,917,482 之间。
  • 特征 Y 的范围介于 5 到 22 之间。

这两个特征的范围截然不同。归一化可能会操纵 XY,使其跨越相似的范围,可能是 0 到 1。

标准化具有以下优势:

  • 有助于模型在训练期间更快地收敛。 当不同的特征具有不同的范围时,梯度下降法可以 “弹跳”和缓慢收敛。尽管如此,像下面这样更高级的优化器 阿达格勒Adam 则通过以下方式避免此问题: 有效学习速率随时间的变化而变化。
  • 有助于模型推断出更好的预测。 当不同的特征具有不同的范围时, 模型给出的预测可能就没那么有用了。
  • 有助于在特征值非常高时避免“NaN 陷阱”NaN不是数字。当模型中的值超过 浮点精度限制,系统会改为将值设置为 NaN 代表数字。当模型中的一个数字变为 NaN 时, 模型最终也会成为 NaN。
  • 帮助模型为每个特征学习合适的权重。 如果不进行特征缩放,则模型会过于关注 特征范围较大,但对具有不同特征的特征 缩小范围。

我们建议对数字特征进行归一化处理,以明确涵盖 不同的范围(例如年龄和收入)。 我们还建议对涵盖广泛范围、 例如 city population.

请考虑以下两个功能:

  • A”特征的最小值为 -0.5,最大值为 +0.5。
  • B”地图项的最小值为 -5.0,最大值为 +5.0。

A”特征和“B”特征的跨度相对较小。但是,特征B的 span 是特征 A span 的 10 倍。因此:

  • 在训练开始时,模型假定特征 A 为 10 倍 更“重要”与特征B相比。
  • 训练时间会超出预期。
  • 生成的模型可能不够理想。

因未标准化而导致的总体损害相对较小;不过, 我们仍然建议将特征 A 和特征 B 归一化为相同的比例, 可能是-1.0 到+1.0

现在,考虑范围差异较大的两个特征:

  • 特征 `C 的最小值为 -1,最大值为 +1。
  • D”地图项的最小值为 +5000,最大值为 +1,000,000,000。

如果您不对特征 C 和特征 D 进行归一化,模型很可能会 会不太理想。此外,训练需要更长的时间来 甚至无法完全收敛!

本部分介绍了三种常用的标准化方法:

  • 线性缩放
  • Z 得分缩放
  • 对数扩缩

此外,本部分还介绍了 剪辑。虽然这不是真正的 裁剪技术会将不规则的数值特征适应 可以生成更好的模型。

线性缩放

线性缩放(较为常见) 缩写为缩放)表示将浮点值从 用户的自然范围进入一个标准范围(通常为 0 到 1 之间) -1 至 +1。

当满足以下所有条件时,线性扩缩是一个不错的选择:

  • 数据的下限和上限不会随时间变化。
  • 特征包含的离群值很少或根本没有离群值, 极端。
  • 特征在其范围内大致均匀分布。 也就是说,对于大多数年龄段,直方图显示的条形大致是均匀的。

假设人类 age 是一个特征。线性缩放是很好的归一化 使用 age 技术,原因如下:

  • 近似下限和上限介于 0 到 100 之间。
  • age 包含相对较小比例的离群值。只有大约 0.3% 人口超过 100 人
  • 尽管某些年龄的代表性要好于其他年龄, 数据集应包含足够所有年龄段的样本。

检查您的理解情况

假设您的模型有一个名为 net_worth 的特征, 价值不尽相同线性缩放是很好的归一化吗? net_worth的技巧?请说明原因。

Z 得分缩放

Z-score 是一个值与平均值之间的标准差数量。 例如,一个值大于平均值 2 个标准差 Z-score 为 +2.0。一个值小于 1.5 个标准差 平均值的 Z 分数为 -1.5。

使用 Z 分数缩放表示特征意味着存储该特征的 特征向量中的 Z-score。例如,下图显示了 直方图:

  • 左侧为经典正态分布。
  • 右侧则是采用 Z 分数缩放后的同一分布。
图 4. 两个直方图:均显示正态分布,
           相同分布。第一个直方图,其中包含原始
           平均值为 200,标准差为 30。第二个
           直方图,其中包含第一个
           平均数为 0,标准差为 1。
图 4. 正常情况下的原始数据(左)与 Z 分数(右) 分发。

Z-score 调整也是一个不错的选择, 下图中只呈现了一个模糊的正态分布。

图 5. 两个形状相同的直方图,每个直方图都显示一条陡峭
            然后快速下降
            逐渐衰减。一个直方图展示了
            原始数据的分布情况;另一个直方图展示了
            通过 Z 分数缩放时,原始数据的分布情况。
            两个直方图 X 轴上的值大相径庭。
            原始数据直方图涵盖域 0 到 29,000,而
            Z-score 比例直方图的范围是 -1 到 +4.8 左右
图 5. 原始数据(左)与 Z 分数缩放(右) 非经典正态分布。

如果数据符合正态分布或 分布方式与正态分布相似。

请注意,某些分布在大部分地区内可能是正常的。 但仍包含极端离群值。例如,几乎所有的 net_worth 特征中的点可能恰好符合 3 个标准差, 但这个特征的几个例子可能是数百个标准差 偏离平均值。在这类情况下,您可以结合使用 Z 评分调整与 另一种形式的标准化(通常是裁剪)来处理这种情况。

练习:检查您的理解情况

假设您的模型在名为 height 的特征上进行训练,该特征包含 我们有一千万名女性的身影Z-score 调整是否是有效的标准化 height的技巧?请说明原因。

对数缩放

对数缩放计算原始值的对数。从理论上讲, 对数可以是任意基数;在实践中,对数缩放通常计算 自然对数 (ln)。

当数据符合幂律分布时,对数缩放非常有用。 通俗地说,幂定律的分布情况如下所示:

  • X 的低值具有非常高的值 Y
  • 随着 X 的值增加,Y 的值会快速下降。 因此,X 的高值具有非常低的 Y 值。

电影评分就是幂定律分布的一个很好的例子。在以下 图中,请注意:

  • 有些电影有很多用户评分。(X 的低值表示高 Y 的值。)
  • 大多数电影的用户评分都很低。(X 的高值表示低 Y 的值。)

对数缩放会改变分布情况,这有助于训练出 做出更好的预测。

图 6. 比较原始数据与原始数据对数的两个图表。
            原始数据图的头部显示了许多用户评分,
            存在长尾差异。对数图具有更均匀的分布。
图 6. 将原始分布与其对数进行比较。

再举一个例子,图书销售符合幂法分布原则,原因如下:

  • 大多数出版的图书只销售少量副本,也许有一两百本。
  • 有些图书只卖出适量,甚至有数千本。
  • 只有少数畅销书能卖出一百万以上。

假设您正在训练一个线性模型来查找 例如图书封面和图书销售基于原始值训练的线性模型将 在销售数百万册图书 上查找有关图书封面的信息 它比只销售 100 本的封面上效果好 10,000。 不过,如果对全部销售数据进行对数的调整,这项任务的可行性会大大降低。 例如,对数 100 为:

  ~4.6 = ln(100)

而 1,000,000 的对数为:

  ~13.8 = ln(1,000,000)

因此,对数 1,000,000 只比对数 100 大三倍左右。 您或许可以想象,一本畅销书的封面大约是 3 次 (在某种程度上)比小小的书封面更能吸引眼球。

截短

裁剪是一种技术,用于 最大限度地减少极端离群值的影响。简而言之,剪辑通常采用 (将离群值降至)特定的最大值。裁剪是 但又很有效果

例如,假设某个数据集包含名为 roomsPerPerson 的特征, 它表示会议室的数量 按人数)。下面的曲线图显示 99% 的特征值符合正态分布(大致上 1.8 和 0.7 的标准差)。不过,此功能包含 几个离群值,其中一些比较极端:

图 7. RoomPerPerson 图,其中几乎所有的值
            聚类在 0 到 4 之间,但有一个非常长的长尾
            一直延伸到每人 17 个房间
图 7. 基本上很正常,但并非完全正常。

如何最大限度地降低这些极端离群值的影响?嗯, 直方图不是偶分布、正态分布或幂定律 分发。如果您简单地限制裁剪 roomsPerPerson 是否设为任意值(比如 4.0)?

RoomPerPerson 曲线图,其中所有值都介于 0 到 0 之间
            4.0。曲线图是钟形的,但在 4.0 处有一个异常小山
图 8. 将特征值裁剪到 4.0。

将特征值限制在 4.0 并不意味着模型会忽略所有 值大于 4.0。而是表示所有 变成了 4.0这就解释了 4.0 点的奇特小山。尽管 现在,经过缩放的特征集比原始数据更有用。

等一下!您真的能将所有离群值降低到任意上限吗? 阈值?在训练模型时,答案是肯定的。

您还可以在应用其他形式的标准化之后裁剪值。 例如,假设您使用 Z 分数缩放,但一些离群值 绝对值远大于 3。在这种情况下,您可以:

  • 将大于 3 的 Z 得分裁剪为正好 3。
  • 将 Z-score 控制在 -3 以内,使其正好是 -3。

裁剪可防止模型在不重要的数据上建立过度索引。不过, 有些离群值实际上很重要,因此请谨慎裁剪值。

归一化方法摘要

归一化方法公式适用情形
线性缩放 $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ 当特征在 固定的范围
Z 得分缩放 $$ x' = \frac{x - μ}{σ}$$ 当特征分布不包含极端离群值时。
对数缩放 $$ x' = log(x)$$ 当特征符合幂律时。
截短 如果 $x >max$,设置 $x'= max$
如果 $x <最小值,设置 $x'= 最低金额
当特征包含极端离群值时。

练习:测试您的知识掌握情况

哪种方法最适合使用 分布情况呢?

显示值介于 0 到 1 之间的数据集合的直方图
          20 万。所选范围内的数据点数量逐渐增加
          从 0 到 100,000,然后 从 100,000 逐渐减少到
          20 万。

Z 得分缩放
数据点通常符合正态分布,因此 Z-score 会强制使它们落在 -3 到 +3 的范围内。
线性缩放
查看本页中关于标准化技术的讨论, 然后重试。
对数缩放
查看本页中关于标准化技术的讨论, 然后重试。
截短
查看本页中关于标准化技术的讨论, 然后重试。

假设您正在开发一个模型来预测数据中心 根据数据中心内部测量的温度计算得出的生产力。 数据集中的几乎所有 temperature 值都落在 介于 15 到 30 摄氏度之间,但以下情况例外:

  • 每年一两次,在极热的天气, 31 和 45 是用 temperature 录制的。
  • temperature 中的每 1,000 个点设置为 1,000 而不是实际温度

哪种归一化方法适合 temperature?

将离群值裁剪到 31 到 45 之间,但使用 值为 1,000

1,000 值是错误值,应将其删除,而不是 已截短。

31 到 45 之间的值是合理的数据点。 对于这些值,裁剪可能是一个好主意,假设 数据集在此温度范围内没有足够的示例, 训练模型以做出良好的预测。然而,在推理过程中, 因此,裁剪模型对 如 45 度的温度,如 35 度的温度。

裁剪所有离群值
查看本页中关于标准化技术的讨论, 然后重试。
删除所有离群值
查看本页中关于标准化技术的讨论, 然后重试。
删除介于 31 到 45 之间的离群值, 值为 1,000 的离群值。
查看本页中关于标准化技术的讨论, 然后重试。