规范化数据

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

重新缩放数字数据以约束数据集值符合标准范围

类别: 数据转换/缩放和减少

注意

仅适用于机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何在 机器学习 Studio 中使用 Normalize Data 模块 (经典) ,通过规范化转换数据集。

规范化是一种通常用于机器学习数据准备的方法。 规范化旨在将数据集中数值列的值更改为使用通用范围,而不会扭曲值范围内的差异或丢失信息。 一些算法还需要通过规范化正确建立数据模型。

例如,假设输入数据集包含值范围从 0 到 1 的列以及另一个值范围从 10,000 到 100,000 的列。 如果在建模期间尝试将值作为特征合并,数字范围的巨大差异可能会导致问题

“规范化”通过创建新值来保持源数据中的一般分布和比率,同时将值保持在模型中使用的所有数字列所采用的范围内,避免了这些问题

本模块提供若干转换数值数据的选项:

  • 可以将所有值更改为 0-1 范围,也可以将值转换为百分位数而不是绝对值。
  • 可以将规范化应用于单个列或同一数据集中的多个列。
  • 如果需要重复试验,或将相同的规范化步骤应用于其他数据,可以将步骤保存为规范化转换,并将其应用于具有相同架构的其他数据集。

警告

某些算法要求在训练模型之前对数据进行规范化。 其他算法执行自己的数据缩放或规范化。 因此,选择构建预测模型所使用的机器学习算法时,请务必在对训练数据应用规范化之前,查看算法的数据要求。

如何配置规范化数据

使用本模块时一次只能应用一个规范化方法。 因此,同一规范化方法会应用于所选的所有列。 若要使用不同的规范化方法,请使用“规范化数据”的第二个实例

  1. 规范化数据 模块添加到试验中。 可以在“缩放和缩减”类别的“数据转换”下机器学习 Studio (经典) 中找到该模块。

  2. 连接包含所有数值的至少一列的数据集。

  3. 使用列选择器选择要规范化的数值列。 如果不选择单个列,则默认包括输入中的所有数值类型列,并对所有选定列应用同一规范化流程

    如果包括不应规范化的数值列,这可能会导致奇怪的结果! 请务必仔细检查列。

    如果未检测到数值列,请检查列元数据,验证列的数据类型是否是支持的数值类型。

    提示

    若要确保将特定类型的列作为输入提供,请尝试使用选择数据集中的列模块,然后使用规范化数据

  4. 选中时,对常量列使用 0:如果任何数值列包含一个不变值,请选择此选项。 这可确保在规范化操作中不会使用这样的列。

  5. “转换方法 ”下拉列表中,选择要应用于所有选定列的单个数学函数。

    • Zscore:将所有值转换为 z-score。

      使用以下公式转换列中的值:

      normalization using z-scores

      分别针对每个列计算平均偏差和标准偏差。 使用总体标准偏差。

    • MinMax:min-max 规范化器将每个特征线性重缩放为 [0,1] 区间。

      移动每个特征的值以重缩放为 [0,1] 区间,使最小值为 0,然后除以新的最大值(这是初始最大值和初始最小值之间的差异)。

      使用以下公式转换列中的值:

      normalization using the min-max function

    • Logistic:使用以下公式转换列中的值:

      formula for normalization by logistic function

    • LogNormal:此选项将所有值转换为对数范围。

      使用以下公式转换列中的值:

      formula log-normal distribution

      此处,μ 和 σ 为分布的参数,根据数据按经验计算为分别针对每一列的最大似然估计。

    • TanH:所有值转换为双曲正切。

      使用以下公式转换列中的值:

      normalization using the tanh function

  6. 运行试验,或双击 “规范化数据 ”模块,然后选择“ 运行选定”。

结果

“规范化数据”模块会生成两个输出

  • 若要查看已转换的值,右键单击模块,选择“已转换的数据集”,然后单击“可视化”

    默认情况下,值会立即转换。 如果要将转换的值与原始值进行比较,请使用 “添加列” 模块重新组合数据集并排查看列。

  • 若要保存转换以便可以将同一规范化方法应用到另一类似数据集,请右键单击模块,选择“转换函数”,然后单击“另存为转换”

    然后,可以从左侧导航窗格的“转换”组中加载已保存的转换,并使用应用转换将其应用到具有相同架构的数据集

示例

有关如何在机器学习中使用规范化的示例,请参阅 Azure AI 库

  • 信用风险预测:在此示例中,规范化应用于除类列以外的所有数值数据,即信用风险评分。 此示例使用 tanh 转换,它将所有数值特征转换为 0-1 范围内的值。

技术说明

此模块仅支持 How to 节中列出的标准规范化方法,并且不支持矩阵规范化或其他复杂转换。

如果需要创建自定义规范化方法,可以使用 执行 R 脚本执行 Python 脚本 模块来计算和应用转换。

应用规范化的算法

规范化功能,使其使用通用缩放是许多机器学习算法的一般要求。

  • 在线性分类算法中,各实例被视为多维空间中的向量。 由于原始数据的取值范围差别很大,如果不进行规范化,有些目标函数便无法正常工作。 例如,如果其中一个特征的取值范围特别广,则点之间的距离由此特定特征管理。

    因此,数字特征应进行规范化,以便每个特征大约按比例影响最终距离。 这可显著提高速度,并可提供明显的精度优势。

  • 使用 逻辑回归平均感知器 算法时,默认情况下,特征在训练前规范化。

其他阅读材料和资源

如果不确定哪种类型的规范化适合数据,请参阅以下资源:

  • 推荐“我的数据模块:Azure ML团队成员的此自定义模块评估数据集,并建议执行清理和缩放数据的步骤。

  • 功能缩放:维基百科中的本文介绍了用于规范化数值数据的基本方法。

  • 数据挖掘的数据准备 深入介绍了许多数据准备步骤。 有关数据规范化的讨论,请参阅第 7 章。

预期输入

名称 类型 说明
数据集 数据表 输入数据集

模块参数

名称 范围 类型 默认 说明
转换方法 any TransformationMethods ZScore 选择用于缩放的数学法
要转换的列 any ColumnSelection NumericAll 选择应向其应用所选转换的所有列

Outputs

名称 类型 说明
转换后的数据集 数据表 转换后的数据集
转换函数 ITransform 接口 可以应用到其他数据集的转换函数的定义

例外

异常 描述
错误 0001 如果找不到数据集的一个或多个指定列,将出现异常。
错误 0003 如果一个或多个输入为 NULL 或为空,将出现异常。
错误 0017 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。
错误 0020 如果传递给模块的某些数据集的列数过少,将出现异常。
错误 0021 如果传递给模块的某些数据集的行数过少,将出现异常。

有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码

有关 API 异常的列表,请参阅机器学习 REST API 错误代码

另请参阅

缩放和约简