特征工程

本文档介绍 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 是一种高质量的特征选择算法。

后续步骤

执行特征工程后,您可以训练分类模型或回归模型: