本页面大致介绍了 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 会按以下顺序执行转换:
- 将训练数据集拆分为验证和测试数据集(如果您指定拆分百分比)。
- 移除特征缺少 10% 以上的行。
- 填写缺失值。均值用于填写数值列。对于 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] |
|
缺少分类值 | [3, 0.45, ..., __, 0, 1] |
[3, 0.45, ..., 0, 0, 0, 0, 1] |
|
转换过程还存在其他差异,具体取决于内置算法所基于的机器学习框架。对于基于 TensorFlow 的内置算法(线性学习器、Wide & Deep),列处理方式直接对应于在 TensorFlow 模型中创建的特征列。AI Platform Training 只为 TensorFlow Estimator 模型分配特征列,然后在 TensorFlow Estimator 模型中执行的预处理操作期间进行数据转换。
否则,与 XGBoost 一样,AI Platform Training 会直接应用列处理方式并执行数据转换。
后续步骤
- 开始使用其中一种内置算法。