预处理数据以使用表格内置算法

本页面大致介绍了 AI Platform Training 如何预处理数据来使用表格内置算法进行训练。此外,还介绍了输入数据的要求和限制。

表格内置算法

接受表格数据(数值数据和分类数据)的内置算法具有一些预处理功能。

如需了解如何针对每种表格内置算法进行预处理的具体情况,请参阅各自相应的指南:

XGBoost 算法的分布式版本不支持自动预处理功能。

设置输入数据的格式

您的输入数据必须是采用 UTF-8 编码的 CSV 文件。

您在准备输入 CSV 文件时须满足以下要求:

  • 移除标题行。标题行包含每列的标签。移除标题行,避免将其作为训练数据的一部分与其余数据实例一起提交。
  • 确保目标列为第一列。目标列包含您尝试预测的值。对于分类算法,目标列中的所有值均为类或类别。对于回归算法,目标列中的所有值均为数值。

预处理的工作原理

自动预处理适用于分类数据和数值数据。预处理例程先分析您的数据,然后再转换数据

分析

首先,AI Platform Training 会逐列分析数据集。对于每一列,AI Platform Training 会自动检测其数据类型、确定应如何处理该列以进行数据转换,并计算列中数据的某些统计信息。训练作业会在 metadata.json 文件中捕获此分析的结果,该文件包含在 Cloud Storage 存储分区内的其他训练工件中。

  • 类型:列可以是数值列,也可以是分类列
  • 处理方式:该算法确定如何处理每一列。列可以被视为常量或行标识符constantsconstants。根据分类值是整数还是字符串,还可以将分类列标记为身份或词汇。具有大量类别的列会使用哈希技术处理方式计算更少、更易于管理的类别
  • 统计信息:统计信息根据列的类型和处理方式计算得出,用于帮助转换每一列中的特征

转换

完成数据集的初始分析后,AI Platform Training 会根据应用于数据集的类型、处理方式和统计信息来转换您的数据。AI Platform Training 会按以下顺序执行转换:

  1. 将训练数据集拆分为验证和测试数据集(如果您指定拆分百分比)。
  2. 移除特征缺少 10% 以上的行。
  3. 填写缺失值。均值用于填写数值列。对于 XGBoost,零用于分类列。

转换示例

超过 10% 的值缺失的行会被删除。在以下示例中,假设该行具有 10 个值。为简单起见,每个示例行都经过精简。

行问题 原始值 转换后的值 说明
没有缺失值的示例行 [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
'fruits' 字符串在独热编码中转换为“1, 0, 0”值。对于基于 TensorFlow 的算法,TensorFlow 图中会发生这种情况。对于 XGBoost,AI Platform Training 会执行这种转换。
缺失值过多 [3, 0.45, ...,
'fruits', __, __]
行已移除 行中超过 10% 的值缺失。
缺少数值 [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • 该列的平均值替换了缺失的数值。在本示例中,平均值是 0.54。
  • 'fruits' 字符串在独热编码中转换为“1, 0, 0”值。对于基于 TensorFlow 的算法,TensorFlow 图中会发生这种情况。对于 XGBoost,AI Platform Training 会执行这种转换。
缺少分类值 [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • 缺失的分类值在独热编码中转换为“0, 0, 0”值。对于基于 TensorFlow 的算法,TensorFlow 图中会发生这种情况。对于 XGBoost,AI Platform Training 会执行这种转换。

转换过程还存在其他差异,具体取决于内置算法所基于的机器学习框架。对于基于 TensorFlow 的内置算法(线性学习器、Wide & Deep),列处理方式直接对应于在 TensorFlow 模型中创建的特征列。AI Platform Training 只为 TensorFlow Estimator 模型分配特征列,然后在 TensorFlow Estimator 模型中执行的预处理操作期间进行数据转换。

否则,与 XGBoost 一样,AI Platform Training 会直接应用列处理方式并执行数据转换。

后续步骤

  • 开始使用其中一种内置算法。