数据转换简介

特征工程是确定哪些特征可能对训练模型有用的,然后通过转换日志文件和其他来源中的原始数据来创建特征的过程。本部分将重点介绍何时转换数值和分类数据以及如何转换,以及不同方法的权衡取舍。

数据转换的原因

我们转换特征的主要原因如下:

  1. 强制转换以确保数据兼容性。例如:

    • 将非数字特征转换为数字。您无法对字符串执行矩阵乘法运算,因此我们必须将字符串转换为某种数字表示形式。
    • 将输入大小调整为固定大小。线性模型和信息流前向神经网络具有固定数量的输入节点,因此输入数据必须始终具有相同的大小。例如,图片模型需要将数据集中的图片重塑为固定大小。
  2. 可选质量转换,可能有助于模型表现更好。 例如:

    • 文本功能的词元化或小写大小写。
    • 归一化数值特征(之后大多数模型的效果更好)。
    • 允许线性模型在特征空间中引入非线性关系。

严格来说,质量转换不是必要的,模型在没有这些转换的情况下仍可运行。但使用这些方法可能会使模型提供更好的结果。

在哪里转型?

您可以在磁盘上生成数据时应用转换,也可以在模型中应用。

训练前转换

在此方法中,我们在训练之前执行转换。 此代码与您的机器学习模型分开。

优点

  • 计算仅执行一次。
  • 计算可以考虑整个数据集以确定转换。

缺点

  • 转换需要在预测时重现。注意偏差!
  • 任何转换变更都需要重新生成数据,从而导致迭代速度变慢。

对于涉及在线服务的情况而言,数据倾斜更加危险。在离线传送中,您或许可以重复使用生成训练数据的代码。在在线传送中,创建数据集的代码和处理实时流量的代码几乎必然不同,这很容易导致偏差。

在模型内进行转换

在此方法中,转换是模型代码的一部分。该模型会将未转换的数据作为输入,并在模型中对其进行转换。

优点

  • 轻松迭代。即使更改了转换,仍然可以使用相同的数据文件。
  • 我们保证在训练和预测时相同的转换。

缺点

  • 代价高昂的转换可能会增加模型延迟时间。
  • 转换按批次进行。

每批转换的注意事项有很多。假设您想按特征的平均值对特征进行归一化,也就是说,您需要将特征值更改为平均 0 和标准偏差 1在模型内进行转换时,这种归一化将仅可访问一批数据,而不是完整数据集。您可以按批次内的平均值进行归一化(如果批次有很大的差异,这种做法很危险),或者预计算平均值,然后在模型中将其修复为常量。我们将在下一部分中探讨标准化。

探索、清理和直观呈现您的数据

对数据进行探索和清理,然后再对其进行转换。在收集和构建数据集时,您可能完成了以下部分任务:

  • 查看多行数据。
  • 查看基本统计信息。
  • 修复了缺少数字条目的问题。

频繁直观呈现您的数据。图表可以帮助您找出数字统计信息中难以清楚的异常情况或模式。因此,在开始深入分析之前,您可以通过散点图或直方图以图形方式查看数据。您不仅可以在流水线的开头查看图表,还可以在整个转换中查看。可视化将帮助您持续检查您的假设,并了解任何重大更改的影响。