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