原始数据必须经过特征工程(转换)。何时应进行转换 数据呢?一般来说,您可以在以下任一阶段执行特征工程: 以下两个时间段:
- 在训练模型之前。
- 在训练模型时。
在训练前转换数据
在此方法中,您需要执行两个步骤:
- 编写代码或使用专用工具 转换原始数据。
- 将转换后的数据存储在模型可以提取的某个位置,例如 和磁盘上的文件一样
优势
- 系统仅转换一次原始数据。
- 系统可以分析整个数据集,以确定最佳 转变策略。
缺点
- 您必须在预测时重新创建转换。请注意 训练-应用偏差!
当系统执行动态计算时,训练-应用偏差更危险。 (在线)推理。 在使用动态推理的系统上, 原始数据集通常与提供预测服务的软件不同, 这可能会导致训练-应用偏差。 相比之下,使用静态(离线)推理的系统有时 使用相同的软件。
在训练时转换数据
在此方法中,转换是模型代码的一部分。模型 提取原始数据并对其进行转换。
优势
- 如果更改转换,您仍然可以使用相同的原始数据文件。
- 您可以确保在训练和预测时进行相同的转换。
缺点
- 复杂的转换会增加模型延迟时间。
- 每一批次都会进行转换。
按批次转换数据可能会很复杂。例如,假设您 使用 Z-score 标准化 来转换原始数值数据。Z-score 归一化需要 特征的标准差。 但是,每批转换意味着您只能访问 一批数据,而不是整个数据集。因此,如果批次高度 变体,例如,一个批次中的 -2.5 的 Z 得分不会有相同的含义 为 -2.5。 如需解决此问题,您的系统可以预计算平均值和标准差 然后将它们用作模型中的常量。