本文档介绍 Feature Transform Engine 如何执行特征工程。Feature Transform Engine 执行特征选择和特征转换。如果启用了特征选择,Feature Transform Engine 会创建一组经过排序的重要特征。如果启用了特征转换,Feature Transform Engine 会处理特征,以确保模型训练和模型服务的输入一致。Feature Transform Engine 可以单独使用,也可以与任何表格训练工作流结合使用。它支持 TensorFlow 框架和非 TensorFlow 框架。
输入
您必须向 Feature Transform Engine 提供以下输入:
- 原始数据(BigQuery 或 CSV 数据集)。
- 数据拆分配置。
- 特征选择配置。
- 特征转换配置。
输出
Feature Transform Engine 会生成以下输出:
dataset_stats
:描述原始数据集的统计信息。例如,dataset_stats
提供数据集中的行数。feature_importance
:特征的重要性分数。如果启用了特征选择,则会生成此输出。materialized_data
:包含训练拆分、评估拆分和测试拆分的数据拆分组的转换后版本。training_schema
:OpenAPI 规范中的训练数据架构,用于描述训练数据的数据类型。instance_schema
:OpenAPI 规范中的实例架构,用于描述预测数据的数据类型。transform_output
:转换的元数据。如果您使用 TensorFlow 进行转换,则元数据包括 TensorFlow 图。
处理步骤
Feature Transform Engine 会执行以下步骤:
- 生成用于训练、评估和测试的数据集拆分。
- 生成描述原始数据集的输入数据集统计信息
dataset_stats
。 - 执行特征选择。
- 使用数据集统计信息处理转换配置,将自动转换参数解析为手动转换参数。
- 将原始特征转换为工程化特征。不同类型特征的转换是不同的。
特征选择
特征选择的主要目的是减少模型中使用的特征数量。缩减的特征集应以更紧凑的方式捕获大部分标签信息。特征选择可以降低模型训练和模型服务的费用,并且不会对模型质量产生明显影响。
如果启用了特征选择,Feature Transform Engine 会为每个特征分配重要性分数。您可以选择输出完整特征集或一部分最重要的特征的重要性分数。
Vertex AI 提供以下特征选择算法:
请注意,没有任何一种特征选择算法适合所有数据集和所有用途。如果可能,请运行所有算法并综合多个结果。
调整互信息 (AMI)
AMI 调整互信息 (MI) 分数以考虑概率。它考虑了这样的事实,即在具有大量集群的两个聚类中 MI 通常更高,无论是否实际上共享了更多信息。
AMI 擅长检测特征和标签的相关性,但对特征冗余不敏感。如果有许多特征(例如超过 2,000 个)并且没有太多特征冗余,则应考虑 AMI。它比此处介绍的其他算法速度更快,但可能会选取冗余特征。
条件互信息最大化 (CMIM)
CMIM 是一种贪心算法,它会根据候选特征的条件互信息,以迭代方式选择特征。在每次迭代中,它会选择最大化与标签的最小互信息(尚未被所选特征捕获)的特征。
CMIM 在处理功能冗余时非常可靠,并且在典型用例中表现很好。
联合互信息最大化 (JMIM)
JMIM 是一种类似于 CMIM 的贪心算法。JMIM 会选择这样的特征:该特征最大化新特征和预先选择的特征与标签的联合互信息,而 CMIM 会更多地考虑冗余。
JMIM 是一种高质量的特征选择算法。
最大相关性最小冗余 (MRMR)
MRMR 是一种以迭代方式运行的贪心算法。它与 CMIM 类似。每次迭代会选择这样的特征:该特征最大化标签相关性,同时最小化上一次迭代中所选特征的成对冗余。
MRMR 是一种高质量的特征选择算法。
后续步骤
执行特征工程后,您可以训练分类模型或回归模型:
- 使用端到端 AutoML 训练模型。
- 使用 TabNet 训练模型。
- 使用 Wide & Deep 训练模型。